我必须创建一个库,然后以jar文件将其导出到客户端。有什么方法可以创建一个带有资源的jar?
Google adMob有一个jar,其中包含资源文件,例如R $ layout.class。 本页描述了执行此操作的方法,但是我无法确切了解如何使用上述方法将库项目导入应用程序。
Answers:
这是您可以获得的最接近的:
步骤#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月),适用于Android的Gradle,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:“应用程序使用的任何资产资源都必须存储在资产/应用程序项目本身的目录”。
src
目录。图书馆项目还可以帮助您res
。更多是不可能的。
您不能将资源文件打包到jar中。您可以将项目导出为库项目。
您将不引用android中资源的实用程序类(即纯Java类)导出为jar文件。
检查下面的链接
http://developer.android.com/tools/projects/index.html
使您的项目成为图书馆项目
右键单击您的项目。转到属性。选择Android。确保选中了库。
在您的android项目中引用库项目
右键单击您的项目。转到属性。选择Android。单击添加。浏览和图书馆项目。
引用文档
库项目与标准Android应用程序项目的不同之处在于,您无法将其直接编译为自己的.apk并在Android设备上运行。同样,您不能像真正的库那样将库项目导出到独立的JAR文件中。相反,必须通过在从属应用程序中引用该库并构建该应用程序来间接编译该库。
经过adt 22.2.1测试
在Volley源代码中找到了使用ant的简单方法。将以下代码添加到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>
使用Eclipse ADT v22.6.2,您可以通过单击File-> Export-> Java-> Jar File导出jar,选择目录和保存位置。