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