3

有谁知道是否可以在使用 build.xml 的 ANT 构建过程中将未压缩的特定文件添加到 Android APK 文件中?我所有的文件都位于assets文件夹中并使用相同的扩展名。我确实意识到我可以对我不想添加压缩和指定的文件使用不同的扩展名,例如:

<nocompress extension="NoCompress" />

但这目前不是我的选择。

我尝试在build.xmlpackage-resource部分的 appt package步骤之后添加我自己的aapt add步骤:

<exec executable="${aapt}" taskName="add">
<arg value="add" />
<arg value="-v" />
<arg value="${out.absolute.dir}/TestAndroid.ap_" />
<arg value="${asset.absolute.dir}/notcompressed.and" />
</exec>

哪个确实将文件添加到了APK,但它被压缩了。:)

这是可能的还是唯一的方法是不同的扩展?

谢谢!

4

3 回答 3

2

看看这里

控制这种行为的唯一方法(在撰写本文时我发现)是在命令行上使用 -0(零)标志来适应。这个标志,在没有任何附带参数的情况下传递,将告诉 aapt 禁用所有类型资产的压缩。通常你不会想使用这个确切的选项,因为对于大多数资产来说,压缩是一个可取的事情。但是,有时您会拥有不想对其应用压缩的特定类型的资产(例如数据库)。在这种情况下,您有两个选择。

首先,您可以在上面的列表中为您的资产文件提供扩展名。虽然这不一定有意义,但如果您不想在命令行上处理 aapt,这可能是一个简单的解决方法。另一个选项是将特定扩展名传递给 -0 标志,例如 -0 db,以禁用具有该扩展名的资产的压缩。如果需要解压缩多个类型,则可以多次传递 -0 标志,并且每次都使用单独的扩展名。

目前,在 Eclipse 中使用 ADT 时无法将这些额外的标志传递给 aapt,因此如果您不想牺牲 GUI 工具的易用性,您将不得不使用第一个选项,并重命名你的文件的扩展名。

于 2012-06-30T17:33:47.780 回答
2

如果使用 gradle 构建,那么您似乎可以像这样提供 aapt 标志:

android {
    aaptOptions {
        noCompress 'foo', 'bar'
        ignoreAssetsPattern "!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"
    }
}

http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-aapt-options

于 2015-06-08T19:58:32.790 回答
0

只是为这个提供关闭。

我认为不可能将单个文件标记为未压缩添加到 APK。

能够将单个文件标记为未压缩到aapt可能很有用。与添加nocompress 文件标签一样,例如:

<nocompress file="FileNoCompress.abc" />

:)

于 2012-07-07T21:35:52.633 回答