# marketPlugin **Repository Path**: liwei163/market-plugin ## Basic Information - **Project Name**: marketPlugin - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-24 - **Last Updated**: 2026-05-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 应用市场发布助手 Android Studio 插件,用于在当前 Android 项目中完成 APK 构建、应用分发上传、飞书通知和应用市场审核状态查询。 插件内部直接处理上传和通知逻辑,不需要在业务工程里额外 `apply` 发布脚本,也不需要维护 `pgyer-publisher.gradle.kts`。Gradle 只用于执行 `:app:assembleRelease` 生成 release APK。 ## 功能概览 - 构建 `app` 模块 release APK。 - 构建前自动对工程 Git 和 Flutter Git 执行 `git pull --ff-only`。 - 支持展示工程 Git 分支和 Flutter 工程 Git 分支。 - 支持蒲公英真实上传。 - 支持荣耀真实 APK 上传、绑定文件、可选自动提交审核。 - 预留华为、小米、OPPO、vivo 渠道配置和查询入口。 - 支持飞书机器人发布通知。 - 支持查询各应用市场审核/发布状态。 - 配置按 Android Studio 项目单独保存,不同 Android 项目互不影响。 - 发布配置区域支持折叠/展开。 - 输入内容不隐藏;执行日志会对 key、secret、webhook 等敏感信息脱敏。 ## 当前渠道支持 | 渠道 | 上传 | 自动提审 | 审核状态查询 | 说明 | | --- | --- | --- | --- | --- | | 蒲公英 | 已支持 | 不涉及 | 不涉及 | 蒲公英不是应用市场,没有审核状态 | | 荣耀 | 已支持 | 已支持 | 已支持 | 支持 `releaseId` 精确查询;无 `releaseId` 时查应用详情 | | 华为 | 预留 | 预留 | 已接入查询 | 上传实现待补齐 | | 小米 | 预留 | 预留 | 已接入查询 | 查询返回可新增/可更新/可改信息等标记 | | OPPO | 预留 | 预留 | 已接入查询 | 从应用详情尝试读取审核/上架状态字段 | | vivo | 预留 | 预留 | 已接入查询 | 不同接口版本返回字段可能不同 | ## 构建插件 ```bash ./gradlew buildPlugin ``` 生成文件: ```text build/distributions/pgyer-studio-plugin-1.0.0.zip ``` ## 安装插件 在 Android Studio 中手动安装: ```text Android Studio -> Settings -> Plugins -> 齿轮图标 -> Install Plugin from Disk ``` 选择: ```text build/distributions/pgyer-studio-plugin-1.0.0.zip ``` 也可以一键安装到本机 Android Studio 插件目录: ```bash ./gradlew installToAndroidStudio ``` 或者: ```bash ./install-to-android-studio.sh ``` 安装完成后会弹出系统对话框,可选择 `稍后重启` 或 `立即重启`。如果 Android Studio 正在运行,需要重启后才会加载新版插件。 指定 Android Studio 版本: ```bash ./gradlew installToAndroidStudio -PandroidStudioVersion=AndroidStudio2025.2.2 ``` 指定插件目录: ```bash ./gradlew installToAndroidStudio -PandroidStudioPluginsDir="$HOME/Library/Application Support/Google/AndroidStudio2025.2.2/plugins" ``` 跳过重启弹框: ```bash ./gradlew installToAndroidStudio -PskipRestartDialog=true ``` ## 使用流程 1. 打开 Android 项目。 2. 右侧工具窗口打开 `蒲公英发布`。 3. 选择发布渠道。 4. 填写对应渠道参数和飞书 Webhook。 5. 点击 `保存配置`。 6. 根据需要点击 `构建并发布`、`构建并上传`、`仅通知` 或 `查询审核状态`。 ## 按钮说明 - `构建并发布`:执行 `:app:assembleRelease`,按勾选渠道发布,然后发送飞书通知。 - `构建并上传`:执行 `:app:assembleRelease`,按勾选渠道上传,不发送飞书通知。 - `仅通知`:读取 `pgyer-publisher/build-info.json` 并发送飞书通知。 - `查询审核状态`:不构建、不上传、不执行 `git pull`,只查询当前勾选渠道的审核/发布状态。 - `保存配置`:保存当前项目的插件配置。 - `清空日志`:清空执行日志和发布结果。 - `刷新Git`:刷新工程 Git 分支和 Flutter Git 分支。 - `收起配置` / `展开配置`:折叠或展开发布配置区域。 ## Git 信息 插件顶部展示 Git 信息: - `工程Git信息`:当前 Android 工程所在 Git 仓库分支。 - `Flutter工程信息`:从 Android 项目的 `settings.gradle(.kts)` 和 `local.properties` 中解析 Flutter 工程路径,然后读取 Flutter 工程 Git 分支。 说明: - 不扫描无关同级目录,避免误识别其它 Flutter 项目。 - 分支信息不是实时监听,点击 `刷新Git` 手动刷新。 - 构建前如果检测到工程 Git 或 Flutter Git,会先执行 `git pull --ff-only`。 - 如果无法快进、没有 upstream 或存在冲突,会停止构建,避免发布旧代码或产生意外 merge。 ## 蒲公英参数 - `蒲公英 API Key`:蒲公英 API Key。 获取方式:登录蒲公英后台,进入账号/API 信息页面,复制 `_api_key` 或 API Key。 - `短链接(可空)`:蒲公英应用短链接。 获取方式:应用上传成功后,在蒲公英应用详情页复制短链接。例如 `https://www.pgyer.com/xxxx` 中的 `xxxx`。 - `安装方式`:`1` 公开,`2` 密码安装,`3` 邀请安装。 - `安装密码`:安装方式为 `2` 时填写。 - `有效期`:默认不传,或选择 `1` 时间范围、`2` 永久。 ## 荣耀参数 - `荣耀 Client ID`:荣耀开发者平台凭证 Client ID。 获取方式:登录荣耀开发者服务平台,进入 `管理中心 -> 开放能力 -> 凭证`,创建或查看 API 密钥,复制 `Client ID`。 - `荣耀 Client Secret`:荣耀开发者平台 API 密钥。 获取方式:同上,在凭证详情中复制 `API密钥` / `Client Secret`。 - `荣耀 AppId(可空)`:荣耀应用 APPID。 获取方式:进入荣耀应用管理/应用详情页查看 `APPID`;也可以留空,让插件通过包名查询。 - `荣耀包名(可空)`:Android 应用包名。 获取方式:查看 `app/build.gradle(.kts)` 里的 `applicationId`,或荣耀应用详情页绑定的包名。 - `荣耀语种`:默认 `zh-CN`,用于绑定 APK 文件。 - `荣耀提审`:勾选后,点击 `构建并发布` 会在上传并绑定 APK 后调用荣耀提交审核接口。 注意:荣耀 Publish-API 不能创建应用。新应用必须先在荣耀开发者服务平台创建安卓应用并绑定包名,然后插件才能上传 APK。 ## 华为参数 - `华为 Client ID`:AppGallery Connect API 客户端 ID。 获取方式:登录 AppGallery Connect,进入用户与访问/Connect API/API 客户端相关页面,创建或查看 API 客户端,复制 `Client ID`。 - `华为 Client Secret`:AppGallery Connect API 客户端密钥。 - `华为 AppId`:华为应用 ID。 获取方式:进入 AppGallery Connect 的 `我的应用 -> 应用详情/应用信息`,复制 `App ID`。 - `华为提审`:预留项,后续华为上传实现会使用。 ## 小米参数 - `小米用户名`:小米开放平台上传接口用户名。 - `小米私钥`:小米开放平台 API 私钥。 - `小米公钥文件`:小米平台提供的 RSA 公钥/证书文件路径。 示例:`/Users/xxx/keys/xiaomi-public.pem` - `小米包名(可空)`:Android 应用包名,未填时从 `applicationId` 兜底。 - `小米应用名(可空)`:小米开放平台应用详情页显示的应用名称。 - `小米上传类型`:`auto` 自动判断,`update` 更新,`new` 新应用。 ## OPPO 参数 - `OPPO Client ID`:OPPO 开放平台 Client ID。 - `OPPO Client Secret`:OPPO 开放平台 Client Secret。 - `OPPO包名(可空)`:Android 应用包名,未填时从 `applicationId` 兜底。 ## vivo 参数 - `vivo Access Key`:vivo 开放平台 Access Key。 - `vivo Access Secret`:vivo 开放平台 Access Secret。 - `vivo包名(可空)`:Android 应用包名,未填时从 `applicationId` 兜底。 ## 飞书通知参数 - `飞书 Webhook`:飞书自定义机器人 Webhook。 获取方式:进入飞书群聊,打开 `群设置 -> 机器人 -> 添加机器人 -> 自定义机器人`,创建后复制 Webhook 地址。 - `通知标题(可空)`:为空时自动使用 `App名称 又有新包了`。 - `通知颜色`:飞书卡片颜色。 - `更新说明`:展示在蒲公英和飞书通知中。 ## 审核状态查询 点击 `查询审核状态` 后,插件会按当前勾选渠道查询状态,并把结果写入: ```text pgyer-publisher/review-status.txt ``` 荣耀自动提审返回的 `releaseId` 会保存到: ```text pgyer-publisher/channel-state.properties ``` 各渠道说明: - 蒲公英:没有应用市场审核状态,提示只有上传处理状态。 - 荣耀:优先使用 `releaseId` 调用 `get-audit-result` 精确查询;没有 `releaseId` 时查询应用详情中的最新审核状态。 - 华为:通过 AppGallery Connect `app-information` 查询 `auditStatus`。 - 小米:通过小米自动发布查询接口判断当前应用是否可新增、可更新或可改信息。 - OPPO:通过 OPPO 应用详情接口尝试读取 `status/audit_status/verify_status/online_status/app_status` 等字段。 - vivo:通过 vivo 开放平台应用详情/状态相关接口尝试读取 `status/auditStatus/audit_status/onlineStatus/versionStatus` 等字段。 ## 本地文件 插件会在当前 Android 项目中生成以下运行状态文件: ```text pgyer-publisher/build-info.json pgyer-publisher/channel-state.properties pgyer-publisher/review-status.txt ``` 这些文件属于本地发布状态,不建议提交到业务项目仓库。 ## 开发说明 源码入口: ```text src/main/kotlin/com/kfb/pgyer/studio/PgyerToolWindowFactory.kt ``` 插件描述: ```text src/main/resources/META-INF/plugin.xml ``` 构建配置: ```text build.gradle.kts ``` ## 注意事项 - 当前固定构建 `app` 模块的 release APK,即执行 `:app:assembleRelease`。 - 当前不支持 AAB。 - 当前不支持 iOS。 - 当前不接入应用宝/Tencent。 - 华为、小米、OPPO、vivo 的上传能力仍处于预留状态,配置和状态查询已在插件中准备好。