我计划在 android 中创建一个 SDK,这意味着将我的类文件和资源(布局)共享给另一个需要它们的应用程序。如果我将我的应用程序导出为 JAR,它不包括资源文件和 R.class。我知道目前 Android 不支持通过 JAR 打包资源文件,但是我在网上搜索并找到了一种解决方案,如果使用源代码编译我们的资源文件意味着我们可以在其他应用程序中访问该资源。
因此,出于这个原因,我通过以下方式做到了:
将所有 res 文件夹内容复制到我的源文件夹中
- src ->com.mypackege -> res--->这里我放了我的 res 文件夹
最后我的 src 文件夹看起来像
源代码
com.mypackage
>myfile.java drawable-hdpi drawable-ldpi drawable-mdpi drawable-xhdpi com.mypackage.drawable com.mypackage.layout com.mypackage.menu com.mypackage.values
我构建了我的项目,我在我的 bin 中获得了所有类文件,包括资源和 r.class
然后我通过 jar -cvf mysample.jar com/mypackage/* 手动创建 jar
最后的 jar 在 mypackage 中包含我项目的所有类和资源。
然后我添加mysample.jar
到另一个应用程序中说testapp
,这里我将 JAR 放在资产文件夹中(因为布局)并添加到构建路径。而且我还配置了构建路径
在这个应用程序中,我调用了myfile.class
从mysample.jar
该 JAR 加载布局所需的方法。
问题在这里它看不到 JAR 文件下的资源它只看到当前项目 res 文件夹中的资源,虽然NULL pointer Exception
但它从 JAR 文件中调用 R.java。广告我还尝试将 xmlns:custom="http://schemas.android.com/apk/res-auto" 放入我的清单文件中,但它也不起作用。我希望我能准确地结束这个问题,它可能是一个资源映射问题。你有什么想法来解决这个问题吗?