ARM树莓派5的Gitea CI/CD安装Android SDK遇emulator依赖缺失
树莓派5(ARM64)Gitea CI/CD中Android SDK安装报错「未找到键为emulator的依赖包」解决方案
问题场景
在ARM架构的树莓派5上运行Gitea实例,CI/CD流水线安装Android SDK tools与build-tools时,出现「警告:未找到键为emulator的依赖包!」错误。此前在GitHub Actions中生效的--channel=3、引号包裹安装包等方案,在Gitea环境中无效。推测核心原因是ARM64架构无官方预编译的emulator包,需要适配轻量化解决方案。
已尝试方案
- 使用
--channel=3配置指定SDK频道 - 用引号包裹安装包名称执行安装
CI/CD配置代码
jobs: build: runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: '22' - name: Install dependencies run: npm install - name: Set up JDK 17 uses: actions/setup-java@v3 with: java-version: '17' distribution: 'zulu' - name: Setup Android SDK uses: Swisyn/setup-android-sdk@v1 with: packages: '' - name: Setup Android SDK Packages run: | sdkmanager "tools" "platform-tools" - name: Build APK run: | cd android chmod +x gradlew ./gradlew assembleRelease - name: Upload APK artifact uses: actions/upload-artifact@v4 with: name: app-release-apk path: android/app/build/outputs/apk/release/app-release.apk if-no-files-found: error
错误输出日志
加载包信息... 加载本地仓库... [ ] 3% 加载本地仓库... [ ] 3% 获取远程仓库... [= ] 3% 获取远程仓库... [= ] 4% 获取远程仓库... 警告:XML解析期间出错: [= ] 4% 获取远程仓库... 警告:此外,备用加载器解析XML失败。 [= ] 4% 获取远程仓库... [= ] 5% 获取远程仓库... [== ] 5% 获取远程仓库... [== ] 6% 获取远程仓库... [== ] 7% 获取远程仓库... 警告:XML解析期间出错: [== ] 7% 获取远程仓库... 警告:此外,备用加载器解析XML失败。 [== ] 7% 获取远程仓库... [=== ] 8% 获取远程仓库... [=== ] 8% 计算更新... [=== ] 10% 计算更新... 警告:未找到键为emulator的依赖包! [=== ] 10% 计算更新... 警告:无法计算完整的依赖项列表。
解决方案
方案1:用--no-emulator参数跳过模拟器依赖检查
Android SDK官方未提供ARM64架构的emulator包,可通过sdkmanager的--no-emulator参数强制跳过所有模拟器相关依赖,避免依赖计算失败。修改Setup Android SDK Packages步骤为:
sdkmanager --no-emulator "tools" "platform-tools" "build-tools;34.0.0" "platforms;android-34"
按需调整build-tools和platforms的版本号即可。
方案2:直接使用ARM64版Command Line Tools
绕开第三方action的兼容性问题,直接下载官方ARM64架构的Command Line Tools:
# 下载ARM64版Command Line Tools wget https://dl.google.com/android/repository/commandlinetools-linux-10406996_latest.zip unzip commandlinetools-linux-10406996_latest.zip -d cmdline-tools mkdir -p $ANDROID_HOME/cmdline-tools/latest mv cmdline-tools/* $ANDROID_HOME/cmdline-tools/latest/ # 配置环境变量 export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools # 安装所需包并跳过emulator sdkmanager --no-emulator "platform-tools" "build-tools;34.0.0" "platforms;android-34"
方案3:修改Gradle配置禁用emulator依赖拉取
在项目android/build.gradle中添加配置,禁止Gradle自动拉取emulator相关依赖:
android { compileSdkVersion 34 buildToolsVersion "34.0.0" defaultConfig { minSdkVersion 21 targetSdkVersion 34 } components { onEach { details -> if (details.id.group == 'com.android' && details.id.name == 'emulator') { details.skip() } } } }
配合sdkmanager --no-emulator使用,可彻底规避emulator依赖问题。
内容的提问来源于stack exchange,提问作者liphone
相关产品推荐
相关产品推荐

