@ohos-cpf/3rdloop 0.0.11 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cli.js +2 -2
- package/package.json +1 -1
- package/vendor/Server/Routes/controllers/LoopEngineController.js +36 -3
- package/vendor/Server/Routes/controllers/OrchestratorController.js +193 -9
- package/vendor/Server/Skills/flutter-build-test/SKILL.md +252 -0
- package/vendor/Server/Skills/flutter-build-test/assets/BUILDENV_TEMPLATE.md +42 -0
- package/vendor/Server/Skills/flutter-build-test/assets/BUILD_REPORT_TEMPLATE.md +64 -0
- package/vendor/Server/Skills/flutter-build-test/assets/README_SECTION_TEMPLATE.md +78 -0
- package/vendor/Server/Skills/flutter-build-test/references/BUILD_TROUBLESHOOTING.md +128 -0
- package/vendor/Server/Skills/flutter-build-test/references/DOC_UPDATE_GUIDE.md +119 -0
- package/vendor/Server/Skills/flutter-build-test/references/FLVM_GUIDE.md +89 -0
- package/vendor/Server/Skills/flutter-build-test/scripts/build-matrix.cjs +374 -0
- package/vendor/Server/Skills/flutter-build-test/scripts/locate-example.cjs +189 -0
- package/vendor/Server/Skills/flutter-build-test/scripts/update-buildenv.cjs +171 -0
- package/vendor/Server/Skills/flutter-code-use/SKILL.md +316 -0
- package/vendor/Server/Skills/flutter-code-use/references/event-channel.md +440 -0
- package/vendor/Server/Skills/flutter-code-use/references/federated.md +295 -0
- package/vendor/Server/Skills/flutter-code-use/references/ffi-binding-translate.md +130 -0
- package/vendor/Server/Skills/flutter-code-use/references/ffi-compile-from-source.md +169 -0
- package/vendor/Server/Skills/flutter-code-use/references/ffi-fetch-at-build.md +161 -0
- package/vendor/Server/Skills/flutter-code-use/references/ffi-prebuilt-bundle.md +175 -0
- package/vendor/Server/Skills/flutter-code-use/references/ffi-rhttp-guide.md +235 -0
- package/vendor/Server/Skills/flutter-code-use/references/ffi-rust-cross-compile.md +514 -0
- package/vendor/Server/Skills/flutter-code-use/references/ffi.md +220 -0
- package/vendor/Server/Skills/flutter-code-use/references/method-channel.md +643 -0
- package/vendor/Server/Skills/flutter-code-use/references/monorepo.md +188 -0
- package/vendor/Server/Skills/flutter-code-use/references/ohos-api-pitfalls.md +717 -0
- package/vendor/Server/Skills/flutter-code-use/references/platform-view.md +448 -0
- package/vendor/Server/Skills/flutter-code-use/references/pure-dart.md +180 -0
- package/vendor/Server/Skills/flutter-code-use/references/texture.md +459 -0
- package/vendor/Server/Skills/flutter-demo-code-generator/SKILL.md +270 -0
- package/vendor/Server/Skills/flutter-demo-code-generator/assets/PAGE_TEMPLATES.md +544 -0
- package/vendor/Server/Skills/flutter-demo-code-generator/references/CODE_STANDARDS.md +328 -0
- package/vendor/Server/Skills/flutter-demo-code-generator/references/DEMO_DOC_PARSING.md +126 -0
- package/vendor/Server/Skills/flutter-demo-code-generator/references/EXAMPLES.md +629 -0
- package/vendor/Server/Skills/flutter-demo-code-generator/scripts/validate-flutter-demo.cjs +268 -0
- package/vendor/Server/Skills/flutter-demo-doc-generator/SKILL.md +227 -0
- package/vendor/Server/Skills/flutter-demo-doc-generator/assets/DEMO_DOC_TEMPLATE.md +78 -0
- package/vendor/Server/Skills/flutter-demo-doc-generator/references/COVERAGE_REPORT_PARSING.md +174 -0
- package/vendor/Server/Skills/flutter-demo-doc-generator/references/EXAMPLES.md +162 -0
- package/vendor/Server/Skills/flutter-demo-doc-generator/references/MCP_TOOL_GUIDE.md +123 -0
- package/vendor/Server/Skills/flutter-demo-doc-generator/references/OUTPUT_FORMAT.md +190 -0
- package/vendor/Server/Skills/flutter-demo-doc-generator/references/QUALITY_CHECKLIST.md +83 -0
- package/vendor/Server/Skills/flutter-demo-doc-generator/scripts/validate-skill.cjs +259 -0
- package/vendor/Server/Skills/flutter-library-demo-coverage/SKILL.md +175 -0
- package/vendor/VERSION +3 -3
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
# Monorepo 插件鸿蒙适配
|
|
2
|
+
|
|
3
|
+
## 适用条件
|
|
4
|
+
|
|
5
|
+
- 仓库中包含多个 Flutter 包/插件
|
|
6
|
+
- 包之间存在 `path` 依赖关系
|
|
7
|
+
- 典型结构:主包 + platform_interface + 各平台实现包
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 第一部分:工程搭建
|
|
12
|
+
|
|
13
|
+
### 拓扑分析
|
|
14
|
+
|
|
15
|
+
1. 扫描仓库中所有 `pubspec.yaml` 文件
|
|
16
|
+
2. 构建依赖关系图(特别是 `path` 依赖)
|
|
17
|
+
3. 确定适配顺序(被依赖的包先适配)
|
|
18
|
+
|
|
19
|
+
**常见 Monorepo 结构**:
|
|
20
|
+
```
|
|
21
|
+
{repo_root}/
|
|
22
|
+
├── packages/
|
|
23
|
+
│ ├── {plugin_name}/ # 主包(app-facing)
|
|
24
|
+
│ ├── {plugin_name}_platform_interface/ # 平台接口
|
|
25
|
+
│ ├── {plugin_name}_android/ # Android 实现
|
|
26
|
+
│ ├── {plugin_name}_ios/ # iOS 实现
|
|
27
|
+
│ └── {plugin_name}_web/ # Web 实现
|
|
28
|
+
├── melos.yaml # Melos 配置(如有)
|
|
29
|
+
└── pubspec.yaml # 可能的根 pubspec
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Melos 兼容处理
|
|
33
|
+
|
|
34
|
+
如果仓库使用 Melos 管理:
|
|
35
|
+
|
|
36
|
+
1. **检查 `melos.yaml`**:了解包的组织方式和脚本定义
|
|
37
|
+
2. **使用 Melos 的 bootstrap**:`melos bootstrap` 会自动链接所有包
|
|
38
|
+
3. **但编译仍需手动**:Melos 不处理 OHOS 编译,需手动逐包编译
|
|
39
|
+
4. **跳过 Melos 的 clean**:鸿蒙适配过程中避免执行 `melos clean`,会清理 ohos 目录
|
|
40
|
+
|
|
41
|
+
如果没有 Melos,手动管理 path 依赖即可。
|
|
42
|
+
|
|
43
|
+
### 逐包创建工程
|
|
44
|
+
|
|
45
|
+
按拓扑顺序,对每个需要原生实现的包执行工程创建:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# 纯 Dart 包 / platform_interface:无需创建,只需 flutter pub get
|
|
49
|
+
cd {pure_dart_package} && flutter pub get
|
|
50
|
+
|
|
51
|
+
# 联合插件的 ohos 实现包:创建新包
|
|
52
|
+
cd {repo_root}/packages
|
|
53
|
+
flutter create -t plugin --platforms ohos {plugin_name}_ohos
|
|
54
|
+
|
|
55
|
+
# 独立插件:在现有目录中添加 ohos
|
|
56
|
+
cd {standalone_plugin}
|
|
57
|
+
flutter create -t plugin --platforms ohos .
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 路径依赖协调
|
|
61
|
+
|
|
62
|
+
所有包之间的 `path` 依赖必须正确:
|
|
63
|
+
|
|
64
|
+
```yaml
|
|
65
|
+
# ohos 实现包引用 platform_interface
|
|
66
|
+
dependencies:
|
|
67
|
+
{plugin_name}_platform_interface:
|
|
68
|
+
path: ../{plugin_name}_platform_interface
|
|
69
|
+
|
|
70
|
+
# 主包引用 ohos 实现包
|
|
71
|
+
dependencies:
|
|
72
|
+
{plugin_name}_ohos:
|
|
73
|
+
path: ../{plugin_name}_ohos
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**注意**:修改任一包的 `pubspec.yaml` 后,所有依赖它的包都需要重新 `flutter pub get`。
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 第二部分:编码实现
|
|
81
|
+
|
|
82
|
+
### 适配顺序
|
|
83
|
+
|
|
84
|
+
严格按照依赖拓扑排序:
|
|
85
|
+
|
|
86
|
+
1. **底层工具包**(无原生依赖的纯 Dart 包)— 通常无需修改
|
|
87
|
+
2. **platform_interface 包** — 通常无需修改,但检查是否有平台判断代码
|
|
88
|
+
3. **创建 ohos 实现包** — 核心编码工作
|
|
89
|
+
4. **主包** — 添加 ohos 平台声明(`default_package`)
|
|
90
|
+
|
|
91
|
+
### ohos 实现包编码
|
|
92
|
+
|
|
93
|
+
ohos 实现包的编码根据实际通信模式选择对应的模式:
|
|
94
|
+
- 如果是 MethodChannel → 参考同目录下 `method-channel.md` 的编码指导
|
|
95
|
+
- 如果含 EventChannel → 参考同目录下 `event-channel.md` 的编码指导
|
|
96
|
+
- 如果含 PlatformView → 参考同目录下 `platform-view.md` 的编码指导
|
|
97
|
+
|
|
98
|
+
### 多包中的 Channel 名称
|
|
99
|
+
|
|
100
|
+
Monorepo 中可能有多个 Channel(主包一个、子功能包各一个),**每个 Channel 名称都必须与 Dart 层一致**。
|
|
101
|
+
|
|
102
|
+
查找所有 Channel 定义的方法:
|
|
103
|
+
- 在 `platform_interface` 包中搜索 `MethodChannel(`
|
|
104
|
+
- 在现有的 `_android` / `_ios` 实现包中搜索 Channel 名称
|
|
105
|
+
- 确保 ohos 实现中使用完全相同的字符串
|
|
106
|
+
|
|
107
|
+
### 编译顺序
|
|
108
|
+
|
|
109
|
+
逐包编译,确保每一级依赖编译通过后再编译上层:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# 1. 底层纯 Dart 包
|
|
113
|
+
cd packages/base_utils && flutter pub get
|
|
114
|
+
|
|
115
|
+
# 2. platform_interface
|
|
116
|
+
cd ../plugin_platform_interface && flutter pub get
|
|
117
|
+
|
|
118
|
+
# 3. ohos 实现包(核心编译目标,注意flutter build hap在windows环境下使用powershell或者cmd执行)
|
|
119
|
+
cd ../plugin_ohos && flutter pub get && flutter build hap --debug
|
|
120
|
+
|
|
121
|
+
# 4. 主包 — 此阶段只需 pub get,不需要编译
|
|
122
|
+
cd ../plugin && flutter pub get
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**编译修复时**:如果修改了底层包,需要从被修改的包开始重新向上编译。
|
|
126
|
+
|
|
127
|
+
### 处理共享代码包
|
|
128
|
+
|
|
129
|
+
部分 Monorepo 有共享的工具包(如 `{plugin_name}_core`),这些包可能:
|
|
130
|
+
- 纯 Dart → 按同目录下 `pure-dart.md` 处理
|
|
131
|
+
- 含平台判断 → 添加 OHOS 分支
|
|
132
|
+
- 含原生代码 → 需要创建 ohos 目录
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 第三部分:常见编译错误与修复
|
|
137
|
+
|
|
138
|
+
### 1. `Could not resolve package 'xxx'`(依赖解析失败)
|
|
139
|
+
|
|
140
|
+
**原因**:path 依赖路径不正确。
|
|
141
|
+
|
|
142
|
+
**修复**:
|
|
143
|
+
- 检查 `pubspec.yaml` 中的 `path:` 相对路径
|
|
144
|
+
- 路径是相对于当前包的 `pubspec.yaml` 所在目录
|
|
145
|
+
- 修改后需要重新 `flutter pub get`
|
|
146
|
+
|
|
147
|
+
### 2. 上游包修改后下游包编译失败
|
|
148
|
+
|
|
149
|
+
**原因**:修改了 platform_interface 的接口但 ohos 实现包未同步更新。
|
|
150
|
+
|
|
151
|
+
**修复**:
|
|
152
|
+
- 从被修改的包开始,按拓扑顺序重新 `flutter pub get`
|
|
153
|
+
- 确保 ohos 实现包实现了所有新增/修改的接口方法
|
|
154
|
+
|
|
155
|
+
### 3. `The plugin '{plugin_name}' doesn't have a main class defined for the platform 'ohos'`
|
|
156
|
+
|
|
157
|
+
**原因**:主包 `pubspec.yaml` 中声明了 ohos 平台,但实际的 ohos 实现包未正确配置。
|
|
158
|
+
|
|
159
|
+
**修复**:
|
|
160
|
+
- ohos 实现包的 `pubspec.yaml` 中确认 `implements` 和 `platforms.ohos` 正确
|
|
161
|
+
- 主包的 `pubspec.yaml` 中确认 `default_package` 名称正确
|
|
162
|
+
- 执行 `flutter pub get` 刷新依赖
|
|
163
|
+
|
|
164
|
+
### 4. 循环依赖
|
|
165
|
+
|
|
166
|
+
**原因**:Monorepo 中包之间出现了循环依赖。
|
|
167
|
+
|
|
168
|
+
**修复**:
|
|
169
|
+
- 检查依赖关系图,找到循环点
|
|
170
|
+
- 通过接口抽象打破循环(移动共享类型到 platform_interface)
|
|
171
|
+
- 确保 ohos 实现包只依赖 platform_interface,不依赖其他平台实现包
|
|
172
|
+
|
|
173
|
+
### 5. Melos bootstrap 后 ohos 依赖丢失
|
|
174
|
+
|
|
175
|
+
**原因**:`melos bootstrap` 可能不识别 ohos 相关的包或依赖。
|
|
176
|
+
|
|
177
|
+
**修复**:
|
|
178
|
+
- 在 `melos.yaml` 的 `packages` 中确认 ohos 包被包含
|
|
179
|
+
- 或手动在 ohos 包目录执行 `flutter pub get`
|
|
180
|
+
- 确保 `melos.yaml` 中没有排除 ohos 包的 glob 模式
|
|
181
|
+
|
|
182
|
+
### 6. 多包编译时前一个包的 build 产物干扰后续包
|
|
183
|
+
|
|
184
|
+
**原因**:Flutter 构建缓存可能导致包之间干扰。
|
|
185
|
+
|
|
186
|
+
**修复**:
|
|
187
|
+
- 如果出现诡异的编译错误,尝试 `flutter clean` 后重新编译
|
|
188
|
+
- 但注意:只对出问题的包执行 clean,不要全局 clean
|