2013-03-11 138 views
2

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

因此,对于这个原因,我做到了以下列方式:

  1. 复制所有文件夹水库到内容我的源文件夹

    • SRC - > com.mypackege - >水库 - >这里我把我的res文件夹
    • 最后我的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 
      
  2. 和我建立我的项目,我把所有的类文件包括在我的仓资源和 r.class

  3. 那么我手动创建jar jar -cvf mysample.jar com/mypackage/*

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

然后我添加mysample.jar到另一个应用程序说testapp,在这里我把资产文件夹中的JAR(因版面的),并添加到构建路径。另外我还配置了构建路径

在此应用程序中,我调用mysample.jarmyfile.class,这是从该JAR加载布局所需的。

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

但它从JAR文件调用R.java。广告还试图把xmlns:custom =“http://schemas.android.com/apk/res-auto”放在我的清单文件中,它也不起作用。 我希望我完全来关闭这个问题,它可能是一个资源映射问题。 你有什么想法解决这个问题吗?

回答

1

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

+0

我该如何通过android库函数将我的资源共享给另一个应用程序 – 2013-03-11 12:05:30

+0

@ Mr.Cool http://stackoverflow.com/questions/7973822/how-to-convert-an-android-library-project-to-an-external-jar看看这里 – Taras 2013-03-11 12:28:13