Aapt添加库资源

时间:2019-03-30 15:50:33

标签: android aapt

我正在尝试根据this manual手动构建apk(无gradle),但是我不知道如何使用带资源的库。我已经下载了Android支持库,解压缩了appcopmpat目录,并在-classpath中指定了javac。我也尝试在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.

2 个答案:

答案 0 :(得分:0)

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

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

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

关于类似问题的答案,请参阅我的答案以使用android的一般主题(在支持库中不可用),这样您就不必集成其他库:How to compile an Android app with aapt2 without using any build tools?

答案 1 :(得分:0)

可以使用以下命令:

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文件夹所需的编译代码。 --auto-add-overlay使支持库资源可以覆盖在主应用程序的上方。 --extra-packages选项也可为appcompat启用R.java,以便appcompat可以正常工作。

可以在这里https://github.com/HemanthJabalpuri/AndroidExplorer

找到工作脚本