我计划在android中创建一个SDK,这意味着将我的类文件和资源(布局)共享给另一个需要它们的应用程序。如果我将我的应用程序导出为JAR,则它不包含资源文件和R.class。我知道目前Android不支持通过JAR打包资源文件,但我搜索了网络并找到了一个解决方案,如果使用源代码编译我们的资源文件意味着我们可以访问其他应用程序中的资源。
因此我以下列方式做到了:
将所有资源文件夹内容复制到我的源文件夹
最后我的src文件夹看起来像
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
然后我通过jar -cvf mysample.jar com / mypackage / *
最后一个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”放入我的清单文件中,它也无效。 我希望我能完全解决这个问题,这可能是资源映射问题。 你有什么想法解决这个问题吗?
答案 0 :(得分:1)
您无法在jar中存储资源。这是可能的,但它很棘手,所以现在Android只提供Android库。否则,您可以单独使用已编译的源代码和资源(通过向您的资源库提供资源ID)