'DevEco 26 / uni-app 鸿蒙包 pack.info 仍为 Beta1 的定位与修复'
DevEco 26 / uni-app 鸿蒙包 pack.info 仍为 Beta1 的定位与修复
1. 现象与判定依据#
AGC 拒审文案:「使用了 HarmonyOS beta 版本的 API」。本地 hvigor 发行构建可成功产出已签名 .app,与编译失败无关。
AGC 扫描的是 HAP 元数据,典型字段:
文件
路径
拒审值
期望值
pack.info
summary.modules[].apiVersion.releaseType
Beta1
Release / release
module.json
app.apiReleaseType
Beta1
Release
自检:解压 .app(zip)读取根目录 pack.info,或检查 entry/build/release/outputs/default/pack.info。
2. 与工程配置的关系#
以下修改必要但不充分:
build-profile.json5:所有products移除compatibleSdkVersionStage(如beta6)release产品compatibleSdkVersion使用正式 API 串(如5.0.5(17))oh-package.json5:发行工程不依赖@uni_modules/hmr-for-uni-app(其compatibleSdkVersionStage与 Beta abc 易触发higher sdkReleaseType)
仅做上述工程侧修改后,pack.info.releaseType 仍可能为 Beta1——根因在 DevEco SDK 的 releaseType 元数据,由 ets-loader 写入 HAP。
3. DevEco 26:releaseType 的实际来源#
hvigor 构建日志(app-harmony/.hvigor/outputs/build-logs/build.log)可定位:
etsLoaderPath: ...\sdk\default\openharmony\ets\build-tools\ets-loader
etsLoaderReleaseType: Beta1
Change app api release type with class="hljs-string">'Beta1'
sdkInfo: false:class="hljs-number">26:class="hljs-number">26.0.class="hljs-number">0.23:Beta1结论:ArkTS 编译链读取 openharmony/ets,不是 hms/ets。
社区旧方案(API 10~11)仅修改 hms/toolchains/uni-package.json 在 DevEco 26 上无效。
.hvigor/cache/project-config.json 中 etsLoaderPath 亦指向 openharmony\ets\build-tools\ets-loader。
4. SDK 文件清单(sdk\default)#
需将 releaseType(及 sdk-pkg.json 的 stage)从 Beta* 改为 Release:
openharmony(决定 pack.info,优先)
openharmony/ets/oh-uni-package.json ← ets-loader 直接读取
openharmony/js/oh-uni-package.json
openharmony/native/oh-uni-package.json
openharmony/previewer/oh-uni-package.json
openharmony/toolchains/oh-uni-package.json
sdk-pkg.json ← data.releaseType, data.stagehms(HarmonyOS 组件描述,建议同步)
hms/ets/uni-package.json
hms/js/uni-package.json
hms/native/uni-package.json
hms/previewer/uni-package.json
hms/toolchains/uni-package.json4.1 误报陷阱#
仅校验 hms/**/uni-package.json 全部为 Release 不能证明可上架;openharmony/**/oh-uni-package.json 或 sdk-pkg.json 仍为 Beta1 时,产物 pack.info 不变。
5. 修复流程#
- 退出 HBuilderX、DevEco Studio(避免 SDK 目录文件锁)
- 批量 patch 上述 json(
"releaseType": "Beta1"→"Release";sdk-pkg.json中"stage": "Beta1"→"Release") - 校验:
openharmony/ets/oh-uni-package.json+sdk-pkg.json均为 Release - 删除
unpackage/dist/build/app-harmony全目录(含.hvigor缓存;仅删oh_modules不够) - HBuilderX:发行 → App-Harmony-本地打包
- 上传前复检
pack.info→apiVersion.releaseType
Windows 下 patch SDK 文件若遇 EPERM,需管理员权限并确保 IDE 进程已退出。
6. 中间产物对照(便于 diff 排查)#
发行构建后若仍为 Beta,可逐级查看:
entry/build/release/intermediates/process_profile/default/module.json → apiReleaseType
entry/build/release/intermediates/loader/default/loader.json → byteCodeHarInfo.*.compatibleSdkVersionStage
entry/build/release/outputs/default/pack.info → releaseType
build/outputs/release/pack.info → APP 级 pack.infoloader.json 中依赖 HAR 的 compatibleSdkVersionStage: "beta1" 来自预编译 abc,通常不影响主模块 apiReleaseType;主模块 Beta 标记仍由 ets-loader 的 SDK releaseType 决定。
7. 长期方案#
- 安装 Release 渠道 DevEco Studio + HarmonyOS SDK(Help → About HarmonyOS SDK,
releaseType为 Release) - SDK 升级可能重置
Beta1,每次上架前复检pack.info - 手工改
sdk\default为权宜之计,非官方支持路径
8. 环境参考(脱敏)#
项
版本
HBuilderX
5.07(vue3)
DevEco Studio
26.0.0.461
compileSdkVersion
26.0.0
compatibleSdkVersion(release)
5.0.5(17)
targetSdkVersion
6.0.0(20)
参考文章:
- SegmentFault:《针对「您的应用使用了HarmonyOS beta版本的API」的解决方法》(API 早期,仅 toolchains):https://segmentfault.com/a/1190000046645959
- 51CTO:《HarmonyOS 上架失败,第一次上架 beta 版应用》:https://ost.51cto.com/answer/21609
- 51CTO:《HarmonyOS 打包的时候如何指定使用发布版本 API》:https://ost.51cto.com/answer/25662
- DCloud 问答:《鸿蒙应用无法上架 — 提示使用 beta 版本的 api》:https://ask.dcloud.net.cn/question/218732
官方文档:
- uni-app 鸿蒙运行和发行(beta API):https://uniapp.dcloud.net.cn/tutorial/harmony/runbuild.html#beta-api
- HarmonyOS 版本说明:https://developer.huawei.com/consumer/cn/doc/harmonyos-releases/overview-allversion
- 华为 AGC 鸿蒙应用帮助:https://developer.huawei.com/consumer/cn/doc/app/agc-help-harmonyoserror-0000001651912985

如果本文吸引了你,为你带来了灵感,帮助,麻烦你轻轻点击【推荐】,
你的热心评论,推荐,是我分享文章的强大动力之一。谢谢阅读!
作者:CatcherX
主页:http://catcherX.cnblogs.com
关于我:热爱IT技术、擅于用技术解决实际应用问题,目前专攻Web,网络应用开发。
.Net平台下的ASP.NET MVC;
WinForm(CS端管理系统、数据采集分析、网络应用)开发工作;
熟悉数据库SqlServer开发,Oracle管理技术;
前端Html,Css,JavaScript,Ajax;
涉猎网络安全,运维,电工基础;闲谈文学艺术。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。 或邮件:CatcherXue(at)hotmail(dot)com 联系我,非常感谢。
在艰苦环境下依然是乐观、豁达的心境,少些抱怨,但非怯懦,这何尝不是一种境界。面对各式人群,要懂得了解、体谅,宽容他们,懂得为人处世的法则,要懂得欣赏阳春白雪与下里巴人,才不至于靡靡之音与曲高和寡。这样生活或许会更和谐,美好。
相关文章
评论