expo-harmony-toolkit 1.7.2 → 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 +40 -4453
- package/build/data/capabilities.js +21 -4
- 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 +3 -2
- package/docs/official-ui-stack-sample.md +2 -1
- package/docs/signing-and-release.md +3 -0
- package/docs/support-matrix.md +34 -9
- 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
- package/docs/v1.7.2-acceptance.md +0 -37
|
@@ -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
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
# v1.7.1 验收记录(模拟器收口版)
|
|
2
|
-
|
|
3
|
-
日期:2026-04-02
|
|
4
|
-
|
|
5
|
-
基线:
|
|
6
|
-
|
|
7
|
-
- 仓库:`Expo-Harmony-Toolkit`
|
|
8
|
-
- 版本:`1.7.1`
|
|
9
|
-
- 验收约束:当前无真机,只做模拟器与构建层收口
|
|
10
|
-
|
|
11
|
-
## 当前结论
|
|
12
|
-
|
|
13
|
-
`v1.7.1` 这一轮的正确结论不是“所有 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.1` 现在可以对外保持的准确说法是:
|
|
107
|
-
|
|
108
|
-
- verified 主线仍然只有 `expo55-rnoh082-ui-stack`
|
|
109
|
-
- 四个 native capability 已经收口成“模拟器下真正可用的高质量 preview sample”
|
|
110
|
-
- 工具链、sample、矩阵、README、acceptance 文档现在口径一致
|
|
111
|
-
- 下一步只有在拿到真机后,才应该讨论 capability promotion
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# v1.7.2 验收记录(Preview 子集收口版)
|
|
2
|
-
|
|
3
|
-
- 版本:`1.7.2`
|
|
4
|
-
- 日期:`2026-04-02`
|
|
5
|
-
- 目标:把 `expo-file-system`、`expo-image-picker`、`expo-location`、`expo-camera` 当前文档中的 `🟠` 子项全部收口到明确 `🟡` 子集
|
|
6
|
-
|
|
7
|
-
## 结论
|
|
8
|
-
|
|
9
|
-
`v1.7.2` 的正确结论不是“preview capability 已 verified”,而是:
|
|
10
|
-
|
|
11
|
-
- 四项能力继续全部保持 `preview`
|
|
12
|
-
- `runtimeMode` 继续保持 `adapter`
|
|
13
|
-
- `evidence.release` 继续保持 `false`
|
|
14
|
-
- 公开文档、official sample、模板生成与测试口径已收口到新的 yellow subset
|
|
15
|
-
|
|
16
|
-
## 这轮收口内容
|
|
17
|
-
|
|
18
|
-
- `expo-file-system`
|
|
19
|
-
- base64、append / partial read、`getInfoAsync({ md5: true })`、`downloadAsync`
|
|
20
|
-
- `expo-image-picker`
|
|
21
|
-
- multi-select、mixed library selection、camera photo/video capture、`getPendingResultAsync`
|
|
22
|
-
- `expo-location`
|
|
23
|
-
- background permission、`watchPositionAsync`、`getHeadingAsync`、`watchHeadingAsync`
|
|
24
|
-
- `expo-camera`
|
|
25
|
-
- embedded `CameraView`、preview pause/resume、video recording、microphone permission
|
|
26
|
-
|
|
27
|
-
## 文档与 sample 口径
|
|
28
|
-
|
|
29
|
-
- [support-matrix](./support-matrix.md) 已更新为新的 yellow subset
|
|
30
|
-
- [official-native-capabilities-sample](./official-native-capabilities-sample.md) 已改成四条 route 的收口版 walkthrough
|
|
31
|
-
- README 中英、acceptance link、sample route copy 已同步更新
|
|
32
|
-
|
|
33
|
-
## 保持不变的边界
|
|
34
|
-
|
|
35
|
-
- 这轮不做 `preview -> verified` 晋升
|
|
36
|
-
- 这轮不扩张到 `expo-notifications`、scanner parity、resumable task 家族等非目标能力
|
|
37
|
-
- 真机与 release 证据仍需后续验收补齐
|