9

我正在为 Android 构建系统编写一些 Ant 脚本,并且遇到了一个调用 aapt 的元素。我看过很多例子

exec 可执行文件="${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>

我想使用此元素重命名包,但找不到有关如何使用它的任何文档。有谁知道我在哪里可以找到一些?

谢谢

4

3 回答 3

7

我找不到任何东西,最终使用了以下似乎可行的方法

    <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>
于 2011-07-26T08:45:43.770 回答
7

在 Android SDK 的新版本中,ant 构建脚本以不同的方式工作。它不直接通过元素调用aaptexec命令,而是定义了一个 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 副本并替换 aapt 调用才能实现。

如果有人知道更好的解决方案,我也很乐意阅读;-)

编辑:在更新版本的 SDK 中,再次引入了重命名包:

Aapt Option   --rename-manifest-package package-name 
Ant Name      manifestpackage
Type          attribute (String)
于 2012-02-02T10:52:31.523 回答
1

我非常怀疑除了源代码之外还有任何文档。

于 2011-07-24T22:31:02.447 回答