Ant脚本中aapt元素的文档

时间:2011-07-24 20:52:07

标签: android ant build aapt

我正在为Android构建系统开发一些Ant脚本,并且遇到了一个调用aapt的元素。我见过很多带

的例子

exec executable =“$ {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>

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

由于

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:7)

在Android SDK的新(呃)版本中,ant构建脚本以不同的方式工作。 它不会通过exec元素直接调用 aapt 命令,而是定义 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)

答案 2 :(得分:1)

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