当前位置: 首页 > news >正文

DevEco 26 / uni-app 鸿蒙包 pack.info 仍为 Beta1 的定位与修复

现象与判定依据

AGC 拒审文案:「使用了 HarmonyOS beta 版本的 API」。本地 hvigor 发行构建可成功产出已签名.app,与编译失败无关。

AGC 扫描的是 HAP 元数据,典型字段:

文件路径拒审值期望值
pack.infosummary.modules[].apiVersion.releaseTypeBeta1Release/release
module.jsonapp.apiReleaseTypeBeta1Release

自检:解压.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 'Beta1' sdkInfo: false:26:26.0.0.23:Beta1

结论:ArkTS 编译链读取openharmony/ets,不是hms/ets
社区旧方案(API 10~11)仅修改hms/toolchains/uni-package.json在 DevEco 26 上无效。

.hvigor/cache/project-config.jsonetsLoaderPath亦指向openharmony\ets\build-tools\ets-loader

4. SDK 文件清单(sdk\default

需将releaseType(及sdk-pkg.jsonstage)从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.stage

hms(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.json

4.1 误报陷阱

仅校验hms/**/uni-package.json全部为Release不能证明可上架;openharmony/**/oh-uni-package.jsonsdk-pkg.json仍为Beta1时,产物pack.info不变。

5. 修复流程

  1. 退出 HBuilderX、DevEco Studio(避免 SDK 目录文件锁)
  2. 批量 patch 上述 json("releaseType": "Beta1""Release"sdk-pkg.json"stage": "Beta1""Release"
  3. 校验:openharmony/ets/oh-uni-package.json+sdk-pkg.json均为 Release
  4. 删除unpackage/dist/build/app-harmony全目录(含.hvigor缓存;仅删oh_modules不够)
  5. HBuilderX:发行 → App-Harmony-本地打包
  6. 上传前复检pack.infoapiVersion.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.info

loader.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. 环境参考(脱敏)

版本
HBuilderX5.07(vue3)
DevEco Studio26.0.0.461
compileSdkVersion26.0.0
compatibleSdkVersion(release)5.0.5(17)
targetSdkVersion6.0.0(20)

参考文章:

  • SegmentFault:《针对「您的应用使用了HarmonyOS beta版本的API」的解决方法》(API 早期,仅 toolchains):https://segmentfault.com/a/1190000046645959
  • 51CTO:《HarmonyOS 上架失败,第一次上架 beta 版应用》:HarmonyOS 上架失败,第一次上架beta版应用,提交审核立刻失败了-鸿蒙开发者社区-51CTO.COM
  • 51CTO:《HarmonyOS 打包的时候如何指定使用发布版本 API》:HarmonyOS 打包的时候如何指定使用发布版本API -鸿蒙开发者社区-51CTO.COM
  • DCloud 问答:《鸿蒙应用无法上架 — 提示使用 beta 版本的 api》:【报Bug】鸿蒙应用无法上架 - DCloud问答

官方文档:

  • uni-app 鸿蒙运行和发行(beta API):uni-app官网
  • HarmonyOS 版本说明:文档中心
  • 华为 AGC 鸿蒙应用帮助:文档中心


如果本文吸引了你,为你带来了灵感,帮助,麻烦你轻轻点击【推荐】,
你的热心评论,推荐,是我分享文章的强大动力之一。谢谢阅读!

作者:CatcherX
主页:http://catcherX.cnblogs.com
关于我:热爱IT技术、擅于用技术解决实际应用问题,目前专攻Web,网络应用开发。
.Net平台下的ASP.NET MVC;
WinForm(CS端管理系统、数据采集分析、网络应用)开发工作;
熟悉数据库SqlServer开发,Oracle管理技术;

http://www.jsqmd.com/news/1087126/

相关文章:

  • DevEco Code的Plan+Build模式
  • Thonny进阶定制:从界面汉化到图标移除的本地化实践指南
  • HS2-HF_Patch:为什么这是《Honey Select 2》玩家的最佳选择?
  • 免费AirPlay投屏终极指南:让Windows电脑变身苹果设备接收器
  • 为什么BiRefNet是解决高分辨率图像分割难题的终极答案?
  • GPU加速的定量MRI参数估计框架GACELLE解析
  • Mermaid终极指南:从文本到专业图表的完整解决方案
  • 终极英雄联盟回放分析工具:ROFL-Player完全使用指南
  • 专注力保护神器:iwck键盘锁定工具终极指南(防止误触、清洁键盘必备)
  • 浅说GEO:与SEO的区别,以及官网结构化该怎么做
  • Vue3 Admin Element Template:如何在10分钟内搭建企业级后台管理系统
  • 从ZeRO-1到ZeRO-3:深入解析DeepSpeed如何通过内存优化策略攻克大模型训练壁垒
  • OWASP Top 10 深度解析:从原理到实战,构建Web应用安全防线
  • 免费解锁百度网盘限速:Python直链解析工具的终极解决方案
  • 5分钟解锁Wand游戏修改器:终极免费增强方案
  • 如何用开源工具快速生成逼真的中国车牌数据?
  • 从零到一:手把手教你部署FastAdmin开发环境
  • EUREKA:面向大模型研发的可归因能力诊断系统
  • 性能测试需求分析实战:从业务模型到可度量指标的完整指南
  • 3步轻松搞定!res-downloader跨平台资源下载器完整指南:从加密视频解密到多平台资源获取
  • 终极植物大战僵尸修改器PVZ Toolkit:3个技巧让你轻松通关无尽模式
  • CANFD全局与通道状态机:RA8M1模式切换与低功耗管理实战
  • 深度剖析虚幻引擎脚本系统:5大实战场景完全指南
  • RA8M1 SCI模块实战:LIN状态寄存器解析与异步通信配置指南
  • 最新量化入门,别把交易认知和代码学习拆开
  • 为什么今年软考论文通过率骤降17.3%?——基于1276份机考答卷的AI语义分析报告(附可复用模板库)
  • WarcraftHelper:3步搞定魔兽争霸3现代化兼容问题的完整解决方案
  • 从零部署到实战:基于TorchVision的Faster R-CNN+ResNet50-FPN目标检测全流程解析
  • Box86终极指南:在ARM设备上运行x86程序的完整教程
  • PVZ Toolkit深度解析:跨版本游戏内存修改器的架构设计与实现原理