有没有一种方法可以告诉Gradle始终使用自定义版本的aapt2二进制文件?

4

我正在尝试在一个arm64/aarch64 Debian服务器上构建Android项目。不幸的是,Android SDK只提供了一个AMD64兼容版本的aapt2,无法在arm上构建Android项目。我在这里找到了一个aarch64/arm64构建的aapt2二进制文件,并且它可以正常工作:

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

我的问题是,是否有一种方法可以告诉build.gradle仅使用我的aapt2二进制文件,而不是将其下载到~/.gradle/caches的某个位置? 到目前为止,我找到了一个解决方法,但它只适用于

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

修复方法在这篇博客文章中概述:

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

该博客文章的要点是:您可以取出包含aapt2的jar文件,位于~/.gradle/caches/...,并将其解压缩,然后用与amd64兼容的版本的aapt2替换aapt2二进制文件,最后将其重新命名为.jar。然后再次运行构建时,它将使用包含arm兼容aapt2版本的该jar文件。
问题在于如果我更改了
 classpath 'com.android.tools.build:gradle:4.2.0'

在gradle.build中,它只是下载aapt2的二进制文件(不在jar内),并放置于:
$HOME/.gradle/caches/transforms-2/files-2.1/d26ef9244e179eadf69140d97f4d45bf/aapt2-4.2.0-7147631-linux/aapt2

即使我将aapt2替换到该位置并重新构建,gradle也会重新下载amd64兼容版本的aapt2到该位置。这就是为什么我想知道如何在所有构建中使用我的arm64兼容版本的aapt2。我甚至尝试将其复制到/usr/bin/aapt2并将其添加到路径中,但那也没有起作用。感谢您提前的帮助。

我现在也在尝试在Graviton(arm64)上构建。你最终采取了什么解决方案? - OLIVER.KOO
1个回答

1

您可以尝试在gradle.properties中添加以下行:

"android.aapt2FromMavenOverride=自定义aapt2二进制文件的路径"

在我的情况下,路径为/usr/bin/aapt2。

请注意,gradle已经弃用了该选项一段时间,并且在您使用的gradle版本中可能已被完全删除。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接