ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

uni-app x 鸿蒙平台 manifest.json 模块配置完全指南(app-harmony distribute modules)

uni-app x 鸿蒙平台 manifest.json 模块配置完全指南(app-harmony distribute modules) uni-app x 鸿蒙平台 manifest.json 模块配置完全指南app-harmony distribute modules【免费下载链接】uni-appA cross-platform framework using Vue.js项目地址: https://gitcode.com/gh_mirrors/un/uni-app鸿蒙HarmonyOS平台是 uni-app x 跨端框架的重要目标平台之一。本文围绕项目manifest.json中的app-harmony - distribute - modules节点系统讲解鸿蒙平台各内置模块系统定位、腾讯地图、华为登录、支付宝/微信支付、uni-push、一键登录、实人认证等的配置方式、自动添加摇树机制、版本差异与权限配套并结合本仓库源码给出可直接照抄的完整配置示例。读完本文你将能够在 uni-app x 项目中准确配置鸿蒙平台模块理解模块与module.json5权限声明之间的对应关系避免打包运行时出现模块未配置或权限未签名授权等问题。一、manifest.json与鸿蒙平台配置入口manifest.json是 uni-app x 项目的配置文件用于设置应用名称、版本、图标、平台分发信息等位于项目根目录。其中app-harmony节点专用于 HarmonyOS 平台兼容性要求 HBuilderX 4.61它在配置项总表中的定义参见 manifest.md 的 HarmonyOS 配置章节| 属性 | 类型 | 兼容性 | 描述 | | :- | :- | :- | :- | | distribute | object | HarmonyOS: 4.61 | HarmonyOS 分发配置 |app-harmony节点在 HBuilderX 中对应manifest 可视化界面的鸿蒙 App 配置其源码视图位于manifest.json的app-harmony - distribute节点下。distribute下除本文主角modules外还包含bundleName应用包名、icons图标、splashScreens启动页、deviceTypes支持的设备类型、deviceArchs支持的 CPU 架构、no-debug等与鸿蒙打包发行相关的配置这些内容在 鸿蒙运行与发行文档 中有更详细的展开。本仓库 src/manifest.json 中的app-harmony节点即为一个真实的完整示例可作为参考{ app-harmony: { distribute: { bundleName: io.dcloud.uniappx, modules: { uni-payment: { alipay: {}, wxpay: {} }, uni-location: { system: {} }, uni-push: {}, uni-map: { tencent: {} }, uni-verify: {}, uni-facialVerify: {}, uni-oauth: { huawei: { client_id: 6917567445824957002 }, weixin: { appid: wxd1b990d3136e369c } }, uni-share: { weixin: { appid: wxd1b990d3136e369c } } }, icons: { foreground: package/D-1024.png, background: package/background-white.png }, splashScreens: { startWindowIcon: package/icon256.png }, deviceTypes: [phone, tablet], deviceArchs: [arm64-v8a], no-debug: true } } }可以看到uni-oauth、uni-share等模块可以携带client_id、appid等参数分别对应华为登录客户端 ID、微信开放平台 AppID这类带参数模块与空对象模块的区分在后续各小节中会逐一说明。二、鸿蒙模块的自动添加摇树机制与其他平台不同鸿蒙平台的内置模块配置有一套**基于使用情况自动添加tree-shaking / 摇树**的机制HBuilderX 4.63 之前的版本鸿蒙平台不支持根据使用情况自动添加模块开发者必须在app-harmony - distribute - modules中手动声明所需模块HBuilderX 4.63 及之后的版本鸿蒙平台支持根据使用情况自动添加模块。即当代码中真正调用了某模块对应的 API如uni.getLocation、uni.login、uni.requestPayment时编译期会自动把对应模块纳入打包无需手工配置。注意provider 机制的模块除外如支付、定位类模块仍需自行添加实际使用到的 provider 所对应的模块例如指定使用支付宝还是微信支付、使用系统定位还是第三方定位。这一点与 uni-app x 内置模块摇树机制的通用说明 保持一致。仍建议在modules节点中显式声明业务所需模块既保证 4.63 之前版本的兼容也让模块依赖关系一目了然。各模块均可在 HBuilderX 的 manifest 可视化界面鸿蒙 App 配置中勾选本文以下内容统一以源码视图的 JSON 写法为准。三、系统定位模块uni-location模块节点uni-locationHBuilderX 4.61 之前版本为uni-getLocation启用后uni.getLocation接口内即可使用系统定位能力。对应manifest.json内的模块配置如下{ modules: { uni-location: { system: {} } } }该配置的语义是在定位模块内启用system系统定位provider。从 manifest.md 的 distribute modules 配置项列表 可以看到模块表中登记的名称是uni-location-systemHarmonyOS: 4.61与本仓库src/uni_modules/uni-location-system目录一一对应该目录的 readme.md 明确说明其职责为实现获取当前位置信息使用系统定位功能。注意鸿蒙平台的系统定位支持返回gcj02 坐标及逆地址解析因此对于三方 SDK 定位的需求并不强烈目前此模块会默认加载使用此模块还需要配置定位权限准确位置及大致位置参考 鸿蒙平台权限配置。关于权限配置本仓库鸿蒙工程的 module.json5 展示了requestPermissions的标准写法定位相关权限声明如下{ name: ohos.permission.APPROXIMATELY_LOCATION, // 大致位置模糊定位 reason: $string:permission_location_tips, usedScene: { abilities: [EntryAbility], when: inuse } }, { name: ohos.permission.LOCATION, // 精确位置 reason: $string:permission_location_tips, usedScene: { abilities: [EntryAbility], when: inuse } }需要说明ohos.permission.LOCATION准确位置与ohos.permission.APPROXIMATELY_LOCATION大致位置属于user_grant用户授权类型权限——在module.json5中声明后使用时系统会弹出授权弹窗由用户决定。若在鸿蒙真机/模拟器上遇到运行所需的权限没有签名授权类报错可对照 鸿蒙运行与发行文档的权限配置指南 检查module.json5的声明与签名证书资料是否完整。四、腾讯地图模块uni-map-tencent模块节点uni-map子项tencent腾讯地图模块支持在map组件内加载腾讯地图。对应manifest.json内的模块配置如下{ modules: { uni-map: { tencent: {} } } }注意鸿蒙平台的腾讯地图组件如需使用定位相关能力需要依赖定位模块HBuilderX 4.61之前依赖uni-getLocation-system模块HBuilderX 4.61之后改为依赖uni-location-system模块。也就是说若你的map组件要显示当前定位请同时在modules中配置uni-location.system腾讯地图 SDK 的 Key 配置在鸿蒙工程的module.json5中本仓库示例工程通过 metadata 方式注入metadata: [ { name: TENCENT_MAP_KEY, value: } ]开发者需将value替换为在腾讯位置服务申请的地图 Key否则map组件无法正常加载瓦片数据。五、华为登录模块uni-oauth-huawei模块节点uni-oauth子项huawei华为登录uni.login接口内使用华为账号体系登录。对应manifest.json内的模块配置如下{ modules: { uni-oauth: { huawei: {} } } }当使用华为登录时还需在huawei节点内补充从 AGCAppGallery Connect申请到的客户端 ID例如本仓库示例工程中的写法huawei: { client_id: 6917567445824957002 }。此外manifest.md 显示uni-oauth自 HBuilderX 4.75 起还支持weixin子项微信 OAuth 模块其参数为微信开放平台申请的应用 ID{ modules: { uni-oauth: { huawei: { client_id: xxx }, weixin: { appid: wxd1b990d3136e369c } } } }六、支付模块uni-payment-alipay 与 uni-payment-wxpay支付类模块属于前文强调的provider 机制模块——即使代码中调用了uni.requestPayment也必须显式配置实际使用的支付渠道不会被自动摇树添加。支付宝支付 uni-payment-alipay模块节点uni-payment子项alipayuni.requestPayment接口使用支付宝支付。对应manifest.json内的模块配置如下{ modules: { uni-payment: { alipay: {} } } }微信支付 uni-payment-wxpay模块节点uni-payment子项wxpayuni.requestPayment接口使用微信支付。对应manifest.json内的模块配置如下{ modules: { uni-payment: { wxpay: {} } } }需要同时支持两种渠道时把两个子项并列写在uni-payment下即可见本文第一节的完整示例。支付能力通常还涉及商户号、签名证书等商家资质配置这部分在支付模块的 provider 侧完成manifest.json中仅负责声明启用哪个渠道。七、统一推送模块uni-push模块节点uni-push对应 uni-push 2.0 推送能力。启用后应用可接收服务端下发的推送消息。对应manifest.json内的模块配置如下{ modules: { uni-push: {} } }该模块为无参数模块空对象即可。鸿蒙端推送相关的能力说明与厂商配置可参考 uni-push 文档。另需注意uniPush 初始化时可能涉及读取 OAID对应ohos.permission.APP_TRACKING_CONSENT权限若需要在鸿蒙端使用该能力可参照 鸿蒙权限配置指南 在module.json5中声明。八、一键登录模块uni-verify模块节点uni-verify提供一键登录能力基于运营商网关取号。对应manifest.json内的模块配置如下{ modules: { uni-verify: {} } }该模块为无参数模块。一键登录通常需要与 uniCloud 及运营商服务配合使用服务端配置不在manifest.json的modules范围内。九、实人认证模块uni-facialVerify模块节点uni-facialVerify提供 uni 实人认证人脸核身能力。对应manifest.json内的模块配置如下{ modules: { uni-facialVerify: {} } }该模块为无参数模块启用后在鸿蒙端即可调用实人认证相关 API。由于涉及摄像头与人脸数据采集实际使用时应确保应用已具备ohos.permission.CAMERA等相机权限可通过 鸿蒙权限配置指南 中的方案补充声明并遵守应用商店对生物识别数据采集的合规要求。十、模块配置速查表与使用建议结合 manifest.md 的 distribute modules 配置项列表将鸿蒙平台各模块的节点名、参数与作用汇总如下| 模块名HBuilderX 4.61 | 配置写法 | 作用 | 是否 provider 机制需显式声明 | | :- | :- | :- | :- | | uni-location-system |uni-location: { system: {} }|uni.getLocation系统定位支持 gcj02 与逆地址解析 | 是 | | uni-map-tencent |uni-map: { tencent: {} }|map组件加载腾讯地图 | 是 | | uni-oauth |uni-oauth: { huawei: {} }| 华为登录4.75 可加weixin子项 | 是 | | uni-share |uni-share: { weixin: {} }| 微信分享HarmonyOS: 4.75 | 是 | | uni-payment-alipay |uni-payment: { alipay: {} }|uni.requestPayment支付宝支付 | 是 | | uni-payment-wxpay |uni-payment: { wxpay: {} }|uni.requestPayment微信支付 | 是 | | uni-push |uni-push: {}| uni-push 2.0 推送 | 否 | | uni-verify |uni-verify: {}| 一键登录 | 否 | | uni-facialVerify |uni-facialVerify: {}| uni 实人认证 | 否 |实践建议升级到 HBuilderX 4.63以享受鸿蒙模块自动添加摇树能力但 provider 机制模块定位、支付务必保持显式配置否则运行时 API 无对应实现注意历史节点名差异HBuilderX 4.61之前定位模块节点为uni-getLocation若项目由旧版本创建升级后需同步迁移到uni-locationuni-location-system模块与权限联动声明定位模块后必须在鸿蒙工程 module.json5 的requestPermissions中补充ohos.permission.LOCATION、ohos.permission.APPROXIMATELY_LOCATION等权限声明并配好签名证书否则真机运行会出现权限类报错带参数模块uni-oauth的client_id/appid、uni-share的appid等参数需要从对应开放平台申请后填入缺失参数会导致登录、分享调起失败所有模块配置均可通过 HBuilderX 的 manifest 可视化界面鸿蒙 App 配置操作源码视图与可视化界面双向同步。十一、从 manifest 到鸿蒙工程模块与底层工程的对应关系manifest.json中的模块声明最终会反映到鸿蒙原生工程的模块加载与权限配置上。本仓库中可直接对照验证的路径包括模块声明入口src/manifest.json 的app-harmony.distribute.modules节点是理解哪些模块被启用的第一现场模块实现载体src/uni_modules/下的uni-location-system、uni-map-common、uni-oauth、uni-payment-*等目录其中 uni-location-system 的 readme 说明了该模块在鸿蒙端编译为 ArkTS 的实现路径UTS 插件机制utssdk/app-harmony目录存放鸿蒙实现权限与元数据声明src/harmony-configs/entry/src/main/module.json5 中的requestPermissions、metadata如TENCENT_MAP_KEY配置项权威定义docs/collocation/manifest.md 中app-harmony、distribute、modules各层级的字段表列出了每个模块的兼容性版本多为 HarmonyOS: 4.61uni-share/uni-oauth.weixin为 4.75权限配置总纲docs/tutorial/harmony/runbuild.md 中的鸿蒙权限配置指南涵盖 system_grant / user_grant / 受限权限的分类与申请流程。综合以上内容即可确认鸿蒙平台模块配置的本质是在 manifest 中声明能力、在module.json5中声明权限与 SDK 参数、由编译期摇树机制自动打包对应 UTS 模块实现的三段式协作。掌握这一链路后无论是排查地图不显示支付调不起还是定位无权限等问题都能快速定位到对应的配置节点。【免费下载链接】uni-appA cross-platform framework using Vue.js项目地址: https://gitcode.com/gh_mirrors/un/uni-app创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表