我正在尝试根据本手册手动构建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.
您可以将--auto-add-overlay
用于重复的资源,但问题是,很难找出正确的资源命令并使用。您还需要为外部支持库指定多个-S
res 路径,这些路径包含在 zip 文件内的 res.aar
。
此外,您可以使用--extra-packages <package_name>
将<package_name>
替换为任何软件包名称,例如.com.foo.bla。这将创建包的附加R.java
文件。您可以使用android.jar
中可用的主题,而不是使用支持库(例如 AppCompatv7),您将在主Manifest.xml
中使用,将主题指向 values 文件夹中的Styles.xml
。在这种情况下,您将能够在没有任何支持库的情况下使用"AAPT"工具。
这是一篇以最佳方式创建APK的文章:https://geosoft.no/development/android.html。
请参阅我对使用android的一般主题(在支持库中不可用)的类似问题的回答,这样您就不必集成其他库:如何在不使用任何构建工具的情况下使用aapt2编译Android应用程序?
可以使用以下命令:
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
appcompat/res 之前的 -S 选项启用编译 app/res 文件夹所需的代码。 --自动添加-叠加使支持库资源可以覆盖在主应用程序的上方。 --额外的包选项,用于为 appcompat 启用 R.java,以便 appcompat 正常工作。
可以在此处找到工作脚本 https://github.com/HemanthJabalpuri/AndroidExplorer