关于 gpd-cli
使用 `gpd` 命令行工具管理 Google Play Developer Console 的技能,涵盖发布、应用数据、变现、分析和迁移,并为重要操作设置安全规则。
主要功能
- 01上传构建版本并管理发布
- 02配置分阶段发布与商店详情
- 03管理评价、测试者和应用质量指标
- 04操作商品、订阅与购买
- 05迁移 Fastlane 元数据
适用场景
- 01将应用发布到内部或正式轨道
- 02分阶段推出或暂停正式发布
- 03检查应用健康状况与用户反馈
- 04导入或导出 Fastlane 商店元数据
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ rudrankriyam/ gpd-cli-skills --skill gpd-cli安装后在 Claude Code 中输入/gpd-cli确认已加载。
详细介绍
Google Play Developer CLI
使用 gpd 命令行工具管理 Google Play Developer Console。
相关技能
gpd-cli-usage:命令发现、标志、身份验证和输出约定gpd-release-flow:端到端的轨道发布和逐步推出gpd-submission-health:提交前检查和验证gpd-metadata-sync:商店详情、素材和 Fastlane 元数据gpd-ppp-pricing:区域定价工作流gpd-build-lifecycle:构建处理和发布状态gpd-betagroups:Beta 测试者和分发gpd-id-resolver:解析软件包、轨道和变现 ID
前提条件
gpd --version
export GPD_SERVICE_ACCOUNT_KEY='{"type": "service_account", ...}'
gpd auth status
gpd auth check --package com.example.app
凭据处理。 优先让
gpd指向具有0600权限的密钥文件(chmod 600 key.json),或在运行时从密钥管理器获取密钥,而不是将原始 JSON 粘贴到环境变量中。 内联使用export GPD_SERVICE_ACCOUNT_KEY='{...}'会使密钥泄露到 shell 历史记录和进程环境中(可通过ps、/proc和子 进程查看)。请使用专用的最小权限服务账号,仅授予任务所需的 Play Console 权限,并且切勿将密钥提交到源代码 管理系统。
CLI 用法
- 使用
gpd --help和gpd <area> --help确认命令和标志。 - 默认输出为精简 JSON;需要易读的输出时使用
--pretty。 - 执行破坏性操作前,尽可能使用
--dry-run。 - 破坏性操作需要
--confirm(例如:暂停、回滚、删除)。
发布
上传与发布
gpd publish upload app.aab --package com.example.app
gpd publish release --package com.example.app --track internal --status draft
gpd publish release --package com.example.app --track production --status inProgress --version-code 123
gpd publish status --package com.example.app --track production
gpd publish tracks --package com.example.app
分阶段推出
gpd publish rollout --package com.example.app --track production --percentage 10
gpd publish promote --package com.example.app --from-track beta --to-track production
gpd publish halt --package com.example.app --track production --confirm
gpd publish rollback --package com.example.app --track production --confirm
编辑生命周期
gpd publish edit create --package com.example.app
gpd publish edit list --package com.example.app
gpd publish edit validate EDIT_ID --package com.example.app
gpd publish edit commit EDIT_ID --package com.example.app
gpd publish edit delete EDIT_ID --package com.example.app
gpd publish upload app.aab --package com.example.app --edit-id EDIT_ID --no-auto-commit
商店详情
gpd publish listing get --package com.example.app
gpd publish listing update --package com.example.app --locale en-US --title "My App"
gpd publish details get --package com.example.app
gpd publish details update --package com.example.app --contact-email [email protected]
图片
gpd publish images list phoneScreenshots --package com.example.app --locale en-US
gpd publish images upload icon icon.png --package com.example.app --locale en-US
gpd publish images delete phoneScreenshots IMAGE_ID --package com.example.app --locale en-US
gpd publish images deleteall featureGraphic --package com.example.app --locale en-US
gpd publish assets upload ./assets --package com.example.app
gpd publish assets spec
gpd publish deobfuscation upload mapping.txt --package com.example.app --type proguard --version-code 123
gpd publish internal-share upload app.aab --package com.example.app
测试者
gpd publish testers list --package com.example.app --track internal
gpd publish testers add --package com.example.app --track internal --group [email protected]
评论
gpd reviews list --package com.example.app --min-rating 1 --max-rating 3
gpd reviews list --package com.example.app --include-review-text --scan-limit 200
gpd reviews reply --package com.example.app --review-id REVIEW_ID --text "Thank you!"
Android 运行状况
gpd vitals crashes --package com.example.app --start-date 2024-01-01 --end-date 2024-01-31
gpd vitals anrs --package com.example.app --start-date 2024-01-01 --end-date 2024-01-31
gpd vitals excessive-wakeups --package com.example.app --start-date 2024-01-01 --end-date 2024-01-31
gpd vitals slow-rendering --package com.example.app --start-date 2024-01-01 --end-date 2024-01-31
gpd vitals slow-start --package com.example.app --start-date 2024-01-01 --end-date 2024-01-31
gpd vitals errors issues search --package com.example.app --query "NullPointerException" --interval last30Days
gpd vitals errors reports search --package com.example.app --query "crash" --interval last7Days --deobfuscate
gpd vitals errors counts get --package com.example.app
gpd vitals errors counts query --package com.example.app --start-date 2024-01-01 --end-date 2024-01-31
gpd vitals anomalies list --package com.example.app --metric crashRate --time-period last30Days
变现
商品
gpd monetization products list --package com.example.app
gpd monetization products get sku123 --package com.example.app
gpd monetization products create --package com.example.app --product-id sku123 --type managed --default-price 990000
gpd monetization products update --package com.example.app sku123 --status inactive
gpd monetization products delete --package com.example.app sku123
gpd monetization onetimeproducts list --package com.example.app
gpd monetization onetimeproducts get sku123 --package com.example.app
gpd monetization onetimeproducts create --package com.example.app --product-id sku123 --type consumable
gpd monetization onetimeproducts update --package com.example.app sku123 --default-price 1990000
gpd monetization onetimeproducts delete --package com.example.app sku123
订阅
gpd monetization subscriptions list --package com.example.app
gpd monetization subscriptions get sub123 --package com.example.app
gpd monetization subscriptions create --package com.example.app --product-id sub123 --file subscription.json
gpd monetization subscriptions update --package com.example.app sub123 --file subscription.json
gpd monetization subscriptions patch --package com.example.app sub123 --file subscription.json --update-mask basePlans
gpd monetization subscriptions delete --package com.example.app sub123 --confirm
gpd monetization subscriptions archive --package com.example.app sub123
gpd monetization subscriptions batchGet --package com.example.app --ids sub1,sub2,sub3
gpd monetization subscriptions batchUpdate --package com.example.app --file batch-update.json
基本方案与优惠
gpd monetization baseplans activate --package com.example.app sub123 plan456
gpd monetization baseplans deactivate --package com.example.app sub123 plan456
gpd monetization baseplans delete --package com.example.app sub123 plan456 --confirm
gpd monetization baseplans migrate-prices --package com.example.app sub123 plan456 --region-code US --price-micros 999000
gpd monetization baseplans batch-migrate-prices --package com.example.app sub123 --file migrate.json
gpd monetization baseplans batch-update-states --package com.example.app sub123 --file states.json
gpd monetization offers list --package com.example.app sub123 plan456
gpd monetization offers create --package com.example.app sub123 plan456 --offer-id offer789 --file offer.json
gpd monetization offers get --package com.example.app sub123 plan456 offer789
gpd monetization offers delete --package com.example.app sub123 plan456 offer789 --confirm
gpd monetization offers activate --package com.example.app sub123 plan456 offer789
gpd monetization offers deactivate --package com.example.app sub123 plan456 offer789
gpd monetization offers batchGet --package com.example.app sub123 plan456 --offer-ids offer1,offer2
gpd monetization offers batchUpdate --package com.example.app sub123 plan456 --file offers.json
gpd monetization offers batchUpdateStates --package com.example.app sub123 plan456 --file states.json
购买
gpd purchases verify --package com.example.app --token TOKEN --product-id sku123
gpd purchases voided list --package com.example.app --start-time 2024-01-01T00:00:00Z --type product
gpd purchases products acknowledge --package com.example.app --product-id sku123 --token TOKEN
gpd purchases products consume --package com.example.app --product-id sku123 --token TOKEN
gpd purchases subscriptions cancel --package com.example.app --subscription-id sub123 --token TOKEN
gpd purchases subscriptions refund --package com.example.app --subscription-id sub123 --token TOKEN
资金交易命令。
purchases subscriptions refund和purchases subscriptions cancel会转移实际资金并影响客户的 订阅。只有在用户明确要求执行该项操作,并确认软件包、订阅 ID 和令牌后,才运行这些命令。支持时请先使用--dry-run运行,并在实际执行前向用户展示结果。
权限
gpd permissions users list --developer-id DEV_ID
gpd permissions users create --developer-id DEV_ID --email [email protected] --developer-permissions CAN_VIEW_FINANCIAL_DATA_GLOBAL
gpd permissions grants create --package com.example.app --email [email protected] --app-permissions CAN_REPLY_TO_REVIEWS
授予访问权限的命令。
permissions users create和permissions grants create会授予某人访问开发者账号或 应用的权限(包括财务数据和评论权限)。只有在用户明确提出要求,并确认电子邮件地址和要授予的具体 权限后,才运行这些命令。遵循最小权限原则,支持时先使用--dry-run运行,并在实际执行前向用户展示结果。
分析
gpd analytics query --package com.example.app --start-date 2024-01-01 --end-date 2024-01-31
迁移
Fastlane Supply
gpd migrate fastlane validate --dir fastlane/metadata/android
gpd migrate fastlane export --package com.example.app --output fastlane/metadata/android
gpd migrate fastlane export --package com.example.app --include-images --locales en-US,de-DE
gpd migrate fastlane import --package com.example.app --dir fastlane/metadata/android
gpd migrate fastlane import --package com.example.app --dir fastlane/metadata/android --replace-images
gpd migrate fastlane import --package com.example.app --dir fastlane/metadata/android --skip-images --dry-run
Agent 最佳实践
- 默认输出 JSON - 所有命令均输出精简 JSON
- 使用
--pretty在调试时输出易读的 JSON - 执行破坏性操作前使用
--dry-run - 检查退出码:0=成功,2=身份验证失败,3=权限被拒绝,4=验证错误,5=速率受限,6=网络错误,7=未找到,8=冲突
- 复杂的多步骤发布使用编辑生命周期,配合
--edit-id和--no-auto-commit
常见工作流
发布到内部轨道
gpd publish upload app.aab --package com.example.app
gpd publish release --package com.example.app --track internal --status completed
分阶段推出到生产环境
gpd publish release --package com.example.app --track production --status inProgress --version-code 123
gpd publish rollout --package com.example.app --track production --percentage 5
gpd publish rollout --package com.example.app --track production --percentage 50
gpd publish rollout --package com.example.app --track production --percentage 100
监控应用运行状况
gpd vitals crashes --package com.example.app --start-date 2024-01-01 --end-date 2024-01-31
gpd reviews list --package com.example.app --min-rating 1 --max-rating 2
从 Fastlane 迁移
gpd migrate fastlane validate --dir fastlane/metadata/android
gpd migrate fastlane import --package com.example.app --dir fastlane/metadata/android --dry-run
gpd migrate fastlane import --package com.example.app --dir fastlane/metadata/android