在 arm64 上安装构建工具不起作用



我一直在尝试在arm64处理器(安培CPU(上安装sdkmanager "build-tools;30.0.2"

但每次我得到这个:

Warning: Dependant package with key emulator not found!                         
Warning: Unable to compute a complete list of dependencies.

我正试图建立一个应用程序,我得到了这个错误:

Failed to install the following SDK components:
build-tools;30.0.2 Android SDK Build-Tools 30.0.2

编辑:我认为问题是emulator包不可用。我试着从这里下载,但sdkmanager没有认出它。

(假设:安装了CMD行工具(

SDK管理器包";模拟器";在ARM 上丢失

解决方法:

  1. 从Google下载Linux模拟器:https://developer.android.com/studio/emulator_archive

  2. 将其提取到$ANDROID_SDK_HOME/模拟器

  3. 您需要一个名为";package.xml";它是在您通过Android Studio UI SDK Manager下载时自动创建的,您可以将该文件复制到$Android_SDK_HOME/模拟器中,并更改与您下载的版本相关的所有版本号:

    ... <revision><major>31</major><minor>1</minor><micro>4</micro></revision>...
    

我能够在arm64上使用sdkmager安装构建工具,方法是从https://chromium.googlesource.com/android_tools/+/参考文件/heads/main/sdk/模拟器/

不幸的是,安装的软件包似乎不是为arm64编译的,并且不起作用。

如果您由于arm64不兼容而面临此问题,您可以尝试完全按照我所做的操作。

  1. 首先你需要更新你的android/build.gradle文件
  • 例如,将buildToolsVersion增加到32或更高
buildscript {
ext {
buildToolsVersion = "33.0.1"
}
}
  1. 如果您在项目中使用明确指定构建工具版本30的依赖项,gradle仍将尝试下载它,这将导致错误。为了防止这种情况,可以强制所有依赖项使用主项目的buildToolsVersion。这可能会引起一些问题,但如果你幸运的话,不会有任何问题。这就是如何实现
buildscript {
subprojects { subproject ->
afterEvaluate{      if((subproject.plugins.hasPlugin("android") || subproject.plugins.hasPlugin("android-library"))) {
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
}
}
}
}
}
  1. sdkmager将下载的构建和平台工具中的二进制文件适用于x86_64,因此gradle构建仍将失败。要解决这个问题,您需要自己构建或下载这些工具。经过长时间的搜寻,我找到了这些https://github.com/lzhiyong/android-sdk-tools/releases/download/33.0.3/android-sdk-tools-static-aarch64.zip感谢https://github.com/lzhiyong用于构建这些工具并使其可用。其他版本在这里https://github.com/lzhiyong/android-sdk-tools/releases下载工具后,您应该删除android sdk文件夹中的二进制文件,并符号链接下载的二进制文件的路径

在我的案例中,我符号链接的二进制文件是

构建工具

aaptaapt2aidlapksigner优化拆分选择dexdump

平台工具

快速启动adbdmtracedumpe2fsdroidetc1工具hprof-convmake_f2fsmake_f2fs_casefoldmke2fssload_f2fssqlite3

不过,为了安全起见,大多数都不会被使用。

  1. Gradle可能仍会下载x86_64 aapt2版本并尝试使用它。为了确保这种情况不会发生,您可以将此行添加到android/gradle.properties文件中
android.aapt2FromMavenOverride=/path-to-downloaded-aapt2-binary

祝好运

最新更新