expo-harmony-toolkit 1.7.1 → 1.7.3
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/README.en.md +20 -9
- package/README.md +22 -11
- package/build/core/autolinking.d.ts +10 -0
- package/build/core/autolinking.js +421 -0
- package/build/core/build/commands.d.ts +19 -0
- package/build/core/build/commands.js +61 -0
- package/build/core/build/compatibilityShims.d.ts +1 -0
- package/build/core/build/compatibilityShims.js +272 -0
- package/build/core/build/localHar.d.ts +13 -0
- package/build/core/build/localHar.js +337 -0
- package/build/core/build/reporting.d.ts +19 -0
- package/build/core/build/reporting.js +67 -0
- package/build/core/build/rnohCompatibility.d.ts +1 -0
- package/build/core/build/rnohCompatibility.js +38 -0
- package/build/core/build.d.ts +4 -12
- package/build/core/build.js +70 -762
- package/build/core/constants.d.ts +2 -1
- package/build/core/constants.js +3 -2
- package/build/core/dependencyInspection.d.ts +2 -0
- package/build/core/dependencyInspection.js +112 -0
- package/build/core/env.js +1 -1
- package/build/core/report.js +33 -10
- package/build/core/signing.d.ts +2 -0
- package/build/core/signing.js +30 -0
- package/build/core/template/capabilityRegistry.d.ts +9 -0
- package/build/core/template/capabilityRegistry.js +84 -0
- package/build/core/template/expoModulesCoreShim.d.ts +2 -0
- package/build/core/template/expoModulesCoreShim.js +279 -0
- package/build/core/template/metro.d.ts +2 -0
- package/build/core/template/metro.js +213 -0
- package/build/core/template/nativeFiles.d.ts +8 -0
- package/build/core/template/nativeFiles.js +333 -0
- package/build/core/template/renderers/camera.d.ts +4 -0
- package/build/core/template/renderers/camera.js +612 -0
- package/build/core/template/renderers/fileSystem.d.ts +4 -0
- package/build/core/template/renderers/fileSystem.js +814 -0
- package/build/core/template/renderers/imagePicker.d.ts +4 -0
- package/build/core/template/renderers/imagePicker.js +753 -0
- package/build/core/template/renderers/location.d.ts +4 -0
- package/build/core/template/renderers/location.js +836 -0
- package/build/core/template/runtimeShims.d.ts +2 -0
- package/build/core/template/runtimeShims.js +192 -0
- package/build/core/template/support.d.ts +11 -0
- package/build/core/template/support.js +108 -0
- package/build/core/template.d.ts +2 -6
- package/build/core/template.js +47 -3966
- package/build/data/capabilities.js +45 -19
- package/build/data/dependencyCatalog.js +10 -0
- package/build/data/publicDocs.d.ts +11 -0
- package/build/data/publicDocs.js +28 -0
- package/build/data/validatedMatrices.js +9 -1
- package/build/docs/render.d.ts +9 -0
- package/build/docs/render.js +248 -0
- package/build/types.d.ts +12 -0
- package/docs/cli-build.md +1 -1
- package/docs/npm-release.md +1 -0
- package/docs/official-app-shell-sample.md +2 -1
- package/docs/official-minimal-sample.md +2 -1
- package/docs/official-native-capabilities-sample.md +28 -47
- package/docs/official-ui-stack-sample.md +2 -1
- package/docs/signing-and-release.md +3 -0
- package/docs/support-matrix.md +38 -16
- package/package.json +13 -5
- package/docs/v1.5.1-acceptance.md +0 -385
- package/docs/v1.6.0-acceptance.md +0 -193
- package/docs/v1.7.0-acceptance.md +0 -111
- package/docs/v1.7.1-acceptance.md +0 -111
|
@@ -1,385 +0,0 @@
|
|
|
1
|
-
# v1.5.1 验收记录
|
|
2
|
-
|
|
3
|
-
日期:2026-03-27
|
|
4
|
-
|
|
5
|
-
基线:
|
|
6
|
-
|
|
7
|
-
- 仓库:`Expo-Harmony-Toolkit`
|
|
8
|
-
- tag:`v1.5.1`
|
|
9
|
-
- commit:`1a51b0c10f08f5228c2918da3d7722d29c8be95b`
|
|
10
|
-
|
|
11
|
-
## 结论
|
|
12
|
-
|
|
13
|
-
这次 `v1.5.1` 收尾验收只完成了部分目标。
|
|
14
|
-
|
|
15
|
-
- 已确认 npm 包与 Git tag 对齐,`official-ui-stack-sample` 的 `doctor -> init -> sync-template -> bundle -> env` 链路可跑通。
|
|
16
|
-
- `Build Debug Hap(s)` 仍未通过。阻塞点已经从本地工具链缺失与 `ohpm` 无法安装 `.har`,收敛到 ArkTS 编译阶段的 adapter / RNOH 不匹配。
|
|
17
|
-
- 因为没有产出可安装的 debug HAP,所以本次未完成设备侧 SVG、gesture 动画、动画后路由跳转的最终人工运行时验收。
|
|
18
|
-
- npm 已发布 README 的原文内容可读性正常;npm 网页端的实时渲染未能在本次自动化环境中完成最终可视确认。
|
|
19
|
-
|
|
20
|
-
## 环境
|
|
21
|
-
|
|
22
|
-
- macOS `26.3` (`25D125`)
|
|
23
|
-
- Node `v20.19.6`
|
|
24
|
-
- pnpm `10.32.1`
|
|
25
|
-
- npm `10.8.2`
|
|
26
|
-
- DevEco Studio:`/Applications/DevEco-Studio.app`
|
|
27
|
-
- Harmony SDK:`/Applications/DevEco-Studio.app/Contents/sdk`
|
|
28
|
-
- Java:`/usr/bin/java`
|
|
29
|
-
- ohpm:`/Applications/DevEco-Studio.app/Contents/tools/ohpm/bin/ohpm`
|
|
30
|
-
- hvigor:`/Applications/DevEco-Studio.app/Contents/tools/hvigor/bin/hvigorw.js`
|
|
31
|
-
- hdc:`/Applications/DevEco-Studio.app/Contents/sdk/default/openharmony/toolchains/hdc`
|
|
32
|
-
- 在线目标:`127.0.0.1:5555`
|
|
33
|
-
|
|
34
|
-
## 命令结果
|
|
35
|
-
|
|
36
|
-
### 1. Sample 安装
|
|
37
|
-
|
|
38
|
-
执行:
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
cd examples/official-ui-stack-sample
|
|
42
|
-
pnpm install --ignore-scripts
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
结果:
|
|
46
|
-
|
|
47
|
-
- 成功。
|
|
48
|
-
- 继续沿用当前仓库推荐的 `--ignore-scripts` 安装方式。
|
|
49
|
-
|
|
50
|
-
### 2. CLI 验证
|
|
51
|
-
|
|
52
|
-
执行:
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
pnpm run harmony:doctor:strict
|
|
56
|
-
pnpm run harmony:init
|
|
57
|
-
pnpm run harmony:sync-template
|
|
58
|
-
pnpm run harmony:bundle
|
|
59
|
-
pnpm run harmony:env
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
结果:
|
|
63
|
-
|
|
64
|
-
- `doctor --strict`:通过,矩阵识别为 `expo55-rnoh082-ui-stack`。
|
|
65
|
-
- `init`:通过。
|
|
66
|
-
- `sync-template`:通过。
|
|
67
|
-
- `bundle`:初次失败,报 `Cannot find module 'babel-preset-expo'`;修正 sample Babel 解析后复跑通过。
|
|
68
|
-
- `env`:`ready`,本机可定位 DevEco / SDK / ohpm / hvigor / hdc;`signingConfigs` 仍为空,只影响 release HAP,不阻塞 debug 验证。
|
|
69
|
-
|
|
70
|
-
### 3. Debug HAP 构建
|
|
71
|
-
|
|
72
|
-
执行:
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
pnpm run harmony:build:debug
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
结果:
|
|
79
|
-
|
|
80
|
-
- 未通过。
|
|
81
|
-
- 问题拆成了两个阶段:
|
|
82
|
-
|
|
83
|
-
1. 初始失败点
|
|
84
|
-
|
|
85
|
-
- `ohpm install` 无法直接安装 npm 包内分发的本地 `*.har`。
|
|
86
|
-
- 原因是这些 `*.har` 实际上是带 `package/` 前缀的 tarball,`ohpm` 本地安装时期望根目录直接存在 `oh-package.json5`。
|
|
87
|
-
|
|
88
|
-
2. 修正后失败点
|
|
89
|
-
|
|
90
|
-
- toolkit 现在会在 `build-hap` 前先把本地 `*.har` 规范化展开到 `harmony/.expo-harmony/ohpm-local-deps/`,`ohpm install` 随后可通过。
|
|
91
|
-
- `hvigor assembleHap` 继续失败,进入 ArkTS 编译阶段后出现 adapter / RNOH 接口不匹配。
|
|
92
|
-
- 关键现象:
|
|
93
|
-
- `@react-native-oh-tpl/react-native-gesture-handler` 当前包内 `oh-package.json5` 依赖的是 `@rnoh/react-native-openharmony: ^0.72.32`
|
|
94
|
-
- 本仓库公开矩阵固定的是 `@react-native-oh/react-native-harmony@0.82.18`
|
|
95
|
-
- 编译错误集中在 `RNGestureHandlerButton.ts`、`RNGestureHandlerRootView.ts`、`RNGestureHandlerModule.ts` 与 `RNOHPackagesFactory.ets`
|
|
96
|
-
|
|
97
|
-
当前判断:
|
|
98
|
-
|
|
99
|
-
- `Build Debug Hap(s)` 的最终阻塞已经不是本机环境问题,而是当前公开 matrix 下 UI-stack adapter 与 RNOH 运行时的兼容性问题。
|
|
100
|
-
|
|
101
|
-
## 运行时人工验收结论
|
|
102
|
-
|
|
103
|
-
已完成:
|
|
104
|
-
|
|
105
|
-
- `open -a /Applications/DevEco-Studio.app examples/official-ui-stack-sample/harmony` 成功。
|
|
106
|
-
- `hdc list targets` 能列出 `127.0.0.1:5555`。
|
|
107
|
-
|
|
108
|
-
未完成:
|
|
109
|
-
|
|
110
|
-
- 首页启动
|
|
111
|
-
- `Constants.expoConfig?.name` 显示
|
|
112
|
-
- SVG 圆环渲染
|
|
113
|
-
- gesture 触发位移 / 旋转 / 回弹
|
|
114
|
-
- `/details` 路由跳转与返回
|
|
115
|
-
- 动画后路由仍正常
|
|
116
|
-
|
|
117
|
-
原因:
|
|
118
|
-
|
|
119
|
-
- 没有可安装的 debug HAP 产物,无法继续设备侧运行时验收。
|
|
120
|
-
|
|
121
|
-
## npm README 检查
|
|
122
|
-
|
|
123
|
-
### 已确认
|
|
124
|
-
|
|
125
|
-
通过:
|
|
126
|
-
|
|
127
|
-
```bash
|
|
128
|
-
npm view expo-harmony-toolkit readme --json
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
检查到当前已发布 README 原文中包含:
|
|
132
|
-
|
|
133
|
-
- 顶部徽章
|
|
134
|
-
- 相对链接
|
|
135
|
-
- 中英文跳转链接
|
|
136
|
-
- fenced code blocks
|
|
137
|
-
|
|
138
|
-
静态内容层面没有发现 README 被 npm 发布流程截断或丢失关键区块。
|
|
139
|
-
|
|
140
|
-
### 未完成
|
|
141
|
-
|
|
142
|
-
未能完成 npm 网页端的实时可视验收。
|
|
143
|
-
|
|
144
|
-
阻塞:
|
|
145
|
-
|
|
146
|
-
- 直接自动抓取 npmjs 页面受限。
|
|
147
|
-
- 试图补装 Playwright 浏览器 runtime 时,`npx playwright install chrome` 因 npm registry `ECONNRESET` 失败。
|
|
148
|
-
|
|
149
|
-
因此本次对 npm README 的最终结论是:
|
|
150
|
-
|
|
151
|
-
- 已发布内容原文正常。
|
|
152
|
-
- 网页端实际渲染仍待后续在网络正常的浏览器环境中补一次可视确认。
|
|
153
|
-
|
|
154
|
-
## 本次为验收补的修正
|
|
155
|
-
|
|
156
|
-
- [examples/official-ui-stack-sample/babel.config.js](/Users/blackishgreen03/workspace/Expo-Harmony-Plugin/examples/official-ui-stack-sample/babel.config.js)
|
|
157
|
-
- 显式通过 Expo 包根目录解析 `babel-preset-expo`
|
|
158
|
-
- 同时加入 `expo-router/babel`
|
|
159
|
-
- 解决 pnpm workspace 下 `bundle` 无法解析 Babel preset 的问题
|
|
160
|
-
- [src/core/build.ts](/Users/blackishgreen03/workspace/Expo-Harmony-Plugin/src/core/build.ts)
|
|
161
|
-
- 在 `build-hap` 前把 tarball 形态的本地 `*.har` 展开成 `ohpm` 可安装目录
|
|
162
|
-
- 构建后恢复生成的 `oh-package.json5`,避免工作区残留临时 specifier
|
|
163
|
-
- [templates/harmony/entry/src/main/cpp/CMakeLists.txt](/Users/blackishgreen03/workspace/Expo-Harmony-Plugin/templates/harmony/entry/src/main/cpp/CMakeLists.txt)
|
|
164
|
-
- 增加 `.expo-harmony/ohpm-local-deps` 的 RNOH C++ 源码回退查找
|
|
165
|
-
- [tests/build.test.ts](/Users/blackishgreen03/workspace/Expo-Harmony-Plugin/tests/build.test.ts)
|
|
166
|
-
- 补了本地 HAR 规范化与恢复逻辑的测试
|
|
167
|
-
|
|
168
|
-
## 证据
|
|
169
|
-
|
|
170
|
-
- `pnpm test`:`10` 个 suite,`40` 个测试全部通过
|
|
171
|
-
- `pnpm build`:通过
|
|
172
|
-
- `hdc list targets`:返回 `127.0.0.1:5555`
|
|
173
|
-
- `doctor --strict`:识别为 `expo55-rnoh082-ui-stack`,`18 supported, 0 manual, 0 unknown`
|
|
174
|
-
- `build-hap --mode debug`:已推进到 ArkTS 编译阶段,但最终失败,说明本机 DevEco / SDK / hvigor / ohpm 已真正参与构建
|
|
175
|
-
|
|
176
|
-
## 对 v1.5.1 的最终状态判断
|
|
177
|
-
|
|
178
|
-
- `doctor / init / sync-template / bundle / env`:可用
|
|
179
|
-
- `official-ui-stack-sample` runtime 手动验收:未完成
|
|
180
|
-
- `Build Debug Hap(s)`:未通过
|
|
181
|
-
- npm README 已发布原文:正常
|
|
182
|
-
- npm README live page 可视验收:待补
|
|
183
|
-
|
|
184
|
-
## 追加进展(2026-03-27 晚间)
|
|
185
|
-
|
|
186
|
-
这轮继续补验收后,`Build Debug Hap(s)` 已经打通,但设备侧人工验收仍未完成。
|
|
187
|
-
|
|
188
|
-
### 新增验证结果
|
|
189
|
-
|
|
190
|
-
执行:
|
|
191
|
-
|
|
192
|
-
```bash
|
|
193
|
-
pnpm build
|
|
194
|
-
pnpm test -- --runInBand tests/build.test.ts tests/init.test.ts tests/officialUiStackSample.test.ts
|
|
195
|
-
cd examples/official-ui-stack-sample
|
|
196
|
-
pnpm run harmony:build:debug
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
结果:
|
|
200
|
-
|
|
201
|
-
- `pnpm build`:通过。
|
|
202
|
-
- 定向测试:`3` 个 suite、`15` 个测试全部通过。
|
|
203
|
-
- `build-hap --mode debug`:通过,已产出:
|
|
204
|
-
|
|
205
|
-
```text
|
|
206
|
-
examples/official-ui-stack-sample/harmony/entry/build/default/outputs/default/entry-default-unsigned.hap
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
### 为打通 Debug HAP 新补的修正
|
|
210
|
-
|
|
211
|
-
- [src/core/template.ts](/Users/blackishgreen03/workspace/Expo-Harmony-Plugin/src/core/template.ts)
|
|
212
|
-
- 将 autolinking 生成物与 `ts.ts` shim 标记为 build-required managed files
|
|
213
|
-
- `build-hap` 前会强制刷新这些生成文件,但不会顺带覆盖其他用户可漂移模板
|
|
214
|
-
- [src/core/build.ts](/Users/blackishgreen03/workspace/Expo-Harmony-Plugin/src/core/build.ts)
|
|
215
|
-
- `bundleProject()` 改为在构建前强制同步 build-required managed files
|
|
216
|
-
- 对规范化后的本地 gesture-handler HAR 增加 `react/renderer/debug/SystraceSection.h -> <cxxreact/SystraceSection.h>` 兼容 shim
|
|
217
|
-
- [templates/harmony/entry/hvigorfile.ts](/Users/blackishgreen03/workspace/Expo-Harmony-Plugin/templates/harmony/entry/hvigorfile.ts)
|
|
218
|
-
- 显式设置 `autolinking: null`
|
|
219
|
-
- 禁用 hvigor 二次 autolinking,避免其用旧模板回写 `RNOHPackagesFactory.h`
|
|
220
|
-
- [tests/build.test.ts](/Users/blackishgreen03/workspace/Expo-Harmony-Plugin/tests/build.test.ts)
|
|
221
|
-
- 增补 build-required managed files 强制刷新测试
|
|
222
|
-
- 增补 gesture-handler Systrace shim 测试
|
|
223
|
-
- [tests/init.test.ts](/Users/blackishgreen03/workspace/Expo-Harmony-Plugin/tests/init.test.ts)
|
|
224
|
-
- 断言生成的 `harmony/entry/hvigorfile.ts` 含 `autolinking: null`
|
|
225
|
-
|
|
226
|
-
### 设备侧仍未完成的原因
|
|
227
|
-
|
|
228
|
-
这次已经不再是 HAP 构建阻塞,而是当前本机模拟器实例不可用。
|
|
229
|
-
|
|
230
|
-
- `hdc list targets -v`:当前返回 `[Empty]`
|
|
231
|
-
- DevEco Emulator CLI 可列出实例名:`Enjoy 90 Pro Max`
|
|
232
|
-
- 该实例目录存在:`/Users/blackishgreen03/.Huawei/Emulator/deployed/Enjoy 90 Pro Max`
|
|
233
|
-
- 但当前系统进程中没有活跃的 emulator/qemu guest,无法安装 HAP
|
|
234
|
-
- 实例日志显示最近一次 guest 在 `2026-03-27 18:49` 出现 `Guest no response` / `hdc is abnormal`
|
|
235
|
-
- 随后在 `2026-03-27 19:04` 尝试重新拉起时,又出现 `can not read uuid file` / `can not read sn`
|
|
236
|
-
|
|
237
|
-
因此当前未完成项变成:
|
|
238
|
-
|
|
239
|
-
- `hdc install -r entry-default-unsigned.hap`
|
|
240
|
-
- `aa start` 拉起 `com.blackishgreen.expoharmonyuistack/EntryAbility`
|
|
241
|
-
- 首页、SVG、gesture、reanimated、路由跳转的最终人工运行时验收
|
|
242
|
-
|
|
243
|
-
### 对当前状态的更新判断
|
|
244
|
-
|
|
245
|
-
- `doctor / init / sync-template / bundle / env`:可用
|
|
246
|
-
- `Build Debug Hap(s)`:已通过
|
|
247
|
-
- `official-ui-stack-sample` runtime 手动验收:仍待补
|
|
248
|
-
- 当前阻塞:模拟器实例健康状态 / `hdc` target 缺失,而非 toolkit 构建链路
|
|
249
|
-
|
|
250
|
-
## 设备侧补验收(2026-03-30 下午)
|
|
251
|
-
|
|
252
|
-
这轮在同一台机器上继续补了模拟器侧验收,结论是:`build/install/start` 链路现在都已经真正打通,但 `official-ui-stack-sample` 仍未达到可验首页状态,最新阻塞已经从 native 构建前移到 JS runtime 兼容层。
|
|
253
|
-
|
|
254
|
-
### 新增验证结果
|
|
255
|
-
|
|
256
|
-
执行:
|
|
257
|
-
|
|
258
|
-
```bash
|
|
259
|
-
pnpm build
|
|
260
|
-
pnpm test -- --runInBand tests/build.test.ts
|
|
261
|
-
cd examples/official-ui-stack-sample
|
|
262
|
-
pnpm exec tsc --noEmit
|
|
263
|
-
pnpm run harmony:build:debug
|
|
264
|
-
/Applications/DevEco-Studio.app/Contents/sdk/default/openharmony/toolchains/hdc list targets -v
|
|
265
|
-
/Applications/DevEco-Studio.app/Contents/sdk/default/openharmony/toolchains/hdc install -r harmony/entry/build/default/outputs/default/entry-default-unsigned.hap
|
|
266
|
-
/Applications/DevEco-Studio.app/Contents/sdk/default/openharmony/toolchains/hdc shell aa start -a EntryAbility -b com.blackishgreen.expoharmonyuistack
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
结果:
|
|
270
|
-
|
|
271
|
-
- `pnpm build`:通过。
|
|
272
|
-
- `tests/build.test.ts`:`1` 个 suite、`13` 个测试全部通过。
|
|
273
|
-
- sample `tsc --noEmit`:通过。
|
|
274
|
-
- `build-hap --mode debug`:通过,持续产出 `entry-default-unsigned.hap`。
|
|
275
|
-
- `hdc list targets -v`:返回 `127.0.0.1:5555 TCP Connected localhost`。
|
|
276
|
-
- `hdc install -r entry-default-unsigned.hap`:通过,返回 `install bundle successfully`。
|
|
277
|
-
- `aa start -a EntryAbility -b com.blackishgreen.expoharmonyuistack`:通过,返回 `start ability successfully`。
|
|
278
|
-
|
|
279
|
-
### 新增运行时结论
|
|
280
|
-
|
|
281
|
-
- 之前 sample 中直接引用 `react-native-reanimated/lib/module/reanimated2` 深路径会在模拟器上红屏,现已改回从 `react-native-reanimated` 包入口导入,旧的模块解析红屏已消失。
|
|
282
|
-
- 覆盖安装完成后单独重新拉起应用,进程可以稳定存活,不再是安装期把 Ability 顶掉。
|
|
283
|
-
- 但当前前台画面仍是白屏,尚未进入可人工点击验收的首页。
|
|
284
|
-
|
|
285
|
-
本次从 `hilog` 抓到的关键运行时错误包括:
|
|
286
|
-
|
|
287
|
-
- `Invariant Violation: Looks like you're passing a function component "BaseImage" to createAnimatedComponent`
|
|
288
|
-
- `Error: Incompatible React versions`
|
|
289
|
-
- 日志明确显示:
|
|
290
|
-
- `react: 19.2.0`
|
|
291
|
-
- `react-native-renderer: 19.1.1`
|
|
292
|
-
|
|
293
|
-
### 对阻塞点的最新判断
|
|
294
|
-
|
|
295
|
-
- 当前已确认不是 `hdc` target、安装、Ability 拉起、ArkTS/C++ 编译、也不是深路径 `reanimated2` 模块解析问题。
|
|
296
|
-
- 当前阻塞已经收敛为 JS runtime 侧的版本窗/adapter 兼容问题:
|
|
297
|
-
- 公开矩阵当前宣称的是 `Expo 55 + React 19.2.x + React Native 0.83.x + @react-native-oh/react-native-harmony 0.82.18`
|
|
298
|
-
- 但本机实际安装的 `@react-native-oh/react-native-harmony@0.82.18` `peerDependencies.react-native` 仍明确要求 `0.82.1`
|
|
299
|
-
- 设备侧运行日志也与这条不匹配相吻合
|
|
300
|
-
|
|
301
|
-
因此截至 `2026-03-30 15:42 CST` 的最新结论变为:
|
|
302
|
-
|
|
303
|
-
- `doctor / init / sync-template / bundle / env`:可用
|
|
304
|
-
- `Build Debug Hap(s)`:可用
|
|
305
|
-
- `hdc install`:可用
|
|
306
|
-
- `aa start`:可用
|
|
307
|
-
- `official-ui-stack-sample` runtime 手动验收:仍未通过
|
|
308
|
-
- 当前阻塞:`react` / `react-native` / `@react-native-oh/react-native-harmony` / reanimated 组合在设备侧的 JS runtime 兼容性,而非 toolkit 构建链路本身
|
|
309
|
-
|
|
310
|
-
## 最终收口(2026-03-30 18:05 CST)
|
|
311
|
-
|
|
312
|
-
这轮没有继续维持一个“文档里支持 gesture,设备上却跑不通”的公开矩阵,而是把 `expo55-rnoh082-ui-stack` 收口到当前真实可运行的窗口:
|
|
313
|
-
|
|
314
|
-
- 保留:`expo-router`、`expo-linking`、`expo-constants`、`react-native-reanimated`、`react-native-svg`
|
|
315
|
-
- 移出公开矩阵:`react-native-gesture-handler`
|
|
316
|
-
- `gesture-handler` 继续保留为矩阵外的手动探索项,不再作为 `doctor --strict` 通过条件,也不再作为官方 sample 的运行时承诺
|
|
317
|
-
|
|
318
|
-
### 本轮补的修正
|
|
319
|
-
|
|
320
|
-
- [src/data/uiStack.ts](/Users/blackishgreen03/workspace/Expo-Harmony-Plugin/src/data/uiStack.ts)
|
|
321
|
-
- 从 `UI_STACK_VALIDATED_ADAPTERS` 移除 `react-native-gesture-handler`
|
|
322
|
-
- [src/data/dependencyCatalog.ts](/Users/blackishgreen03/workspace/Expo-Harmony-Plugin/src/data/dependencyCatalog.ts)
|
|
323
|
-
- 将 `gesture-handler` 及其 Harmony adapter 调整为矩阵外 `manual` 状态
|
|
324
|
-
- [examples/official-ui-stack-sample/package.json](/Users/blackishgreen03/workspace/Expo-Harmony-Plugin/examples/official-ui-stack-sample/package.json)
|
|
325
|
-
- 移除 `react-native-gesture-handler` 与 `@react-native-oh-tpl/react-native-gesture-handler`
|
|
326
|
-
- [examples/official-ui-stack-sample/app/_layout.tsx](/Users/blackishgreen03/workspace/Expo-Harmony-Plugin/examples/official-ui-stack-sample/app/_layout.tsx)
|
|
327
|
-
- 移除 `GestureHandlerRootView`
|
|
328
|
-
- [examples/official-ui-stack-sample/app/index.tsx](/Users/blackishgreen03/workspace/Expo-Harmony-Plugin/examples/official-ui-stack-sample/app/index.tsx)
|
|
329
|
-
- 将首页交互改成纯 `react-native` `Pressable` + `react-native-reanimated` 的 spring rail
|
|
330
|
-
- [examples/official-ui-stack-sample/app/details.tsx](/Users/blackishgreen03/workspace/Expo-Harmony-Plugin/examples/official-ui-stack-sample/app/details.tsx)
|
|
331
|
-
- 文案改为当前真实验证项
|
|
332
|
-
- [README.md](/Users/blackishgreen03/workspace/Expo-Harmony-Plugin/README.md)、[README.en.md](/Users/blackishgreen03/workspace/Expo-Harmony-Plugin/README.en.md)、[docs/support-matrix.md](/Users/blackishgreen03/workspace/Expo-Harmony-Plugin/docs/support-matrix.md)
|
|
333
|
-
- 将公开矩阵、sample 说明和 release gate 同步到真实版本窗
|
|
334
|
-
|
|
335
|
-
### 重新执行的验证
|
|
336
|
-
|
|
337
|
-
执行:
|
|
338
|
-
|
|
339
|
-
```bash
|
|
340
|
-
pnpm install --ignore-scripts
|
|
341
|
-
pnpm exec jest tests/doctor.test.ts tests/officialUiStackSample.test.ts tests/docs.test.ts --runInBand
|
|
342
|
-
pnpm build
|
|
343
|
-
|
|
344
|
-
cd examples/official-ui-stack-sample
|
|
345
|
-
pnpm run harmony:doctor:strict
|
|
346
|
-
pnpm run harmony:init
|
|
347
|
-
pnpm run harmony:sync-template
|
|
348
|
-
pnpm run harmony:bundle
|
|
349
|
-
pnpm run harmony:env
|
|
350
|
-
pnpm run harmony:build:debug
|
|
351
|
-
/Applications/DevEco-Studio.app/Contents/sdk/default/openharmony/toolchains/hdc install -r harmony/entry/build/default/outputs/default/entry-default-unsigned.hap
|
|
352
|
-
/Applications/DevEco-Studio.app/Contents/sdk/default/openharmony/toolchains/hdc shell aa start -a EntryAbility -b com.blackishgreen.expoharmonyuistack
|
|
353
|
-
/Applications/DevEco-Studio.app/Contents/sdk/default/openharmony/toolchains/hdc shell aa start -a EntryAbility -b com.blackishgreen.expoharmonyuistack -U expoharmonyuistack://details
|
|
354
|
-
```
|
|
355
|
-
|
|
356
|
-
结果:
|
|
357
|
-
|
|
358
|
-
- 定向 Jest:`3` 个 suite、`20` 个测试全部通过
|
|
359
|
-
- `pnpm build`:通过
|
|
360
|
-
- `doctor --strict`:通过,sample 当前为 `16 supported, 0 manual, 0 unknown`
|
|
361
|
-
- `init / sync-template / bundle / env / build-hap --mode debug`:全部通过
|
|
362
|
-
- `hdc install -r`:通过,返回 `install bundle successfully`
|
|
363
|
-
- `aa start`:通过,返回 `start ability successfully`
|
|
364
|
-
- `aa dump --all`:确认 `com.blackishgreen.expoharmonyuistack` 处于 `FOREGROUND`
|
|
365
|
-
- `hilog`:已出现 `JS bundle executed successfully`,未再出现此前的 `gesture-handler` / reanimated runtime fatal
|
|
366
|
-
|
|
367
|
-
### 设备侧证据
|
|
368
|
-
|
|
369
|
-
- 首页截图:
|
|
370
|
-
[official-ui-stack-sample-home-reset.jpeg](/Users/blackishgreen03/workspace/Expo-Harmony-Plugin/.tmp-acceptance/official-ui-stack-sample-home-reset.jpeg)
|
|
371
|
-
- `/details` 路由截图:
|
|
372
|
-
[official-ui-stack-sample-deeplink.jpeg](/Users/blackishgreen03/workspace/Expo-Harmony-Plugin/.tmp-acceptance/official-ui-stack-sample-deeplink.jpeg)
|
|
373
|
-
|
|
374
|
-
当前观察到的设备侧状态:
|
|
375
|
-
|
|
376
|
-
- 首页能正常显示标题、SVG、`Constants.expoConfig?.name`、`Linking.createURL('/details')`
|
|
377
|
-
- `/details` 页面可通过 scheme deep link 进入并稳定显示
|
|
378
|
-
- 调试环境下仍会出现 Dev Menu websocket / packager 重连日志,这不是当前 sample 运行阻塞
|
|
379
|
-
|
|
380
|
-
### 对 `v1.5.1` 的最终状态改判
|
|
381
|
-
|
|
382
|
-
- 公开矩阵:已修正到真实可运行版本窗
|
|
383
|
-
- `doctor / init / sync-template / bundle / env / build-hap / install / start`:可用
|
|
384
|
-
- 官方 UI-stack sample:可在当前模拟器上正常显示首页与 `/details`
|
|
385
|
-
- 设备侧剩余未纳入公开承诺的项:`react-native-gesture-handler`
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
# v1.6.0 验收记录
|
|
2
|
-
|
|
3
|
-
日期:2026-03-31
|
|
4
|
-
|
|
5
|
-
基线:
|
|
6
|
-
|
|
7
|
-
- 仓库:`Expo-Harmony-Toolkit`
|
|
8
|
-
- 版本:`1.6.0`
|
|
9
|
-
- 发布目标:npm 包 `expo-harmony-toolkit@latest`
|
|
10
|
-
|
|
11
|
-
## 结论
|
|
12
|
-
|
|
13
|
-
这次 `v1.6.0` 已完成发版前验收,满足 npm 发布条件。
|
|
14
|
-
|
|
15
|
-
- `doctor --strict` 既有 verified 矩阵 `expo55-rnoh082-ui-stack` 仍然可用。
|
|
16
|
-
- 新增的 tiered support model、preview capability skeleton、permission generation、official native capabilities sample 已完成本地构建与设备侧验证。
|
|
17
|
-
- `pnpm release:check` 已通过,包含 `build`、`test`、`npm pack --dry-run`、tarball 文件清单检查、tarball 安装 smoke,以及临时 sample 的 `build-hap --mode debug`。
|
|
18
|
-
- 当前未完成项只剩 release HAP signing;这不属于 npm 发版 gate。
|
|
19
|
-
|
|
20
|
-
## 环境
|
|
21
|
-
|
|
22
|
-
- macOS `26.3` (`25D125`)
|
|
23
|
-
- Node `v20.19.6`
|
|
24
|
-
- pnpm `10.32.1`
|
|
25
|
-
- npm `10.8.2`
|
|
26
|
-
- DevEco Studio:`/Applications/DevEco-Studio.app`
|
|
27
|
-
- Harmony SDK:`/Applications/DevEco-Studio.app/Contents/sdk`
|
|
28
|
-
- Java:`/usr/bin/java`
|
|
29
|
-
- ohpm:`/Applications/DevEco-Studio.app/Contents/tools/ohpm/bin/ohpm`
|
|
30
|
-
- hvigor:`/Applications/DevEco-Studio.app/Contents/tools/hvigor/bin/hvigorw.js`
|
|
31
|
-
- hdc:`/Applications/DevEco-Studio.app/Contents/sdk/default/openharmony/toolchains/hdc`
|
|
32
|
-
- 在线目标:`127.0.0.1:5555`
|
|
33
|
-
|
|
34
|
-
## 验收范围
|
|
35
|
-
|
|
36
|
-
### 1. 核心构建与测试
|
|
37
|
-
|
|
38
|
-
执行:
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
pnpm build
|
|
42
|
-
pnpm test
|
|
43
|
-
pnpm release:check
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
结果:
|
|
47
|
-
|
|
48
|
-
- `pnpm build`:通过。
|
|
49
|
-
- `pnpm test`:`11` 个 suite、`57` 个测试全部通过。
|
|
50
|
-
- `pnpm release:check`:通过。
|
|
51
|
-
- tarball 文件清单符合预期,没有把 `examples/`、`fixtures/`、`tests/` 打进 npm 包。
|
|
52
|
-
- tarball smoke 在临时 sample 上完成:
|
|
53
|
-
- `expo-harmony doctor --strict`
|
|
54
|
-
- `expo-harmony init --force`
|
|
55
|
-
- `expo-harmony bundle`
|
|
56
|
-
- `expo-harmony build-hap --mode debug`
|
|
57
|
-
|
|
58
|
-
### 2. Verified 矩阵回归
|
|
59
|
-
|
|
60
|
-
对象:
|
|
61
|
-
|
|
62
|
-
- `examples/official-ui-stack-sample`
|
|
63
|
-
|
|
64
|
-
执行:
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
node ../../bin/expo-harmony.js doctor --project-root . --strict
|
|
68
|
-
node ../../bin/expo-harmony.js init --project-root .
|
|
69
|
-
node ../../bin/expo-harmony.js bundle --project-root .
|
|
70
|
-
node ../../bin/expo-harmony.js build-hap --project-root . --mode debug
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
结果:
|
|
74
|
-
|
|
75
|
-
- `doctor --strict`:通过,矩阵识别为 `expo55-rnoh082-ui-stack`。
|
|
76
|
-
- `init`:通过。
|
|
77
|
-
- `bundle`:通过。
|
|
78
|
-
- `build-hap --mode debug`:通过,产出:
|
|
79
|
-
|
|
80
|
-
```text
|
|
81
|
-
examples/official-ui-stack-sample/harmony/entry/build/default/outputs/default/entry-default-unsigned.hap
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
设备侧验证:
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
hdc install -r entry-default-unsigned.hap
|
|
88
|
-
hdc shell aa start -a EntryAbility -b com.blackishgreen.expoharmonyuistack
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
结果:
|
|
92
|
-
|
|
93
|
-
- HAP 安装成功。
|
|
94
|
-
- `EntryAbility` 启动成功。
|
|
95
|
-
- 通过 `uitest dumpLayout` 验证首页可见:
|
|
96
|
-
- `Official UI Stack Sample`
|
|
97
|
-
- `Expo Harmony UI Stack Sample`
|
|
98
|
-
- `expoharmonyuistack:///details`
|
|
99
|
-
- `RNSVGSvgView(...)` 节点存在
|
|
100
|
-
- `Run reanimated spring`
|
|
101
|
-
- `Open details route`
|
|
102
|
-
- 点击一次 motion rail 后,再点击 `Open details route`,`/details` 页面可见:
|
|
103
|
-
- `UI Stack Details`
|
|
104
|
-
- `doctor -> init -> bundle -> build-hap -> runtime`
|
|
105
|
-
- `Back to home`
|
|
106
|
-
|
|
107
|
-
当前判断:
|
|
108
|
-
|
|
109
|
-
- `expo-router`
|
|
110
|
-
- `expo-linking`
|
|
111
|
-
- `expo-constants`
|
|
112
|
-
- `react-native-svg`
|
|
113
|
-
- `react-native-reanimated`
|
|
114
|
-
|
|
115
|
-
都仍然落在可启动、可渲染、可跳转的 verified 运行时路径内。
|
|
116
|
-
|
|
117
|
-
### 3. Preview Native Capabilities 验证
|
|
118
|
-
|
|
119
|
-
对象:
|
|
120
|
-
|
|
121
|
-
- `examples/official-native-capabilities-sample`
|
|
122
|
-
|
|
123
|
-
执行:
|
|
124
|
-
|
|
125
|
-
```bash
|
|
126
|
-
node ../../bin/expo-harmony.js doctor --project-root . --target-tier preview
|
|
127
|
-
node ../../bin/expo-harmony.js init --project-root .
|
|
128
|
-
node ../../bin/expo-harmony.js bundle --project-root .
|
|
129
|
-
node ../../bin/expo-harmony.js build-hap --project-root . --mode debug
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
结果:
|
|
133
|
-
|
|
134
|
-
- `doctor --target-tier preview`:通过,`expo-file-system` / `expo-image-picker` 识别为 `manual/preview`。
|
|
135
|
-
- `init`:通过,并生成 Harmony permission declaration 与 preview shim。
|
|
136
|
-
- `bundle`:通过。
|
|
137
|
-
- `build-hap --mode debug`:通过,产出:
|
|
138
|
-
|
|
139
|
-
```text
|
|
140
|
-
examples/official-native-capabilities-sample/harmony/entry/build/default/outputs/default/entry-default-unsigned.hap
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
设备侧验证:
|
|
144
|
-
|
|
145
|
-
```bash
|
|
146
|
-
hdc install -r entry-default-unsigned.hap
|
|
147
|
-
hdc shell aa start -a EntryAbility -b com.blackishgreen.expoharmonynativepreview
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
结果:
|
|
151
|
-
|
|
152
|
-
- HAP 安装成功。
|
|
153
|
-
- `EntryAbility` 启动成功。
|
|
154
|
-
- `bm dump` 可见 request permissions:
|
|
155
|
-
- `ohos.permission.CAMERA`
|
|
156
|
-
- `ohos.permission.READ_IMAGEVIDEO`
|
|
157
|
-
- 对应 `$string:` reason 已写入 bundle metadata。
|
|
158
|
-
- 通过 `uitest dumpLayout` 与点击事件验证:
|
|
159
|
-
- 首页可见 `Official Native Capabilities Sample`
|
|
160
|
-
- `/file-system` 页面可见 `expo-file-system preview`
|
|
161
|
-
- 点击 `Attempt preview write` 后,message 更新为 preview bridge 文案,不 crash
|
|
162
|
-
- `/image-picker` 页面可见 `expo-image-picker preview`
|
|
163
|
-
- 点击 `Attempt preview pick` 后,message 更新为 preview bridge 文案,不 crash
|
|
164
|
-
|
|
165
|
-
当前判断:
|
|
166
|
-
|
|
167
|
-
- preview tier 的承诺已经达到:
|
|
168
|
-
- 可被 `doctor` 分级识别
|
|
169
|
-
- 可 `init`
|
|
170
|
-
- 可 `bundle`
|
|
171
|
-
- 可 `build-hap --mode debug`
|
|
172
|
-
- 可安装与启动
|
|
173
|
-
- 点击 capability demo 不会 crash,而是稳定落到 preview bridge 提示
|
|
174
|
-
|
|
175
|
-
## 非阻塞观察
|
|
176
|
-
|
|
177
|
-
- `env.signing.missing` 仍然存在;当前 sidecar 没有 release signing config,这不阻塞 npm 发版,也不阻塞 debug HAP 验证。
|
|
178
|
-
- 设备日志里仍可看到一些非致命 debug 噪音,例如:
|
|
179
|
-
- `StatusBar is translucent by default`
|
|
180
|
-
- `DevMenu` / `ACCELEROMETER` 相关提示
|
|
181
|
-
- 若干 websocket retry / `epoll wait event` 噪音
|
|
182
|
-
- 本轮没有观察到阻止应用启动、阻止页面渲染、或导致 preview / verified sample route 崩溃的 fatal runtime 问题。
|
|
183
|
-
|
|
184
|
-
## 对 v1.6.0 的最终判断
|
|
185
|
-
|
|
186
|
-
- `doctor / init / bundle / build-hap(debug)`:可用
|
|
187
|
-
- verified UI-stack matrix:通过设备侧回归
|
|
188
|
-
- preview native capabilities skeleton:通过设备侧回归
|
|
189
|
-
- tarball smoke:通过
|
|
190
|
-
- npm 发布前 gate:通过
|
|
191
|
-
- release HAP signing:未配置,不纳入本次 npm 发版阻塞项
|
|
192
|
-
|
|
193
|
-
因此,`v1.6.0` 已具备进入 npm 正式发布流程的条件。
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
# v1.7.0 验收记录(模拟器收口版)
|
|
2
|
-
|
|
3
|
-
日期:2026-04-02
|
|
4
|
-
|
|
5
|
-
基线:
|
|
6
|
-
|
|
7
|
-
- 仓库:`Expo-Harmony-Toolkit`
|
|
8
|
-
- 版本:`1.7.0`
|
|
9
|
-
- 验收约束:当前无真机,只做模拟器与构建层收口
|
|
10
|
-
|
|
11
|
-
## 当前结论
|
|
12
|
-
|
|
13
|
-
`v1.7.0` 这一轮的正确结论不是“所有 preview capability 已 verified”,而是:
|
|
14
|
-
|
|
15
|
-
- 四个 official sample 都已经收口成可理解、可上手、可重复操作的官方示例
|
|
16
|
-
- `official-minimal-sample` 不再只是空白 smoke 卡片,而是最短链路说明页
|
|
17
|
-
- `official-app-shell-sample` 不再只是回归页,而是 router / linking / constants 的最小 onboarding sample
|
|
18
|
-
- `official-ui-stack-sample` 继续作为 verified UI-stack 主 sample,并把成功信号写得更显式
|
|
19
|
-
- `official-native-capabilities-sample` 现在按“每页一个模块、只讲核心支持子集、unsupported 边界明确”的方式收口
|
|
20
|
-
- `expo-file-system`、`expo-image-picker`、`expo-location`、`expo-camera` 仍然全部保持 `preview`
|
|
21
|
-
- 在没有真机前,不把任何 preview capability 提升到 `verified`
|
|
22
|
-
|
|
23
|
-
这份记录里默认使用以下判读:
|
|
24
|
-
|
|
25
|
-
- `🟡` 表示实现已到位,主要只差真机 / release 证据
|
|
26
|
-
- `🟠` 表示包已进入 `preview`,但这个具体子 API 还没补齐到可信实现;不是“只差真机”
|
|
27
|
-
|
|
28
|
-
## 本轮实现范围
|
|
29
|
-
|
|
30
|
-
- 统一重做四个 official sample 的页面表达和使用文档
|
|
31
|
-
- `expo-file-system` sample 补齐目录创建、写入、读回、列目录、复制、移动、清理
|
|
32
|
-
- `expo-image-picker` sample 保留单图选择 / 单次拍照 / denied / canceled / asset-return 主路径
|
|
33
|
-
- `expo-location` sample 收口到 foreground permission、current、last-known、geocode、reverse-geocode
|
|
34
|
-
- `expo-camera` sample 收口到 camera permission + still capture through Harmony system camera UI
|
|
35
|
-
- `expo-location` shim 明确把 `watchPositionAsync`、background permission、heading API 降为 unsupported
|
|
36
|
-
- `expo-camera` shim 明确把 embedded preview、pause/resume、microphone、video 相关入口降为 unsupported
|
|
37
|
-
- sample 指南、support matrix、README、acceptance 记录同步到真实状态
|
|
38
|
-
|
|
39
|
-
## 自动化检查结果
|
|
40
|
-
|
|
41
|
-
执行:
|
|
42
|
-
|
|
43
|
-
- `pnpm build`
|
|
44
|
-
- `pnpm test`
|
|
45
|
-
|
|
46
|
-
结果:
|
|
47
|
-
|
|
48
|
-
- `pnpm build`:通过
|
|
49
|
-
- `pnpm test`:通过,`11` suites / `61` tests
|
|
50
|
-
|
|
51
|
-
另外,sample 相关针对性回归也已通过:
|
|
52
|
-
|
|
53
|
-
- `tests/officialSample.test.ts`
|
|
54
|
-
- `tests/officialAppShellSample.test.ts`
|
|
55
|
-
- `tests/officialUiStackSample.test.ts`
|
|
56
|
-
- `tests/officialNativeCapabilitiesSample.test.ts`
|
|
57
|
-
- `tests/init.test.ts`
|
|
58
|
-
- `tests/docs.test.ts`
|
|
59
|
-
|
|
60
|
-
## 这版 sample 的实际完成度
|
|
61
|
-
|
|
62
|
-
### Official Minimal Sample
|
|
63
|
-
|
|
64
|
-
- 页面现在明确说明它验证的是最短 `doctor -> init -> bundle -> build-hap` 链路
|
|
65
|
-
- 页面明确写出成功标准与故意不覆盖的范围
|
|
66
|
-
- 适合作为新开发者的最小入口,而不是仅供维护者理解的 smoke baseline
|
|
67
|
-
|
|
68
|
-
### Official App Shell Sample
|
|
69
|
-
|
|
70
|
-
- 首页明确展示 app name、pathname、observed URL、generated details URL
|
|
71
|
-
- 同时提供 router push、`Link` 组件、generated deep link 三条入口
|
|
72
|
-
- `/details` 页面也会回显当前 pathname / URL,便于判断 deep-link 是否真正解析成功
|
|
73
|
-
|
|
74
|
-
### Official UI Stack Sample
|
|
75
|
-
|
|
76
|
-
- 保留 router、linking、constants、SVG、reanimated 的 verified 主线
|
|
77
|
-
- 首页新增“Success signals”表达,降低验收歧义
|
|
78
|
-
- `/details` 页面会回显 route / URL,帮助判断动画和路由是否互相影响
|
|
79
|
-
|
|
80
|
-
### Official Native Capabilities Sample
|
|
81
|
-
|
|
82
|
-
- `/file-system`
|
|
83
|
-
- 现在是完整 sandbox 文件流 sample
|
|
84
|
-
- 覆盖目录创建、读写、inspect、列目录、copy、move、cleanup
|
|
85
|
-
- `/image-picker`
|
|
86
|
-
- 继续聚焦 permission、单图选择、单次拍照、deny/cancel/success 三类结果
|
|
87
|
-
- `/location`
|
|
88
|
-
- `🟡` foreground permission、current、last-known、geocode、reverse-geocode 可直接操作
|
|
89
|
-
- `🟠` `watchPositionAsync`、background permission、heading API 已不再伪装成主路径支持;这些不是“只差真机”
|
|
90
|
-
- `/camera`
|
|
91
|
-
- `🟡` 相机权限和 through-system-ui 的 still capture 可直接操作
|
|
92
|
-
- `🟠` embedded preview、pause/resume、microphone、video 已不再伪装成主路径支持;这些不是“只差真机”
|
|
93
|
-
|
|
94
|
-
## 当前未完成的边界
|
|
95
|
-
|
|
96
|
-
在没有真机前,以下内容仍未完成:
|
|
97
|
-
|
|
98
|
-
- 任一 preview capability 的 `verified` 晋升
|
|
99
|
-
- `🟡` 已实现子集的真机与 release 证据补齐
|
|
100
|
-
- `🟠` `expo-location` 的真实 continuous watch、background permission parity、heading API 实现与验收
|
|
101
|
-
- `🟠` `expo-camera` 的 embedded live preview、preview pause/resume、microphone / video API 实现与验收
|
|
102
|
-
- release signing 配置以外的真机 release HAP 运行证据
|
|
103
|
-
|
|
104
|
-
## 版本结论
|
|
105
|
-
|
|
106
|
-
因此,`v1.7.0` 现在可以对外保持的准确说法是:
|
|
107
|
-
|
|
108
|
-
- verified 主线仍然只有 `expo55-rnoh082-ui-stack`
|
|
109
|
-
- 四个 native capability 已经收口成“模拟器下真正可用的高质量 preview sample”
|
|
110
|
-
- 工具链、sample、矩阵、README、acceptance 文档现在口径一致
|
|
111
|
-
- 下一步只有在拿到真机后,才应该讨论 capability promotion
|