【问题标题】:Aapt add library resourcesAapt 添加库资源
【发布时间】:2019-03-30 15:50:33
【问题描述】:

我正在尝试根据this manual 手动构建 apk(没有 gradle),但我不明白如何使用具有资源的库。我已经下载了 Android 支持库,解压了appcopmpat 目录并在javac 中指定了-classpath。我也在尝试在aapt 中指定资源的路径,但它报告名称冲突。我应该只重命名我的应用的资源,还是有更好的解决方案?

这是命令($MANIFEST$ANDROID 只是路径):

aapt package -f -m -J app/src -M ${MANIFEST} -I ${ANDROID} -S appcompat/res app/res

还有错误信息:

app/res/values/strings.xml: error: Duplicate file.
appcompat/res/values/strings.xml: Original is here.

【问题讨论】:

    标签: android aapt


    【解决方案1】:

    您可以将--auto-add-overlay 用于重复资源,但问题是,很难找出正确的资源命令和使用方法。您还需要为外部支持库指定多个-S res 路径,这些路径包含在.aar zip 文件中的res 中。

    此外,您可以使用 --extra-packages <package_name><package_name> 替换为任何包名称,例如com.foo.bla。这将创建一个额外的 R.java 包文件。除了使用支持库(例如 AppCompatv7),您可以使用 android.jar 中可用的主题,您将在主 Manifest.xml 中使用该主题,将主题指向值文件夹中的 Styles.xml。在这种情况下,您可以在没有任何支持库的情况下使用“AAPT”工具。

    这是一篇以最佳方式创建 APK 的文章:https://geosoft.no/development/android.html

    查看我对类似问题的回答以使用 android 的通用主题(在支持库中不可用),这样您就不必集成其他库:How to compile an Android app with aapt2 without using any build tools?

    【讨论】:

      【解决方案2】:

      可以使用以下命令:

      aapt package -f -m -J app/src -M ${MANIFEST} -I ${ANDROID} -S app/res -S appcompat/res  --extra-packages android.support.v7.app --auto-add-overlay
      

      -S 选项在 appcompat/res 之前启用编译 app/res 文件夹所需的代码。 --auto-add-overlay 使支持库资源可以覆盖在主应用程序的上方。 --extra-packages 选项也用于为 appcompat 启用 R.java,以便 appcompat 能够正常工作。

      可以在这里找到工作脚本https://github.com/HemanthJabalpuri/AndroidExplorer

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-27
        • 2019-01-29
        • 2019-12-26
        • 2014-04-24
        • 2019-05-01
        相关资源
        最近更新 更多