16

我正在创建一个 Android 库,它有一个assets包含图像的文件夹。当我在另一个项目中使用它时,资产不会被复制。

其他人有这个问题吗?

4

5 回答 5

35

基于 Gradle的全新 Android 构建系统支持库项目中的资产文件夹!

使用基于 ANT 的构建仍然不可能:

图书馆项目不能包含原始资产。(见文档

但你可以

于 2011-06-29T22:17:55.823 回答
11

可以通过小修复将资产放入生成的库 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

于 2013-04-04T05:57:05.267 回答
2

在 Eclipse 和 ANT 中,您可以从多个项目中引用相同的“资产”文件夹。这允许您的源代码树拥有资产文件的单个副本,但将它们包含在多个 APK 中。

请参阅Android:在 Eclipse 中进行调试的目标 res 文件夹

从 ProjectA 中,我能够从 ProjectB 中引用 ..\ProjectA\Assets。在 Eclipse 上(至少在 Windows 下,我还没有在 Linux 上尝试过),我必须创建一个新变量来引用 ..\ProjectA 并在“链接文件夹位置”中使用该变量。如果我试图在“链接文件夹位置”中使用“..”,eclipse 不会接受它。

于 2013-02-26T00:12:38.797 回答
1

对于使用IntelliJ IDEA的用户,您可以更改应用程序模块的打包设置以包含相关资产。请注意,这是在 IntelliJ 社区版的 14.0.2 版上完成的。我的主应用程序模块现在从我的库项目的资产文件夹中继承文件,就好像它们在主项目中一样!

右键单击应用程序模块 > 打开模块设置。在模块 > 打包选项卡上选择 Android 树节点。选中“将依赖项中的资产包含到 APK 中”

注意:我从未使用过 Android Studio,但我猜想在该应用程序中有类似的设置。

在此处输入图像描述

在此处输入图像描述

于 2015-03-27T16:41:36.970 回答
0

首先创建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 这是你打包的库

于 2015-04-07T20:58:19.723 回答