Android 构建库项目

Android 构建库项目,android,jar,android-library,Android,Jar,Android Library,全部。 我已经创建了一个android库项目,当我从主项目中引用它时,它可以完美地工作。但是当我单独构建库项目时,它不包含R.java和资源。有没有办法用资源和R.java构建一个库项目?现在不可能了 现在,我们可以通过以下步骤创建仅二进制库项目: 创建一个Android库项目,使用您的源代码等—— 这是您的主项目,您将从中创建 图书馆发行计划 编译Java源代码(例如ant Compile)并将其转换为JAR文件 创建一个分发Android库项目,使用相同的 资源作为主库项目,但没有源代码 将

全部。 我已经创建了一个android库项目,当我从主项目中引用它时,它可以完美地工作。但是当我单独构建库项目时,它不包含R.java和资源。有没有办法用资源和R.java构建一个库项目?

现在不可能了

现在,我们可以通过以下步骤创建仅二进制库项目:

  • 创建一个Android库项目,使用您的源代码等—— 这是您的主项目,您将从中创建 图书馆发行计划
  • 编译Java源代码(例如ant Compile)并将其转换为JAR文件
  • 创建一个分发Android库项目,使用相同的 资源作为主库项目,但没有源代码
  • 将JAR文件放入分发Android库项目的libs/ 目录 由此产生的分发版Android库项目将拥有所有功能 主项目将需要,只是没有源代码
  • 此解决方案中存在一些限制:

  • 我们仍然需要运送资源
  • 我们必须重写代码以避免使用R.值,因为它们 这将是错误的。我们必须使用 getResources().getIdentifier()和/或反射
    我使用Eclipse,从不单独手动构建Android库项目,但我认为官方开发指南中说明的开发注意事项应该回答您的问题:

    每个库项目都创建自己的R类

    生成依赖应用程序项目时,将编译库项目并将其与应用程序项目合并。每个库都有自己的R类,根据库的包名命名。从主项目和库项目生成的R类在所有需要的包中创建,包括主项目的包和库的包

    更新并引用官方发展指南的另一条注释:

    但是,库项目不同于标准的Android应用程序项目,因为您无法将其直接编译为自己的.apk并在Android设备上运行。类似地,您不能将库项目导出到一个自包含的JAR文件中,就像对真正的库所做的那样。相反,您必须通过引用依赖应用程序中的库并构建该应用程序来间接编译库


    如何单独构建库项目?我使用NetBeans IDE进行开发。右键单击project并选择Build。构建的结果与在没有r文件的库项目的bin目录中构建主项目-jar文件的结果相同。但R文件是在主项目中创建的,而不是在库的jar中。而且资源并没有打包到这个jar中,除了宿主项目之外,库jar文件实际上毫无意义。Android库项目在运行时不作为jar文件引用,而是在构建主机项目时将其源代码(java、res、AndroidManifest.xml等)编译并合并到主机项目中(通过这样做,Android SDK可以仅将使用过的部分过滤到最终apk中,从而减少apk文件大小并节省内存空间),在像Eclipse这样的IDE中,编译类的R.java在构建主机项目时自动生成。@RomanBlack,Android开发团队目前正在修改Android库项目设计,并承诺支持在下一版本中将库项目导出为jar文件,请查看更多详细信息。是的,我知道。但我必须用封闭的源代码作为jar文件创建android库。创建包含R文件和资源的库并共享它是不可能的。现在我找到了一种共享已编译源代码的方法,但我的资源是开源的。