【问题标题】:Documentation for aapt element in Ant scriptAnt 脚本中 aapt 元素的文档
【发布时间】:2011-10-12 04:27:08
【问题描述】:

我正在为 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>

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

谢谢

【问题讨论】:

    标签: android ant build aapt


    【解决方案1】:

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

        <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>
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 找了很久--rename-manifest-package 选项的属性名。这对我很有帮助。
      【解决方案3】:

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

      【讨论】:

      猜你喜欢
      • 2013-05-26
      • 2012-04-30
      • 1970-01-01
      • 2019-09-03
      • 2013-03-25
      • 2020-06-11
      • 2014-10-17
      • 2022-12-31
      • 1970-01-01
      相关资源
      最近更新 更多