用于重命名清单包的自定义Android build.xml

Jam*_*Lee 9 android

我想将一个应用程序构建为2个版本,一个付费,一个免费,我知道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>
Run Code Online (Sandbox Code Playgroud)

这篇文章(http://blog.uncommons.org/2010/07/19/building-two-versions-of-the-same-android-app/)说我应该在"--rename-manifest-package"中添加"第二名,但如何?

Mar*_*etz 8

选项--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>
Run Code Online (Sandbox Code Playgroud)

我发现无法编辑实际改变Eclipse构建方式的文件.所以我将这段代码放在build.xml中,将它放在项目根目录中,然后通过键入来从控制台构建;

ant debug
Run Code Online (Sandbox Code Playgroud)

如果您依赖任何库,他们也需要进入包装.查看default.properties文件,您将看到对lib的引用.然后将其添加到上面的规则中,就像这样;

<arg value="-S" />
<arg path="${android.library.reference.1}/res" />
Run Code Online (Sandbox Code Playgroud)

它开始越来越像一个可以打破任何平台SDK更新的黑客攻击.