配置渠道与灰度发布
在控制台创建渠道,把渠道写进安装包,再按渠道发布更新。
更新于 2026-09-15
本页内容
先选一种用法
只发一个安装包时,不用配置,渠道就是 default。要分别给华为、小米或内部测试人员发更新,再按本页设置。
下面以 Android 的 huawei 渠道为例:先在控制台创建渠道,再把同一个名称写进 App,重新打包、上传,最后发布更新。
渠道有什么用
同一应用可以给不同渠道发不同更新。例如,华为用户先更新 10%,小米用户更新 100%。这里的百分比指符合条件的设备比例。
| 你填写的内容 | 示例 | 填在哪里 |
|---|---|---|
| 渠道名称 | 华为应用市场 | 控制台,方便自己辨认 |
| 渠道 code | huawei | 控制台和 App 配置,两边必须一致 |
| 原生版本 | 1.0.0 | Android 的 versionName / iOS 的版本号 |
1. 在控制台创建渠道
登录控制台,打开应用,进入要发布的应用。
切到渠道目录,点击创建渠道。
渠道 code 填
huawei,渠道名称填“华为应用市场”。保持启用热更新开启,忽略时间戳/内容指纹检查关闭。原生包下载地址可以先留空。
保存,确认列表出现
huawei。
code 只能使用 1–64 个小写字母、数字、点、下划线或短横线,创建后不能修改。默认渠道 default 不需要再创建。
也可以在已选好应用的工程根目录执行:
pakta createChannel --name huawei --code huawei
pakta channels --platform android2. 把渠道写进 App
选自己的平台操作。渠道在安装包里,不能通过 new Pakta() 或上传命令修改。改完必须重新构建并安装 App。
Android
打开 android/app/src/main/AndroidManifest.xml,在已有的 <application> 内添加下面一行,保留原有属性和 <activity>:
<meta-data android:name="channel" android:value="huawei" />然后在 android 目录构建:
.\gradlew.bat assembleRelease./gradlew assembleRelease没有配置 product flavor 的工程通常生成 android/app/build/outputs/apk/release/app-release.apk。安装这份 APK,并保留它供下一步上传。
如果已有多个 flavor,可把值改为 ${PAKTA_CHANNEL},在 android/app/build.gradle 的现有 flavor 内分别配置 manifestPlaceholders,例如 manifestPlaceholders = [PAKTA_CHANNEL: "huawei"]。每个 flavor 都要提供值,再运行对应的 Release 构建任务。
iOS
打开 App target 使用的 ios/你的工程名/Info.plist,在根 <dict> 内加入:
<key>channel</key>
<string>appstore</string>如果工程由 Xcode 自动生成 Info.plist,在 App target 的 Info → Custom iOS Target Properties 添加 String 类型的 channel,值填 appstore。不要修改 Pods 的 Info.plist。
控制台创建同名 code appstore。重新 Archive,导出并保留 IPA,安装对应构建。
HarmonyOS
完成HarmonyOS 接入后,打开或创建 harmony/entry/src/main/resources/rawfile/meta.json,增加 channel 字段:
{
"channel": "huawei"
}已有其他字段时保留它们。SDK 的 Hvigor 插件在构建时保留渠道,并写入版本和构建时间。用 DevEco Studio 重新签名、构建 .app,安装并保留这份文件。
Expo
手工维护 android / ios 目录时,按上面原生配置操作。使用 Expo prebuild 或 EAS 时,在 expo.plugins 加入:
{
"expo": {
"plugins": [
["rn-update", { "channel": "huawei" }]
]
}
}channel 会同时写入 Android Manifest 和 iOS Info.plist。不同平台使用不同渠道时,使用不同构建配置。default 不需要插件。详见Expo 接入。
3. 检查并上传安装包
回到含 package.json 的应用根目录:
pakta selectApp --platform android
pakta parseApk ./android/app/build/outputs/apk/release/app-release.apk
pakta uploadApk ./android/app/build/outputs/apk/release/app-release.apk --channel huawei先看解析结果中的渠道是否为 huawei、版本号是否正确,再上传。--channel huawei 只检查包内渠道;报不一致时,回到配置文件修正并重新打包。
| 平台 | 检查命令 | 上传命令 |
|---|---|---|
| Android APK | parseApk 路径 | uploadApk 路径 --channel huawei |
| Android AAB | parseAab 路径 | uploadAab 路径 --channel huawei |
| iOS | parseIpa 路径 | uploadIpa 路径 --channel appstore |
| HarmonyOS | parseApp 路径 | uploadApp 路径 --channel huawei |
回到控制台,打开原生包体并刷新,应能看到该渠道和版本。没有这条记录时,发布窗口不会出现对应目标。
4. 向渠道发布更新
先按首次发布生成 .ppk,再执行:
pakta publish .pakta/output/android.ppk --platform android --name fix-001 --channel huawei --packageVersion 1.0.0 --rollout 10 --no-interactive把 1.0.0 换成刚上传安装包的版本。测试应用可以用 100,生产应用先用小比例验证。网页操作见控制台发布步骤。
需要一次发布到多个渠道时,在工程根目录创建:
[
{ "channel": "huawei", "packageVersion": "1.0.0", "rollout": 10 },
{ "channel": "xiaomi", "packageVersion": "1.0.0", "rollout": 100 }
]pakta publish .pakta/output/android.ppk --platform android --name fix-001 --targets targets.json --no-interactive这两个渠道都必须已有对应原生包。iOS、Android、HarmonyOS 分别打包和发布,不能共用一份 .ppk。
调整比例、停止与恢复
在热更新包中找到版本,点目标上的渠道/版本标签,调整比例;或点发布编辑多个目标。每次都先检查预览,再确认提交。
停止某个版本继续发布:对该目标选择取消发布。
停止整个渠道更新:渠道目录 → 配置 → 关闭启用热更新 → 保存设置。
恢复旧版本:找到稳定的历史包,对相同渠道和原生版本选择回滚为全量。
停止更新、缩小比例都不会撤销设备已经安装的更新。恢复旧版本也要等设备检查、下载并按 App 的设置生效。详细步骤见停止与回滚。
内部测试怎么安排
创建 internal 渠道,按本页把渠道写进测试安装包。每次先向 internal 发布并验证,再向生产渠道发布。测试人员要安装 internal 包;在控制台改名称不会改变手机所属渠道。
