我必须创建一个库,我将在 jar 文件中导出到客户端。有什么方法可以创建一个包含资源的 jar 吗?
Google adMob 有这样一个 jar,其中包含 R$layout.class 等资源文件。 此页面描述了一些方法,但我无法准确理解我应该如何使用上述方法将库项目导入应用程序。
我必须创建一个库,我将在 jar 文件中导出到客户端。有什么方法可以创建一个包含资源的 jar 吗?
Google adMob 有这样一个 jar,其中包含 R$layout.class 等资源文件。 此页面描述了一些方法,但我无法准确理解我应该如何使用上述方法将库项目导入应用程序。
这是您可以获得的最接近的:
第 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。
这行得通!
这将适用于所有资源。谢谢大家。为了你的回应
按照以下步骤获取库的可分发 jar(已针对没有外部依赖项的库项目进行了验证):
Ctr+Shift+O
(在 Windwows/Linux 上)或Cmd+Shift+O
(在 Mac 上)从添加的库中解析任何导入依赖项。如果遇到任何问题,请发表评论。
您不能将资源文件打包到 jar 中。您可以将项目导出为库项目。
您将不引用 android 中资源的实用程序类(即纯 java 类)导出为 jar 文件。
检查下面的链接
http://developer.android.com/tools/projects/index.html
使您的项目成为图书馆项目
右键单击您的项目。转到属性。选择安卓。确保选中是库。
在您的 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,它就像吃蛋糕一样简单。已经通过此链接上的屏幕截图回答了完整的解决方案
使用 Eclipse ADT v22.6.2,您可以通过单击 File->Export->Java->Jar File 导出 jar,选择要保存的目录和目标。