我正在创建一个 Android 库,它有一个assets
包含图像的文件夹。当我在另一个项目中使用它时,资产不会被复制。
其他人有这个问题吗?
基于 Gradle的全新 Android 构建系统支持库项目中的资产文件夹!
使用基于 ANT 的构建仍然不可能:
图书馆项目不能包含原始资产。(见文档)
但你可以
可以通过小修复将资产放入生成的库 jar 中:
将“ custom_rules.xml ”放入您的库项目主页(靠近 build.xml):
<?xml version="1.0" encoding="UTF-8"?>
<project name="custom_rules">
<target name="-post-compile" if="${project.is.library}">
<echo>Post Compile: add assests from ${asset.absolute.dir} to ${out.library.jar.file}</echo>
<jar destfile="${out.library.jar.file}" update="true">
<zipfileset dir="${asset.absolute.dir}" prefix="assets" excludes="**/*.java ${android.package.excludes}"/>
</jar>
</target>
这会将您的库资产打包到生成的库 jar 中。因此,这些资产将包含在您的应用程序生成的 .apk 中。
检查了 OSX 上的 Android SDK Tools Revision 21.1.0
在 Eclipse 和 ANT 中,您可以从多个项目中引用相同的“资产”文件夹。这允许您的源代码树拥有资产文件的单个副本,但将它们包含在多个 APK 中。
请参阅Android:在 Eclipse 中进行调试的目标 res 文件夹
从 ProjectA 中,我能够从 ProjectB 中引用 ..\ProjectA\Assets。在 Eclipse 上(至少在 Windows 下,我还没有在 Linux 上尝试过),我必须创建一个新变量来引用 ..\ProjectA 并在“链接文件夹位置”中使用该变量。如果我试图在“链接文件夹位置”中使用“..”,eclipse 不会接受它。
对于使用IntelliJ IDEA的用户,您可以更改应用程序模块的打包设置以包含相关资产。请注意,这是在 IntelliJ 社区版的 14.0.2 版上完成的。我的主应用程序模块现在从我的库项目的资产文件夹中继承文件,就好像它们在主项目中一样!
右键单击应用程序模块 > 打开模块设置。在模块 > 打包选项卡上选择 Android 树节点。选中“将依赖项中的资产包含到 APK 中”
注意:我从未使用过 Android Studio,但我猜想在该应用程序中有类似的设置。
首先创建android lib项目,创建后关闭。这将阻止自动构建
在windows android上使用cmd终端命令是批处理文件
将工具添加到路径 C:\Users\user_bss>PATH=%PATH%;C:\adt-bundle-windows-x86-20140321\sdk\tools
为ant android更新项目生成build.xml -p C:\Users\user_bss\Documents\Workspace\SDKAdvanced -n SDKAdvanced
记事本 custom_rules.xml 添加上面的代码不要忘记结束标记
运行“ant debug”或“ant release”来构建
你会在 bin dir 中看到 classes.jar 这是你打包的库