Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Aapt添加库资源_Android_Aapt - Fatal编程技术网

Android Aapt添加库资源

Android Aapt添加库资源,android,aapt,Android,Aapt,我正在尝试根据手动构建apk(没有gradle),但我不知道如何使用资源库。我已经下载了Android支持库,解压缩了appcopmpat目录,并在javac中指定了-classpath。我还试图在aapt中指定资源的路径,但它报告名称冲突。我应该重命名我的应用程序的资源,还是有更好的解决方案 下面是命令($MANIFEST和$ANDROID只是路径): 以及错误消息: app/res/values/strings.xml: error: Duplicate file. appcompat/re

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

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

以及错误消息:

app/res/values/strings.xml: error: Duplicate file.
appcompat/res/values/strings.xml: Original is here.
您可以对重复的资源使用
--auto add overlay
,但问题是,很难找出正确的资源命令和使用方法。您还需要为外部支持库指定多个
-S
res路径,这些路径包含在
.aar
zip文件中的res中

此外,您还可以使用
--extra packages
,将
替换为任何包名,例如com.foo.bla。这将创建包的附加
R.java
文件。您可以使用
android.jar
中提供的主题,而不是使用支持库(例如AppCompatv7),您将在main
Manifest.xml
中使用该主题,将主题指向values文件夹中的
style.xml
。在这种情况下,您将能够在没有任何支持库的情况下使用“AAPT”工具

下面是一篇以最佳方式创建APK的文章:


请参阅我对类似问题的回答,以使用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正常工作

可以在这里找到工作脚本

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