SuperAPI AI 工具集

android-deploy

部署与运维

查看项目

更新于 10-16 08:26

技能介绍

用途

android-deploy 技能用于自动化 Android 应用部署,涵盖基于 Gradle 的构建、APK/AAB 签名、上传至 Google Play Console、通过 Firebase 分发,以及使用 Fastlane 和 bundletool 简化 CI/CD 流程。

适用场景

适用于生产环境部署 Android 应用、测试构建变体或自动化发布;尤其适合 CI 流水线、向 Google Play 更新应用,或通过 Firebase 进行内部测试分发。不适用于非 Android 项目,或无需部署的基础构建需求。

主要能力

  • 使用 build.gradle 配置构建并选择 Gradle 变体(如 debug、release)。
  • 使用密钥库对 APK 或 AAB 进行签名,支持 v1 和 v2 签名方案。
  • 通过 API 上传应用至 Google Play Console,包括管理编辑和轨道(track)。
  • 通过 Firebase App Distribution 分发构建,用于 Beta 测试。
  • 使用 Fastlane 自动化工作流,包括构建和部署的 lane 定义。
  • 使用 bundletool 从 AAB 生成并测试 APK,实现针对设备的优化。

使用方式

部署 Android 应用时,首先在 build.gradle 中配置变体(例如设置 buildTypes { release { ... } }),然后使用 Fastlane 串联构建、签名和上传等任务。对于 CI 集成,通过脚本调用 Gradle 任务,为密钥传递环境变量,并处理输出以供后续步骤使用。运行前务必验证密钥库路径和 API 凭据;例如,运行一个 Fastlane lane,调用 ./gradlew assembleRelease,随后进行 bundletool 提取。

常用命令/API

  • Gradle 构建指定变体:./gradlew assembleRelease --stacktrace(使用 --stacktrace 进行调试)。
  • 签名 APK:apksigner sign --ks my.keystore --ks-key-alias myalias myapp.apk(需要密钥库文件和别名)。
  • 上传至 Google Play:使用 Google Play API 端点 POST https://www.googleapis.com/androidpublisher/v3/applications/{packageName}/edits,携带来自 $GOOGLE_PLAY_API_KEY 的 OAuth 令牌;示例 curl:curl -H "Authorization: Bearer $GOOGLE_PLAY_API_KEY" -d '{"title": "Edit"}' https://....
  • Firebase App Distribution:firebase appdistribution:distribute myapp.apk --app <APP_ID> --groups my-testers(设置 $FIREBASE_TOKEN 用于认证)。
  • Fastlane lane:在 Fastfile 中定义:lane :deploy do |options| sh("./gradlew assembleRelease") end;使用 fastlane android deploy 运行。
  • bundletool 处理 AAB:bundletool build-apks --bundle=myapp.aab --output=myapp.apks --ks=my.keystore(通过环境变量如 $KEYSTORE_PASS 包含 --ks-pass 密码)。
  • build.gradle 中 Gradle 构建代码片段:android { buildTypes { release { signingConfig signingConfigs.release } } }(2 行)。
  • 脚本中的 API 调用:response = requests.post('https://www.googleapis.com/androidpublisher/v3/...', headers={'Authorization': f'Bearer {os.environ["GOOGLE_PLAY_API_KEY"]}'} )(2 行)。

集成说明

通过为敏感数据设置环境变量进行集成,例如 export GOOGLE_PLAY_API_KEY=$SERVICE_API_KEY 用于 OAuth;在项目根目录配置 Fastlane 的 Fastfile,包含引用 Gradle 任务的 lane。对于 Firebase,添加 Firebase CLI 并通过服务账号 JSON 设置 $FIREBASE_TOKEN。在构建流水线中将 bundletool 作为 JAR 使用,确保版本兼容(如 1.14.0+)。与 CI 工具(如 GitHub Actions)链接,在工作流 YAML 中添加步骤:run: fastlane android deploy。

错误处理

处理签名错误时检查密钥库路径和密码(例如,如果 apksigner 失败并提示 "Keystore not found",验证文件是否存在);对于 API 上传,通过确保 $GOOGLE_PLAY_API_KEY 有效且未过期来捕获 401 错误。Gradle 构建失败通常源于变体不匹配——使用 ./gradlew tasks 列出可用任务。对于 Fastlane,使用 fastlane --verbose 调试;如果 bundletool 报告 "Invalid bundle",使用 bundletool validate --bundle=myapp.aab 验证 AAB。始终在脚本中用 try-catch 块包裹命令,例如 try { sh("./gradlew assembleRelease") } catch { echo "Build failed: $error" }。

具体使用示例

示例 1:为发布构建并签名 APK

首先,确保 build.gradle 包含:signingConfigs { release { storeFile file("my.keystore") keyAlias "myalias" } }。然后运行:./gradlew assembleRelease。最后签名:apksigner sign --ks my.keystore --ks-key-alias myalias app/build/outputs/apk/release/app-release-unsigned.apk。这将生成可供分发的已签名 APK。

示例 2:通过 Fastlane 上传至 Google Play

创建 Fastfile,包含:lane :upload do upload_to_play_store track: 'internal' apk_path: 'app/build/outputs/apk/release/app-release.apk' end。设置环境变量:export SUPPLY_JSON_KEY_FILE=$GOOGLE_PLAY_SERVICE_ACCOUNT。运行:fastlane upload。这将自动化构建、签名并上传至 Google Play Console 的内部轨道。

限制

暂未提供关于收费、价格、平台支持范围或具体效果的信息。