Android库资源文件夹不会被复制

时间:2011-05-04 21:03:12

标签: android android-library

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

其他人有这个问题吗?

5 个答案:

答案 0 :(得分:34)

基于Gradle的new Android Build System支持库项目中的资产文件夹!

使用基于ANT的构建仍然无法实现:

  

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

但你可以

答案 1 :(得分: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工具修订版21.1.0

答案 2 :(得分:2)

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

请参阅Android: targeted res folders for debugging in eclipse

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

答案 3 :(得分:1)

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

右键单击应用程序模块&gt;打开模块SEttings。选择模块上的Android树节点&gt;包装标签。选中“将资源从依赖项纳入APK”

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

enter image description here

enter image description here

答案 4 :(得分:0)

首先创建android lib项目,创建后关闭。这将'prevert autobuild

在windows上使用cmd终端android命令是批处理文件

向路径添加工具 C:\ Users \用户user_bss&GT; PATH =%PATH%; C:\ ADT-束 - 窗口x86-20140321 \ SDK \工具

为ant生成build.xml android更新项目-p C:\ Users \ user_bss \ Documents \ Workspace \ SDKAdvanced -n SDKAdvanced

记事本custom_rules.xml添加上面的代码不要忘记结束标记

运行“ant debug”或“ant release”来构建

你会在bin目录中看到classes.jar这是你的压缩包