【发布时间】:2013-06-08 11:12:00
【问题描述】:
我必须创建一个库,我将在 jar 文件中导出到客户端。有没有办法创建一个包含资源的 jar?
Google adMob 有这样一个 jar,其中包含 R$layout.class 等资源文件。 This page 描述了一些方法来做到这一点,但我无法准确理解我应该如何使用上述方法将库项目导入应用程序。
【问题讨论】:
标签: android jar android-library
我必须创建一个库,我将在 jar 文件中导出到客户端。有没有办法创建一个包含资源的 jar?
Google adMob 有这样一个 jar,其中包含 R$layout.class 等资源文件。 This page 描述了一些方法来做到这一点,但我无法准确理解我应该如何使用上述方法将库项目导入应用程序。
【问题讨论】:
标签: android jar android-library
这是你能得到的最接近的:
第 1 步:创建一个常规的 Android 库项目,并让它工作。
第 2 步:将该 Android 库项目复制到另一个目录中。
第 3 步:从原始 Android 库项目中编译的 Java 类创建一个 JAR,并将该 JAR 放入您在第 2 步中创建的副本的libs/ 目录中。你应该可以在这个 JAR 上手动运行 ProGuard,虽然我还没有尝试过。
第 4 步:删除复制的库项目的 src/ 目录中的所有内容,留下并清空 src/ 目录。
第 5 步:压缩或以其他方式分发复制的 Android 库项目。
这将为您提供一个类似于 Play Services 的 Android 库项目,其中资源可用,但源代码不可用。
更新:现在更好的方法是将您的库项目打包为 AAR,这是 Android 从编译代码和所需资源创建可重用工件的本机方式。目前(2014 年 7 月),Gradle for Android、Android Studio 和 android-maven-plugin 可以创建和使用 AAR。
【讨论】:
这行得通!
这适用于所有资源。谢谢大家。为你的回应
【讨论】:
按照以下步骤获取库的可分发 jar(已针对没有外部依赖项的库项目进行验证):
Ctr+Shift+O(在 Windwows/Linux 上)或 Cmd+Shift+O(在 Mac 上)以解决添加的库中的任何导入依赖项。如果遇到任何问题,请发表评论。
【讨论】:
res 和 assets 文件夹。我错过了什么吗?
res 是可能的,即使引用也不允许我们使用assets,请参阅developer.android.com/tools/projects/index.html#LibraryProjects :“应用程序使用的任何资产资源都必须存储在assets/ 应用程序项目本身的目录”。
src 目录。此外,图书馆项目还为您提供res。更多是不可能的。
您不能将资源文件打包到 jar 中。您可以将项目导出为库项目。
您将不引用 android 中资源的实用程序类(即纯 java 类)导出为 jar 文件。
查看下面的链接
http://developer.android.com/tools/projects/index.html
使您的项目成为库项目
右键单击您的项目。转到属性。选择安卓。确保选中 Is Library。
在你的android项目中引用库项目
右键单击您的项目。转到属性。选择安卓。单击添加。浏览和库项目。
引用自文档
库项目与标准 Android 应用程序项目的不同之处在于,您不能将其直接编译为自己的 .apk 并在 Android 设备上运行。同样,您不能将库项目导出到自包含的 JAR 文件,就像对真正的库所做的那样。相反,您必须通过在依赖应用程序中引用库并构建该应用程序来间接编译库。
【讨论】:
使用 adt 22.2.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>
【讨论】:
根据最新的 Android Studio v1.2,它就像吃蛋糕一样简单。 已经在this link上用截图回答了完整的解决方案
【讨论】:
使用 Eclipse ADT v22.6.2,您可以通过单击 File->Export->Java->Jar File 导出 jar,选择要保存的目录和目标。
【讨论】: