如何为Android Library Project创建jar

Aay*_*ana 74 android jar android-library

我必须创建一个库,我将在jar文件中导出到客户端.有没有办法用它中的资源创建一个jar?

谷歌adMob有这样一个jar,其中包括资源文件,如R $ layout.class. 这个页面描述了一些方法,但是我无法准确理解我应该如何使用上面的方法将库项目导入应用程序.

Com*_*are 82

这是你可以得到的最接近的:

步骤1:创建一个常规的Android库项目,并让它工作.

步骤2:将该Android库项目复制到另一个目录中.

步骤3:从原始Android库项目的已编译Java类创建JAR,并将该JAR放在libs/您在步骤#2中创建的副本的目录中.您应该可以手动在此JAR上运行ProGuard,但我还没有尝试过.

步骤#4:删除src/复制的库项目目录中的所有内容,留下后面的空src/目录.

步骤#5:压缩或以其他方式分发复制的Android库项目.

这将为您提供一个Android库项目,如Play服务项目,资源可用,但源代码不是.

更新:现在更好的方法是将您的库项目打包为AAR,这是Android从编译代码和所需资源创建可重用工件的本机方式.目前(2014年7月),Gradle for Android,Android Studio,以及android-maven-plugin可以创建和使用AAR.

  • 库项目与标准Android应用程序项目的不同之处在于**您无法将其直接编译为自己的.apk并在Android设备上运行**.同样,您无法将库项目导出到自包含的JAR文件,就像对真正的库一样.相反,您必须通过引用依赖应用程序中的库并构建该应用程序来间接编译库.来自doc的引用支持我的答案 (5认同)

Aay*_*ana 22

这有效!

  1. 通过取消选择IsLibrary标志,使您的库项目成为正常项目.
  2. 将您的项目作为Android应用程序执行.(它不会显示任何错误)
  3. 您将在bin文件夹中找到.jar文件以及.apk.
  4. 给你想要使用你的图书馆的.jar.
  5. 告诉他们只需将外部jar导入构建路径.

这将适用于所有资源.感谢大家.为你的回应

  • 这不适用于资源!那个jar,甚至没有res库,你可能忽略了使用库的项目属性! (5认同)
  • 如果您想使用资源,请检查以下内容:http://stackoverflow.com/a/17064024/1779907。如果您的图书馆没有任何资源,我在答案中解释的方法将起作用。如果您也想保护资源,请用Java对其进行硬编码(例如我使用base64编码将图像直接保存在Java接口中),然后您可以使用答案中说明的方法(如果资源较少,则效果更好) 。 (2认同)

Aks*_*hal 14

按照以下步骤获取库的可分发jar(验证库项目没有外部依赖性):

  1. 创建您的库项目.打扫.您将在bin文件夹中获得libraryProjectName.jar文件.(确保"是图书馆"选择在库项目.
  2. 将.jar文件复制到目标应用程序libs文件夹中
  3. 刷新工作区并按Ctr+Shift+O(在Windwows/Linux上)或Cmd+Shift+O(在Mac上)以解决添加的库中的任何导入依赖项.

面对任何问题时的评论.

  • 这是迄今为止从库项目创建JAR的最简单方法,但是......它不包含`res`和`assets`文件夹.我错过了什么吗? (6认同)