自动提交及发布 Android 安装包到 Google Play、小米、vivo、华为市场

1,570 阅读3分钟

前言

本工具的作用是实现一键包体自动上传及发布到应用市场,目前已接入 Google Play、小米、vivo、华为,接入本工具后就不再需要登录市场的后台手动上传,更加便捷和节省时间。 github.com/mikeFei1000…

环境准备

brew install jq
python3 -m pip install crypto
python3 -m pip install pycryptodome
python3 -m pip install cryptography
python3 -m pip install requests_toolbelt
python3 -m pip install requests
python3 -m pip install google-api-python-client
python3 -m pip install oauth2client

jq 是一个命令行 JSON 处理器

pycryptodome、crypto、cryptography 是 Python 加解密库

requests_toolbelt 是 Python 大文件上传库

requests 是 Python 更便捷的网络库

google-api-python-client Google api 客户端库 for Python

接入前服务的申请

  1. 登录vivo开放平台,点击账号-账号管理-api管理,或点击产品-应用分发-开发-API接口进入

  2. 点击api管理

  3. 点击立即开通,开通成功vivo开放平台给开发者分配 access_key 和 access_secret

  1. 登录小米开放平台,进入应用管理

  2. 点击自动发布接口

  3. 下载公钥、获取私钥

  1. 登录AppGallery Connect网站,选择“用户与访问”。选择左侧导航栏的“API密钥 > Connect API”,点击“创建”

  2. 在“名称”列输入自定义的客户端名称,“项目”保持默认值“N/A”,选择对应的“角色”,点击“确认”

  3. 客户端创建成功后在客户端信息列表中记录“客户端ID”和“密钥”的值

  1. 登录 Google API 控制台。
  2. 打开“凭据”页面。如果系统提示,请选择已启用 Android Management API 的项目。
  3. 点击创建凭据 > 服务帐号密钥
  4. 从下拉菜单中选择新的服务帐号。输入服务帐号的名称。
  5. 选择您的首选密钥类型,然后点击创建。您的新公钥/私钥对已生成并下载到您的计算机,也是此密钥的唯一副本。您负责安全存储该密钥。
  6. 打开 IAM 页面。如果出现提示,请选择已启用 Android Management API 的项目。
  7. 点击添加
  8. 将您刚刚创建的服务帐号添加为成员,然后选择 Android Management User 角色。
  9. 点击保存
  10. (可选,但强烈建议执行此步骤)通过向现有项目成员授予 Owner 角色来添加其他项目所有者。

准备构建文件并设置参数

config.json 的结构
{
  "appName": "",
  "packageName": "",
  "appgallery": {
    "appId": "",
    "client_id": "",
    "client_secret": "",
    "releaseType": 1
  },
  "xiaomi": {
    "user_name": "",
    "private_key": ""
  },
  "vivo": {
    "access_key": "",
    "access_secret": ""
  }
}

release-note-zh-CN.txt 、release-note-zh-HK.txt、release-note-en-US.txt 对应语言的新版本简介

dev.api.public.cer 小米公钥文件

使用介绍

. appgallery-publisher.sh $apk_filepath
python3 mi-publisher.py $apk_filepath
python3 vivo-publisher.py $apk_filepath
python3 google-publisher-service-account.py -apk_file $apk_filepath

配合 CI/CD-Jenkins 工具

Api 官方文档

小米应用自动发布接口

华为更新在架应用详情

vivoAPI接口传包

Google Play Developer API

问题 QA

AttributeError: module 'time' has no attribute 'clock' in Python 3.8

检查您是否正在使用 PyCrypto,如果是,请将其卸载并安装PyCryptodome,它是 PyCrypto 的一个分支
正如项目问题页面上提到的,PyCrypto 已死
由于这两个库可以共存,因此这也可能是一个问题
pip3 uninstall PyCrypto
pip3 install -U PyCryptodome

参考文档

juejin.cn/post/723508…