HarmonyOS鸿蒙Next中遇到一个奇葩问题关于cloud目录保存(已解决)
HarmonyOS鸿蒙Next中遇到一个奇葩问题关于cloud目录保存(已解决) 我的flutter版本如下:
flutter --version
Flutter 3.35.8-ohos-0.0.3 • channel [user-branch] • https://gitcode.com/openharmony-tpc/flutter_flutter.git
Framework • revision 8957a7cf95 (5 weeks ago) • 2026-04-23 11:07:45 +0800
Engine • hash 6b24e1b529bc46df7ff397667502719a2a8b6b72 (revision 035316565a) (7 months ago) • 2025-10-21 14:28:01.000Z
Tools • Dart 3.9.2 • DevTools 2.48.0
用的Flutter引擎地址:https://gitcode.com/openharmony-tpc/flutter_flutter.git
然后, 我参考的云空间同步的示例代码是: https://gitcode.com/HarmonyOS_Samples/guide-snippets/tree/master/CoreFile/AppCloudSync
我在这个示例中使用我的包名,来运行,demo里的功能都是正常的;
但是, 在我的Flutter工程里, 我把这个示例代码原封不动,挪到我的Flutter工程的 ohos 里面去,运行测试保存文件到 cloud 目录 , 就一直报错说没权限 。
错误码一直报: 13900012
我就搞不懂, 我自己创建一个 鸿蒙的工程就是正常的。 一到我flutter工程里,就不行了, 一直说没权限,不管创建文件夹、还是创建文件。
更多关于HarmonyOS鸿蒙Next中遇到一个奇葩问题关于cloud目录保存(已解决)的实战教程也可以访问 https://www.itying.com/category-93-b0.html
解决了。
我把
"cloudFileSyncEnabled": true //
写成了:
cloudStructuredDataSyncEnabled
真的太无语了!!!!!
第一个是: 端云文件同步能力开关
第二个是: 端云结构化数据同步能力开关
cloudFileSyncEnabled主要针对文件(如文档、图片等)的同步;而 cloudStructuredDataSyncEnabled则针对结构化数据(如数据库记录、应用配置状态等)的同步。它们对应底层不同的系统能力与同步模型,开发者应根据应用实际需要同步的数据类型来选择启用相应的能力。
更多关于HarmonyOS鸿蒙Next中遇到一个奇葩问题关于cloud目录保存(已解决)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
从现象看,纯 HarmonyOS 工程同包名能跑,而迁到 Flutter 工程的 ohos 目录后报 13900012,更像是 Flutter 工程生成的原生侧“应用身份/签名/配置/运行目录”与示例工程不一致,不一定是 Dart 层问题。
建议优先对比这几项:
-
Flutter 工程 ohos/AppScope/app.json5 里的 bundleName、appIdentifier,以及签名 profile 对应的应用,是否和 AGC/云空间同步开通能力的应用完全一致;不要只改示例代码里的包名。
-
entry/src/main/module.json5 中示例涉及的 permissions、metadata、abilities 等配置是否完整迁入。Flutter 模板或重新生成 ohos 目录时,原生配置容易被覆盖。
-
保存路径不要硬编码示例工程里的目录,运行时用当前 UIAbility 的 context 获取 cloud 目录/应用沙箱目录,再做 mkdir/open/write;确认打印出的实际路径和原生 demo 里的路径属于同一个应用沙箱。
-
确认真机登录华为账号、云空间能力可用,并使用同一签名方式安装测试包。模拟器、未登录账号、签名 profile 不匹配时,权限表现可能和原生 demo 不一致。
如果这些都一致,建议把两边运行时的 bundleName、appIdentifier、实际 cloudDir 路径和 13900012 出错的具体文件操作点做脱敏对比,通常能定位到是配置没迁全,还是 Flutter ohos 工程的应用身份和开通云能力的应用不是同一个。
问题通常因未正确配置云存储权限或调用API参数导致。检查module.json5中ohos.permission.READ_CLOUD_STORAGE、WRITE_CLOUD_STORAGE权限,并确认使用cloudStorage.getDirectory方法时传入的路径格式正确(如cloud:/前缀)。
已在 Flutter 鸿蒙工程中解决。根本原因是 module.json5 缺少云同步能力声明,导致无法访问 cloud 目录,报错 13900012(权限不足)。
在 entry/src/main/module.json5 的 abilities 数组中对应 Ability 配置内,添加:
"capabilities": [
{ "name": "cloudFileSync" }
]
同时确认:
- 应用已在 AGC 开通云空间服务,且包名一致。
- 代码中通过
context获取cloudDir而非直接拼接路径。
补全能力声明后,原报错消失,文件正常创建。

