HarmonyOS鸿蒙Next中使用不同的签名文件导致应用功能缺失
HarmonyOS鸿蒙Next中使用不同的签名文件导致应用功能缺失 工程目录如图:

签名配置如图:

products配置如图:

RGMapH模块、GISCollection模块、demo模块分别是独立的应用,AoGIS是这些独立的应用依赖的库模块,我要把RGMapH和AoGIS打包给别人测试,使用releaseRGMapH签名打包后,再启动RGMapH模块连接真机进行调试时,在products中的signingConfig字段填releaseRGMapH说是发布证书不能用于调试,只有填default才能打开我这个应用里面的打开地图的功能,填rgmaph打开地图是空白的,这是为什么?
更多关于HarmonyOS鸿蒙Next中使用不同的签名文件导致应用功能缺失的实战教程也可以访问 https://www.itying.com/category-93-b0.html
厉害~这个“坑”确实很隐蔽。
-
如果在更早的阶段(比如
EntryAbility的onCreate或者模块初始化时)直接创建文件夹,此时应用上下文(Context)和UI资源可能还未完全就绪,或者外部存储的读写权限尚未完全确认,导致创建操作实际上是失败的或者路径获取是旧的、错误的。 -
应用启动后(正确的做法):
windowStage.loadContent是应用启动流程中UI界面即将加载完成的关键节点。在这个回调里执行:reqPermissionsFromUser:确保用户授权了读写文件的权限。- 创建目标文件夹:使用
fs.mkdirSync等API成功创建了download-应用名称文件夹。
这样,当应用内部的地图SDK去读取本地地图数据时,它能正确找到新创建的、以当前应用包名命名的文件夹路径,从而加载出正确的地图文件。
我看你截图里的代码:
if(!fs.accessSync(GJPpath))... 的逻辑,是放在 picker.DocumentViewPicker.save() 的 then 回调里。这意味着这个文件夹只有当你点击了“保存”操作,并选择了路径后才会被创建。
这与地图启动时的初始化逻辑是分离的。
我推测你最终的解决方案是:在 windowStage.loadContent 的回调里,在 setTimeout 之前,添加了一段纯粹的 fs.mkdirSync 代码,用于为地图SDK提前创建好默认的数据目录(比如 download/你的包名/cache/ 这种固定路径)。这样即便地图SDK在用户手动保存文件前就初始化,也能读取到正确的文件夹。
更多关于HarmonyOS鸿蒙Next中使用不同的签名文件导致应用功能缺失的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
用发布证书是不能调试用的。
如果用的是《Map Kit(地图服务)》,打开地图空白,参考《地图服务使用报错》。
选rgmaph时,看看这里rgmaph相对应的配了吗。

另外在发布和调试之间切换时,注意这里的选择:


