如何通过命令行更改Android应用程序的应用程序包名称

时间:2012-03-25 17:03:08

标签: android

是否有Android工具可以通过命令行更改项目的包名称。我不想使用Eclipse的Android工具 - >重命名应用程序包。

1 个答案:

答案 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工具链的每次更新。