3

我计划在 android 中创建一个 SDK,这意味着将我的类文件和资源(布局)共享给另一个需要它们的应用程序。如果我将我的应用程序导出为 JAR,它不包括资源文件和 R.class。我知道目前 Android 不支持通过 JAR 打包资源文件,但是我在网上搜索并找到了一种解决方案,如果使用源代码编译我们的资源文件意味着我们可以在其他应用程序中访问该资源。

因此,出于这个原因,我通过以下方式做到了:

  1. 将所有 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
      
  2. 我构建了我的项目,我在我的 bin 中获得了所有类文件,包括资源和 r.class

  3. 然后我通过 jar -cvf mysample.jar com/mypackage/* 手动创建 jar

  4. 最后的 jar 在 mypackage 中包含我项目的所有类和资源。

然后我添加mysample.jar到另一个应用程序中说testapp,这里我将 JAR 放在资产文件夹中(因为布局)并添加到构建路径。而且我还配置了构建路径

在这个应用程序中,我调用了myfile.classmysample.jar该 JAR 加载布局所需的方法。

问题在这里它看不到 JAR 文件下的资源它只看到当前项目 res 文件夹中的资源,虽然NULL pointer Exception

但它从 JAR 文件中调用 R.java。广告我还尝试将 xmlns:custom="http://schemas.android.com/apk/res-auto" 放入我的清单文件中,但它也不起作用。我希望我能准确地结束这个问题,它可能是一个资源映射问题。你有什么想法来解决这个问题吗?

4

1 回答 1

2

您不能将资源存储在 jar 中。这是可能的,但它很棘手,所以现在 Android 只提供 Android 库。否则,您可以单独使用已编译的源代码和资源(通过向您的库提供资源 ID)

于 2013-03-11T08:30:57.287 回答