我正在尝试在一个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并将其添加到路径中,但那也没有起作用。感谢您提前的帮助。