我正在为Android构建系统编写一些Ant脚本,并且遇到了一个称为aapt的元素。我见过很多使用
的例子执行可执行= " $ {aapt} "
但是来自main_rules.xml文件的那些使用不同的格式
<aapt executable="${aapt}"
command="package"
debug="${build.packaging.debug}"
manifest="AndroidManifest.xml"
assets="${asset.absolute.dir}"
androidjar="${android.jar}"
apkfolder="${out.absolute.dir}"
resourcefilename="${resource.package.file.name}"
resourcefilter="${aapt.resource.filter}">
<res path="${resource.absolute.dir}" />
<!-- <nocompress /> forces no compression on any files in assets or res/raw -->
<!-- <nocompress extension="xml" /> forces no compression on specific file extensions in assets and res/raw -->
</aapt>
我想使用此元素重命名包,但找不到有关如何使用它的任何文档。有人知道在哪里能找到吗?
谢谢
我找不到任何东西,最终使用以下似乎有效的
<exec executable="${aapt}" failonerror="true">
<arg value="package" />
<arg value="-f" />
<arg value="-v" />
<arg value="-M" />
<arg path="AndroidManifest.xml" />
<arg value="-A" />
<arg path="assets" />
<arg value="-I" />
<arg path="${android.jar}" />
<arg value="-m" />
<arg value="-J" />
<arg path="${out.absolute.dir}" />
<arg value="-F" />
<arg path="${out.absolute.dir}/${resource.package.file.name}" />
<arg value="-S" />
<arg path="res" />
<arg value="--rename-manifest-package" />
<arg value="my.new.package.name" />
</exec>
在Android SDK的新(er)版本中,ant构建脚本以不同的方式工作。它不通过exec
元素直接调用aapt命令,而是定义一个合适的任务。后者由java类com.android.ant.AaptExecTask
实现。该类只提供aapt命令行选项的一个子集。
您可以在源代码java文档中找到aapt命令行选项和ant参数之间映射的简要描述:
Aapt Option Ant Name Type
---------------------------------------------------------------------------------
path to aapt executable attribute (Path)
command command attribute (String)
-v verbose attribute (boolean)
-f force attribute (boolean)
-M AndroidManifest.xml manifest attribute (Path)
-I base-package androidjar attribute (Path)
-A asset-source-dir assets attribute (Path
-S resource-sources <res path=""> nested element(s)
with attribute (Path)
-0 extension <nocompress extension=""> nested element(s)
<nocompress> with attribute (String)
-F apk-file apkfolder attribute (Path)
outfolder attribute (Path) deprecated
apkbasename attribute (String)
basename attribute (String) deprecated
-J R-file-dir rfolder attribute (Path)
-m always enabled
据我所知,没有办法通过这个新的构建任务提供通用的aapt选项。这似乎只能通过获取SDK的build.xml的修改副本来实现
如果有人知道更好的解决方案,我也很乐意阅读;-)
编辑:在更新的SDK版本中再次引入了重命名包:
Aapt Option --rename-manifest-package package-name
Ant Name manifestpackage
Type attribute (String)
我非常怀疑除了源代码之外还有什么文档。