我一直在尝试在 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 行工具)
ARM 上缺少 SDK 管理器包“模拟器”
解决方法:
从谷歌下载 Linux 模拟器:https://developer.android.com/studio/emulator_archive
解压到$ANDROID_SDK_HOME/emulator
您需要一个名为“package.xml”的许可证文件,当您通过 Android Studio UI SDK 管理器下载它时会自动创建该文件,您将该文件复制到 $ANDROID_SDK_HOME/emulator 并更改与您下载的版本相关的所有版本号:
... <revision><major>31</major><minor>1</minor><micro>4</micro></revision>...
我能够通过从 https://chromium.googlesource.com/android_tools/+/refs/heads/main/sdk/emulator/
不幸的是,安装的软件包似乎没有为 arm64 编译并且无法正常工作。
有人帮忙交叉编译 arm64 模拟器吗? https://developer.android.com/studio/releases/emulator
ARM64 主机模拟器 Linux 模拟器源代码现在支持从 x86_64 主机到 arm64 主机的交叉编译,从而可以使用 KVM 虚拟化运行 arm64 系统映像。目前,仅支持 -gpu swiftshader_indirect(Swiftshader arm64 主机渲染),但也可以使用一组兼容的主机 GPU libEGL/libGLESv2 库,方法是将 lib64/gles_swiftshader 替换为它们,然后使用 -gpu swiftshader_indirect 重新启动。快照也可能无法正常工作(将 -no-snapshot 添加到命令行)。
说明:
cd emu
repo init -u https://android.googlesource.com/platform/manifest -b emu-master-dev --depth=1
repo sync -qcj 12
cd external/qemu
pip install absl-py
pip install urlfetch
sudo apt-get install crossbuild-essential-arm64
python android/build/python/cmake.py --noqtwebengine --noshowprefixforinfo --target linux_aarch64
有人试试这个吗? 我遇到错误,无法安装一个工具
如果你因为 arm64 不兼容而面临这个问题,你可以尝试做我所做的。
buildscript {
ext {
buildToolsVersion = "33.0.1"
}
}
buildscript {
subprojects { subproject ->
afterEvaluate{ if((subproject.plugins.hasPlugin("android") || subproject.plugins.hasPlugin("android-library"))) {
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
}
}
}
}
}
我在我的案例中符号链接的二进制文件是,
构建工具
贴切 aapt2 援助 apksigner 拉链对齐 拆分选择 转储
平台工具
快速启动 亚行 dmtracedump e2fsdroid etc1工具 hprof转换 make_f2fs make_f2fs_casefold mke2fs sload_f2fs sqlite3
虽然大多数不会被使用,但只是为了安全。
android.aapt2FromMavenOverride=/path-to-downloaded-aapt2-binary
祝你好运