【问题标题】:Android Library assets folder doesn't get copiedAndroid Library assets 文件夹不会被复制
【发布时间】:2011-08-18 21:22:36
【问题描述】:

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

其他人有这个问题吗?

【问题讨论】:

    标签: android android-library


    【解决方案1】:

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

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

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

    但你可以

    【讨论】:

    • 以防万一不清楚(因为它不是我):您不需要在 Android Studio 中使用 Gradle 配置任何特殊内容:看起来库的资产是自动包含的。
    • @user2808624 是的,但我想补充一点,您可能需要在使用应用程序的build.gradle 中将依赖项声明为@aar,以确保将依赖项包含为@987654326 @不仅仅是jar。这可能并非在所有情况下都是必要的,但我发现大部分时间都是必要的。所以为了安全起见,当依赖于需要共享资源的库时,我会使用@aar 后缀。我认为在 Maven 上部署库时这是必需的
    【解决方案2】:

    首先创建android lib项目,创建后关闭。这将阻止自动构建

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

    将工具添加到路径 C:\Users\user_bss>PATH=%PATH%;C:\adt-bundle-windows-x86-20140321\sdk\tools

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

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

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

      • 我知道您不应该发布“谢谢”cmets。但是,谢谢!我刚刚升级了 IntelliJ,我的库资产消失了。
      【解决方案4】:

      可以通过小修复将资产放入生成的库 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 中实现,或者是吗?
      【解决方案5】:

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

      Android: targeted res folders for debugging in eclipse

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

      【讨论】:

        猜你喜欢
        • 2012-06-13
        • 1970-01-01
        • 2013-04-27
        • 2021-10-17
        • 2015-03-09
        • 2015-03-26
        • 2021-08-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多