在GitHub Action构建Ionic Android APK时遇无法启动Android Studio问题
在GitHub Action中构建Ionic Angular Android项目的解决方案
核心结论:不需要安装完整Android Studio
GitHub Action的Ubuntu/macOS运行器已经预装了Android SDK核心命令行工具,完整Android Studio是带GUI的桌面软件,CI环境完全用不上,反而会浪费资源。你的问题本质是环境变量配置不全、命令触发了GUI启动,以及文件权限问题。
解决"无法启动Android Studio"的失败问题
替换触发GUI的构建命令
不要使用会唤起Android Studio的命令,改用纯命令行构建参数:- 开发版APK(Cordova):
ionic cordova build android --debug --no-build - 开发版APK(Capacitor):
npx cap sync android && npx cap build android --debug --no-open - 正式版APK(Cordova):
ionic cordova build android --release --no-build - 正式版APK(Capacitor):
npx cap sync android && npx cap build android --release --no-open
关键参数--no-open(Capacitor)或--no-build(Cordova)会避免触发Android Studio GUI。
- 开发版APK(Cordova):
正确配置Android SDK环境变量
在工作流中添加SDK环境配置步骤,确保命令行工具能被找到:- name: Set up Java uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' cache: 'gradle' - name: Configure Android SDK run: | echo "ANDROID_SDK_ROOT=$ANDROID_HOME" >> $GITHUB_ENV echo "$ANDROID_HOME/platform-tools" >> $GITHUB_PATH echo "$ANDROID_HOME/cmdline-tools/latest/bin" >> $GITHUB_PATH # 安装项目所需的Android版本和构建工具 sdkmanager --install "platforms;android-34" "build-tools;34.0.0" "extras;google;m2repository" "extras;android;m2repository" # 自动同意SDK许可协议 sdkmanager --licenses || true
解决"Generate the Android App Bundle"的权限拒绝错误
直接给gradle执行脚本添加可执行权限即可,在构建前运行:
- name: Fix gradlew permissions run: chmod +x ./android/gradlew
(如果是Cordova项目,路径改为platforms/android/gradlew)
完整工作流示例(Capacitor版本)
name: Build Android APK & App Bundle on: [push] jobs: build-android: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' - name: Install dependencies run: npm install - name: Build Angular project run: ng build --configuration production - name: Set up Java uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' cache: 'gradle' - name: Configure Android SDK run: | echo "ANDROID_SDK_ROOT=$ANDROID_HOME" >> $GITHUB_ENV echo "$ANDROID_HOME/platform-tools" >> $GITHUB_PATH echo "$ANDROID_HOME/cmdline-tools/latest/bin" >> $GITHUB_PATH sdkmanager --install "platforms;android-34" "build-tools;34.0.0" "extras;google;m2repository" "extras;android;m2repository" sdkmanager --licenses || true - name: Sync Capacitor run: npx cap sync android - name: Fix gradlew permissions run: chmod +x ./android/gradlew - name: Build Android Dev APK run: npx cap build android --debug --no-open - name: Build Android Release APK run: npx cap build android --release --no-open - name: Generate Android App Bundle run: cd android && ./gradlew bundleRelease - name: Upload build artifacts uses: actions/upload-artifact@v4 with: name: android-build-outputs path: | android/app/build/outputs/apk/debug/*.apk android/app/build/outputs/apk/release/*.apk android/app/build/outputs/bundle/release/*.aab
内容的提问来源于stack exchange,提问作者Gregory Boutte
相关产品推荐
相关产品推荐

