我想将一个应用程序构建为两个版本,一个付费,一个免费,
而且我知道aapt的选项“--rename-manifest-package”应该有帮助,但是我不知道如何在build.xml中使用它。
我找到2个可以修改的地方:
<!-- first -->
<target name="-resource-src" depends="-dirs">
<echo>Generating R.java / Manifest.java from the resources...</echo>
<exec executable="${aapt}" failonerror="true">
<arg value="package" />
<arg line="${v.option}" />
<arg value="-m" />
<arg value="-J" />
<arg path="${gen.absolute.dir}" />
<arg value="-M" />
<arg path="AndroidManifest.xml" />
<arg value="-S" />
<arg path="${resource.absolute.dir}" />
<arg value="-I" />
<arg path="${android.jar}" />
</exec>
</target>
<!-- sencod -->
<target name="-package-resources">
<echo>Packaging resources</echo>
<aaptexec executable="${aapt}"
command="package"
manifest="AndroidManifest.xml"
resources="${resource.absolute.dir}"
assets="${asset.absolute.dir}"
androidjar="${android.jar}"
outfolder="${out.absolute.dir}"
basename="${ant.project.name}" >
</aaptexec>
</target>
本文(http://blog.uncommons.org/2010/07/19/building-two-versions-of-the-same-android-app/)说我应该在第二个位置添加“--rename-manifest-package”,但是如何?
最佳答案
选项--rename-manifest-package不能与aaptexec ant任务一起使用。这是一个需要直接转到aapt可执行文件的选项,例如:
<exec executable="${aapt}" failonerror="true">
<arg value="package" />
<arg value="-f" />
<arg value="-v" />
<arg value="--version-code" />
<arg value="${version.code}" />
<arg value="--debug-mode" />
<arg value="-M" />
<arg path="AndroidManifest.xml" />
<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="-S" />
<arg path="${resource.absolute.dir}" />
<arg value="--rename-manifest-package" />
<arg value="com.example.pro" />
</exec>
我发现没有办法编辑实际上改变Eclipse构建方式的文件。因此,我将这段代码放在build.xml中,将其放在项目根目录中,然后通过键入从控制台进行构建;
ant debug
而且,如果您依赖于任何库,那么它们也都需要放入包装中。查看您的default.properties文件,您将看到对lib的引用。然后像这样将其添加到上面的规则中;
<arg value="-S" />
<arg path="${android.library.reference.1}/res" />
它开始越来越像一种可以随任何平台SDK更新而中断的黑客。