欢迎到专业群( HBuilderX技术交流群 ) 咨询,群中有相关专业的管理员和群友。
根据您的描述,这是一个典型的 FCM 推送通道与打包格式绑定限制 导致的 CLI 自动化打包冲突。
核心原因:
当项目 manifest 中勾选了 FCM 推送通道 时,HBuilderX 云打包会强制要求使用 Google Play 渠道(渠道标识为 google),而 Google Play 渠道又强制要求输出 AAB 格式。这导致您无法同时选择"无渠道"(用于国内 APK)和"Google AAB"(用于海外)进行一次性打包。
解决方案:
由于 CLI 的 pack 命令目前不支持单次执行同时输出"无渠道 APK"和"Google 渠道 AAB",您需要分两次执行 CLI 打包命令,通过动态修改配置或指定不同渠道来实现:
方案一:分步打包(推荐)
第一步:打包 Google AAB(含 FCM)
# 指定 google 渠道,自动输出 aab 格式
cli pack --project 你的项目名 --platform android --android.packagename com.your.package --android.channels google
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
第二步:打包无渠道 APK(需临时移除 FCM)
由于 FCM 与 google 渠道绑定,打无渠道包前需要临时修改 manifest.json:
- 备份原 manifest.json
- 移除或注释掉 FCM 推送配置(
"push": {"fcm": {...}})
- 执行无渠道打包:
cli pack --project 你的项目名 --platform android --android.packagename com.your.package --android.channels ""
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
方案二:使用 AAB 转 APK(保持 FCM)
如果您希望只维护一份配置(都包含 FCM),可以:
-
先打包 Google AAB:
cli pack --project 你的项目名 --platform android --android.channels google
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
-
将 AAB 转为 APK:
使用 Google 官方的 bundletool 将 AAB 转换为通用 APK:
java -jar bundletool.jar build-apks --bundle=app-release.aab --output=app-release.apks --mode=universal
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
解压 .apks 文件即可获得 universal.apk,可用于非 Google Play 渠道分发。
方案三:离线打包(完全控制)
如果云打包限制无法满足需求,建议采用 Android 离线打包:
- 下载 DCloud 离线 SDK
- 在 Android Studio 中配置 FCM 和渠道
- 通过 Gradle 命令同时构建不同渠道的 APK 和 AAB
参考文档:
注意事项:
- 提交 Google Play 时必须使用
google 渠道标识,否则无法上架
- AAB 格式不能通过 ADB 直接安装,需使用 bundletool 测试或上传 Play Console 后下载
- 如果项目同时需要国内推送和 FCM,建议考虑使用 UniPush(支持国内厂商通道)+ FCM 分离方案,或检查是否可以使用条件编译区分国内外版本
1 个回复
Ask小助手 - Ask社区AI助手
根据您的描述,这是一个典型的 FCM 推送通道与打包格式绑定限制 导致的 CLI 自动化打包冲突。
核心原因:
当项目 manifest 中勾选了 FCM 推送通道 时,HBuilderX 云打包会强制要求使用 Google Play 渠道(渠道标识为
google),而 Google Play 渠道又强制要求输出 AAB 格式。这导致您无法同时选择"无渠道"(用于国内 APK)和"Google AAB"(用于海外)进行一次性打包。解决方案:
由于 CLI 的
pack命令目前不支持单次执行同时输出"无渠道 APK"和"Google 渠道 AAB",您需要分两次执行 CLI 打包命令,通过动态修改配置或指定不同渠道来实现:方案一:分步打包(推荐)
第一步:打包 Google AAB(含 FCM)
第二步:打包无渠道 APK(需临时移除 FCM)
由于 FCM 与 google 渠道绑定,打无渠道包前需要临时修改 manifest.json:
"push": {"fcm": {...}})方案二:使用 AAB 转 APK(保持 FCM)
如果您希望只维护一份配置(都包含 FCM),可以:
先打包 Google AAB:
将 AAB 转为 APK:
使用 Google 官方的
bundletool将 AAB 转换为通用 APK:方案三:离线打包(完全控制)
如果云打包限制无法满足需求,建议采用 Android 离线打包:
参考文档:
注意事项:
google渠道标识,否则无法上架要回复问题请先登录或注册
公告
更多>相关问题