如何为Android Library Project创建jar

时间:2013-06-12 11:02:12

标签: android jar android-library

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

Google adMob有这样一个jar,其中包含资源文件,如R $ layout.class。 This page描述了一些方法,但我无法准确理解如何使用上述方法将库项目导入应用程序。

8 个答案:

答案 0 :(得分:80)

这是你最接近的:

步骤1:创建一个常规的Android库项目,并使其正常工作。

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

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

步骤4:删除复制的库项目的src/目录中的所有内容,留下并清空src/目录。

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

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

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

答案 1 :(得分:21)

这有效!

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

答案 2 :(得分:13)

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

  1. 创建您的图书馆项目。打扫。您将在bin文件夹中获得libraryProjectName.jar文件。 (确保库项目中“库” 已选中
  2. 将.jar文件复制到目标应用程序
  3. libs 文件夹中
  4. 刷新工作区并按Ctr+Shift+O(在Windwows / Linux上)或Cmd+Shift+O(在Mac上)以解决添加的库中的所有导入依赖项。
  5. 在遇到任何问题时进行评论。

答案 3 :(得分:3)

使用adt 22.2.1进行测试

  1. 创建您的图书馆项目
  2. 创建空项目
  3. 将库项目添加到空项目
  4. 构建项目
  5. 在/ gen文件夹中,您将找到您的库项目的类,这将包含您的lib项目资源。
  6. 导出JAR(仅从/ gen文件夹中选择此类...)
  7. 从您的lib项目中导出JAR
  8. 将导出的文件重命名为zip并合并内容
  9. 将最终文件重命名为JAR并将其添加到项目中。

答案 4 :(得分:2)

您无法将资源文件打包到jar中。您可以将项目导出为库项目。

您导出的实用程序类不引用android中的资源,即纯Java类作为jar文件。

检查以下链接

http://developer.android.com/tools/projects/index.html

使您的项目成为图书馆项目

右键单击您的项目。转到属性。选择Android。确保选中Is Library。

在你的android项目中引用库项目

右键单击您的项目。转到属性。选择Android。单击添加。浏览和图书馆项目。

从文档引用

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

答案 5 :(得分:1)

这是一个使用ant的简单方法,在Volley源代码中找到了它。将以下代码添加到custom_rules.xml,然后使用ant jar

进行构建
<?xml version="1.0" encoding="UTF-8"?>
<project name="volley-rules" default="help">

  <!-- A rule to generate the JAR for inclusion in an Android
       application. Output file will be bin/volley.jar -->
  <target name="jar" depends="-compile">
    <jar destfile="bin/volley.jar"
         basedir="bin/classes" />
  </target>
</project>

答案 6 :(得分:1)

根据最新的Android Studio v1.2,它就像蛋糕一样简单。 已经通过this link

上的屏幕截图回答了完整的解决方案

答案 7 :(得分:0)

使用Eclipse ADT v22.6.2,您可以通过单击File-&gt; Export-&gt; Java-&gt; Jar File导出jar,选择目录和目标保存位置。