我一直在尝试在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 上丢失
解决方法:
-
从Google下载Linux模拟器:https://developer.android.com/studio/emulator_archive
-
将其提取到$ANDROID_SDK_HOME/模拟器
-
您需要一个名为";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不兼容而面临此问题,您可以尝试完全按照我所做的操作。
- 首先你需要更新你的android/build.gradle文件
- 例如,将buildToolsVersion增加到32或更高
buildscript {
ext {
buildToolsVersion = "33.0.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
}
}
}
}
}
- 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
不过,为了安全起见,大多数都不会被使用。
- Gradle可能仍会下载x86_64 aapt2版本并尝试使用它。为了确保这种情况不会发生,您可以将此行添加到android/gradle.properties文件中
android.aapt2FromMavenOverride=/path-to-downloaded-aapt2-binary
祝好运