是否有一种方法告诉gradle总是使用自定义二进制的aapt2?



我正在尝试在arm64/aarch64 Debian服务器上构建Android项目。不幸的是,Android SDK只附带了一个AMD64兼容版本的aapt2,它不能在arm上构建Android项目。我在github上找到了aarch64/arm64构建的aapt2二进制文件,它可以工作:

https://github.com/JonForShort/android-tools/tree/master/build/android-9.0.0_r33/aapt2/arm64-v8a/binhttps://github.com/JonForShort/android-tools/tree/master/build/android-11.0.0_r33/aapt2/arm64-v8a/bin

我的问题是,如果有一种方法,我可以告诉构建。Gradle只使用我的二进制的aapt2,而不是下载到~/.gradle/缓存?到目前为止,我找到了一个修复,但它只适用于

classpath 'com.android.tools.build:gradle:4.1.1'

修复概述在这篇博文:

https://linuxtut.com/en/ec63aa8bff5103982156/

那篇博文的TLDR是你可以在~/.gradle/caches/....中获取包含aapt2的jar然后将其解压缩,用与amd64兼容的aapt2版本替换aapt2二进制文件,然后将其重命名为.jar。然后,当你再次运行构建时,它将使用包含arm兼容的aapt2版本的jar。

问题是如果我改变
classpath 'com.android.tools.build:gradle:4.2.0'

gradle。然后构建它只是下载一个aapt2的二进制文件(不在jar中)到:

$HOME/.gradle/caches/transforms-2/files-2.1/d26ef9244e179eadf69140d97f4d45bf/aapt2-4.2.0-7147631-linux/aapt2

即使我在那个位置替换aapt2并重新运行构建,gradle也会重新下载aapt2的amd64兼容版本到那个位置。

这就是为什么我想知道如何在我所有的构建中使用我的arm64兼容版本的aapt2。

我甚至尝试将它复制到/usr/bin/aapt2并将其添加到我的路径,但这也不起作用。

提前感谢您的帮助。

你可以尝试在gradle.properties

中添加这一行"android。aapt2fromavenoverride =自定义aapt2 binary">

在我的例子中,路径是/usr/bin/aapt2

请注意,gradle已经弃用这个选项有一段时间了,它可能已经在你用来构建项目的gradle版本中被完全删除了。

最新更新