【问题标题】:Android:add resource file in JARAndroid:在 JAR 中添加资源文件
【发布时间】:2013-03-11 08:09:11
【问题描述】:

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

因此,我采用以下方式进行操作:

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

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

  4. 最终的 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


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 2018-03-26
    • 2016-02-18
    • 2013-09-03
    • 2011-07-24
    • 2013-05-14
    相关资源
    最近更新 更多