DeployAnd

用于自动化 Google Play 商店应用部署、编译和发布流程的命令行工具。

安装

系统要求

  • Ruby 2.7.0 或更高版本
  • Bundler

从 RubyGems 安装(即将推出)

gem install deployand

从源码安装

git clone https://github.com/deployand/deployand.git
cd deployand
bundle install
rake build
gem install pkg/deployand-*.gem

跨平台支持

DeployAnd 支持以下系统:

  • macOS
  • Linux
  • Windows(需要安装 Ruby)

快速开始

  1. 初始化新项目:

    deployand init MyApp
    
  2. deployand.yml 中配置应用设置

  3. 构建应用:

    deployand build
    
  4. 发布到 Google Play 商店:

    deployand publish internal
    

命令

deployand init [项目名称]

初始化一个新的 deployand 项目,并创建配置文件。

选项:

  • --template=模板 - 使用指定模板(android、flutter、react-native)
  • --force - 覆盖现有配置文件

示例:

deployand init MyApp
deployand init MyApp --template=flutter
deployand init MyApp --template=react-native --force

deployand iap [操作]

管理 Google Play 控制台中的应用内购买产品。

操作:

  • create - 创建新的 IAP 产品
  • update - 更新现有 IAP 产品
  • list - 列出所有 IAP 产品
  • delete - 删除 IAP 产品

选项:

  • --product-id=产品ID - 指定产品 ID
  • --price=价格 - 设置产品价格
  • --title=标题 - 设置产品标题
  • --description=描述 - 设置产品描述
  • --sync - 与远程 IAP 配置同步

示例:

deployand iap list
deployand iap create --product-id=premium --price=9.99 --title="高级版本"
deployand iap update --product-id=premium --price=7.99
deployand iap delete --product-id=old_product

deployand build [构建类型]

构建并打包应用程序以用于 Google Play 商店部署。

构建类型:

  • release(默认)- 发布模式构建
  • debug - 调试模式构建

选项:

  • --clean - 构建前清理构建产物
  • --sign - 使用发布密钥库签名 APK/AAB(发布模式默认)
  • --output=路径 - 指定输出目录
  • --flavor=变体 - 构建指定变体
  • --arch=架构 - 目标架构(arm64-v8a、armeabi-v7a、x86_64)

示例:

deployand build
deployand build release --clean
deployand build debug --flavor=development
deployand build --arch=arm64-v8a --output=./dist

deployand publish [发布轨道]

上传并发布应用程序到 Google Play 商店。

发布轨道:

  • internal(默认)- 内部测试
  • alpha - Alpha 测试
  • beta - Beta 测试
  • production - 正式发布

选项:

  • --apk=路径 - APK 文件路径
  • --aab=路径 - AAB 文件路径
  • --rollout=百分比 - 分阶段推出百分比(0-100)
  • --release-notes=说明 - 此版本的发布说明
  • --release-notes-file=文件 - 包含发布说明的文件
  • --skip-upload-apk - 跳过 APK/AAB 上传(仅元数据)
  • --skip-upload-metadata - 跳过元数据上传
  • --skip-upload-images - 跳过截图和图片上传
  • --dry-run - 验证但不实际发布

示例:

deployand publish internal --aab=./build/app.aab
deployand publish beta --rollout=50 --release-notes="错误修复和改进"
deployand publish production --aab=./app-release.aab --release-notes-file=./CHANGELOG.md
deployand publish alpha --dry-run

配置

DeployAnd 在项目根目录使用 deployand.yml 配置文件:

app:
  package_name: "com.example.myapp"
  name: "我的应用"

google_play:
  service_account_json: "./google-play-service-account.json"

build:
  type: "android"  # android, flutter, react-native
  gradle_file: "./app/build.gradle"

signing:
  keystore_path: "./keystore/release.keystore"
  keystore_password: "${KEYSTORE_PASSWORD}"
  key_alias: "release"
  key_password: "${KEY_PASSWORD}"

metadata:
  default_language: "zh-CN"
  title: "我的精彩应用"
  short_description: "适合每个人的优秀应用"
  full_description: "这是一个全面的描述..."

tracks:
  internal:
    rollout_percentage: 100
  beta:
    rollout_percentage: 50
  production:
    rollout_percentage: 10

全局选项

所有命令都支持以下全局选项:

  • --verbose - 显示更多调试信息
  • --silent - 除错误外不显示任何内容
  • --help - 显示命令帮助

开发

克隆仓库后,运行:

bundle install

运行测试:

bundle exec rspec

构建 gem:

rake build

贡献

欢迎在 GitHub 上提交错误报告和拉取请求:https://github.com/deployand/deployand

许可证

该 gem 在 MIT 许可证 条款下作为开源软件提供。