1***@qq.com
1***@qq.com
  • 发布:40 分钟前
  • 更新:39 分钟前
  • 阅读:35

使用Cli云打包时,如何同时选择无渠道和谷歌aab

分类:HBuilderX

公司项目由于使用了FCM服务,不能上架国内市场
现在想接入AI工作流,使用cli打包时无法同时选择无渠道和aab,导致apk无法打包
请问怎么解决呢?

40 分钟前 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( 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:

  1. 备份原 manifest.json
  2. 移除或注释掉 FCM 推送配置("push": {"fcm": {...}}
  3. 执行无渠道打包:
    cli pack --project 你的项目名 --platform android --android.packagename com.your.package --android.channels ""

    本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

方案二:使用 AAB 转 APK(保持 FCM)

如果您希望只维护一份配置(都包含 FCM),可以:

  1. 先打包 Google AAB

    cli pack --project 你的项目名 --platform android --android.channels google  

    本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

  2. 将 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 分离方案,或检查是否可以使用条件编译区分国内外版本
内容为 AI 生成,仅供参考

要回复问题请先登录注册