是否有Android工具可以通过命令行更改项目的包名称。我不想使用Eclipse的Android工具 - >重命名应用程序包。
答案 0 :(得分:10)
如果您想一次性更改源代码,可以使用Android命令行工具android update project
文档位于[developer docs] [1]。
如果你想在每次构建期间动态地执行它,你需要一个自定义的ant构建脚本来将参数传递给aapt
不幸的是你不能使用默认的aapt任务,因为它不支持设置选项 - 重命名舱单封装
您需要将以下目标添加到默认的build.xml
文件android
命令行created;在<import file="${sdk.dir}/tools/ant/build.xml" />
<!-- Replaces the target in tools\ant\build.xml -->
<target name="-package-resources" depends="-crunch">
<!-- this exec replicates the output of the aapt task in build.xml
-package-resources with the addition of a rename-manifest-package option. -->
<exec executable="${aapt}" failonerror="true">
<arg value="package" />
<arg value="-f" />
<arg value="--auto-add-overlay" />
<arg value="-M" />
<arg path="${basedir}/AndroidManifest.xml" />
<arg value="-S" />
<arg path="${resource.absolute.dir}" />
<arg value="-S" />
<arg path="${basedir}/${android.library.reference.1}/${resource.dir}" />
<arg value="-A" />
<arg path="${asset.absolute.dir}" />
<arg value="-I" />
<arg path="${android.jar}" />
<arg value="-F" />
<arg path="${out.absolute.dir}/${resource.package.file.name}" />
<arg value="--rename-manifest-package" />
<arg value="${package.manifest.name}" />
</exec>
</target>
属性package.manifest.name
将包含包的名称。您可以在属性文件中或在命令行选项-Dpackage.manifest.name=value
中设置它
您也可以扩展它以基于属性重命名输出apk。
这个问题包括从清单中获取版本信息以添加到apk输出名称: How to include version string in the filename when building Android apk with ant?
您需要查看导入的build.xml文件,以了解您需要覆盖的内容。
您可以继续向本地build.xml文件添加规则覆盖,但由于您需要进行自定义级别,我会考虑直接从android工具中复制build.xml文件并修改它而不是用它作为导入。这确实意味着更多的工作,确保它仍然适用于Android工具链的每次更新。