75

我必须创建一个库,我将在 jar 文件中导出到客户端。有什么方法可以创建一个包含资源的 jar 吗?

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

4

8 回答 8

81

这是您可以获得的最接近的:

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

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

第 3 步:从原始 Android 库项目中编译的 Java 类创建一个 JAR,并将该 JAR 放在libs/您在第 2 步中创建的副本的目录中。您应该能够在这个 JAR 上手动运行 ProGuard,尽管我没有尝试过。

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

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

这将为您提供一个类似于 Play Services 的 Android 库项目,其中资源可用,但源代码不可用。

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

于 2013-06-12T11:13:28.407 回答
22

这行得通!

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

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

于 2013-06-13T19:27:50.717 回答
14

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

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

如果遇到任何问题,请发表评论。

于 2013-10-17T11:08:19.410 回答
3

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

您将不引用 android 中资源的实用程序类(即纯 java 类)导出为 jar 文件。

检查下面的链接

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

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

右键单击您的项目。转到属性。选择安卓。确保选中是库。

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

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

从文档中引用

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

于 2013-06-12T11:03:44.117 回答
3

使用 adt 22.2.1 测试

  1. 创建你的图书馆项目
  2. 创建空项目
  3. 将库项目添加到您的空项目
  4. 构建项目
  5. 在 /gen 文件夹中,您将找到库项目的类,这将包含您的库项目资源。
  6. 导出 JAR(仅从 /gen 文件夹中选择此类...)
  7. 从您的 lib 项目中导出 JAR
  8. 将导出的文件重命名为 zip 并合并内容
  9. 将最终文件重命名为 JAR 并将其添加到项目中。
于 2013-11-13T16:58:12.423 回答
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>
于 2014-07-04T20:10:13.363 回答
1

根据最新的 Android Studio v1.2,它就像吃蛋糕一样简单。已经通过此链接上的屏幕截图回答了完整的解决方案

于 2015-03-18T19:13:44.503 回答
0

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

于 2014-07-04T14:18:50.633 回答