@flun/node-mobile-app 4.0.6 → 4.0.8
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/Android /346/236/204/345/273/272/346/214/207/345/215/227.md" +84 -76
- package/CHANGELOG.md +10 -8
- package/LICENSE +9 -4
- package/README.md +170 -77
- package/bin/cli.js +9 -9
- package/cli-assets/server.js +7 -4
- package/mobileAppConfig.js +32 -32
- package/package.json +5 -5
- package/scripts/copy-files.js +1 -1
- package/src/commands/build.js +9 -4
- package/src/commands/clean.js +3 -2
- package/src/commands/test.js +13 -9
- package/src/config.js +3 -3
- package/src/copy.js +41 -36
- package/src/fingerprint.js +4 -3
- package/src/generate.js +5 -3
- package/src/install.js +38 -27
- package/src/optimize-node-modules.js +10 -5
- package/src/patcher.js +37 -32
- package/src/platform-ios.js +6 -6
- package/src/utils.js +26 -22
- package/template/App.tsx +4 -4
- package/template/Gemfile +1 -1
- package/template/android/app/build.gradle +1 -1
- package/template/android/app/proguard-rules.pro +1 -1
- package/template/android/app/src/main/java/com/myapp/MainActivity.kt +1 -1
- package/template/android/app/src/main/java/com/myapp/MainApplication.kt +1 -1
- package/template/android/app/src/main/res/drawable/rn_edit_text_material.xml +6 -3
- package/template/android/app/src/main/res/raw/keep.xml +1 -1
- package/template/android/app/src/main/res/values/strings.xml +1 -1
- package/template/android/app/src/main/res/values/styles.xml +1 -1
- package/template/android/build.gradle +1 -1
- package/template/android/gradle.properties +1 -1
- package/template/android/gradlew +3 -2
- package/template/android/gradlew.bat +3 -2
- package/template/android/settings.gradle +1 -1
- package/template/app.json +1 -1
- package/template/index.js +2 -2
- package/template/ios/.xcode.env +1 -1
- package/template/ios/MyApp/Images.xcassets/AppIcon.appiconset/Contents.json +1 -1
- package/template/ios/MyApp/Images.xcassets/Contents.json +1 -1
- package/template/ios/MyApp/Info.plist +1 -1
- package/template/ios/MyApp/LaunchScreen.storyboard +30 -12
- package/template/ios/MyApp/PrivacyInfo.xcprivacy +1 -1
- package/template/ios/MyApp.xcodeproj/project.pbxproj +34 -15
- package/template/ios/MyApp.xcodeproj/xcshareddata/xcschemes/MyApp.xcscheme +1 -1
- package/template/ios/Podfile +1 -1
- package/template/package.json +1 -1
- package//350/207/252/345/256/232/344/271/211libnode/346/214/207/345/215/227.md +131 -98
|
@@ -1,65 +1,66 @@
|
|
|
1
1
|
# Android 构建指南
|
|
2
2
|
|
|
3
|
-
本文档是 [README.md](./README.md)
|
|
3
|
+
本文档是 [README.md](./README.md) 的**深度附件**;日常使用(`test` / `build`)不需要看--CLI 自动处理;
|
|
4
4
|
|
|
5
|
-
本文档只讲四件事,都是 README
|
|
6
|
-
1.
|
|
7
|
-
2. **libnode.so
|
|
8
|
-
3. **Express
|
|
9
|
-
4.
|
|
5
|
+
本文档只讲四件事,都是 README 没细说的:
|
|
6
|
+
1. **环境准备**(JDK / SDK / NDK / adb / 原生模块编译)
|
|
7
|
+
2. **libnode.so**(v18 vs v22、预编译仓库、替换、full-icu 验证)
|
|
8
|
+
3. **Express 版本选择**(踩坑清单)
|
|
9
|
+
4. **调试与缓存排查**(logcat 命令、手动清缓存兜底)
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
## 一、环境准备
|
|
14
14
|
|
|
15
|
-
### 1.1 JDK 17
|
|
15
|
+
### 1.1 JDK 17(必须)
|
|
16
16
|
|
|
17
17
|
Android Gradle Plugin 不支持 JDK 18+;
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
下载:[Adoptium JDK 17](https://adoptium.net/temurin/releases/?version=17)
|
|
20
20
|
|
|
21
21
|
**CLI 不读 `JAVA_HOME`**,直接用系统 PATH 里的 `java`;确保 `java -version` 输出是 17;
|
|
22
22
|
|
|
23
23
|
### 1.2 Android SDK
|
|
24
24
|
|
|
25
|
-
CLI
|
|
25
|
+
CLI 自动查找,顺序:
|
|
26
26
|
|
|
27
27
|
1. `mobileAppConfig.js` 的 `android.sdkPath`
|
|
28
28
|
2. 环境变量 `ANDROID_HOME` / `ANDROID_SDK_ROOT`
|
|
29
|
-
3.
|
|
29
|
+
3. 常见默认路径(Windows:`%LOCALAPPDATA%\Android\Sdk`)
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
**必需组件**:
|
|
32
32
|
|
|
33
33
|
| 组件 | 版本 |
|
|
34
34
|
| -------------- | ------------------------------------------------------------------------- |
|
|
35
35
|
| SDK Platform | 与 `mobileAppConfig.js` 的 `android.compileSdkVersion` 一致的 Platform |
|
|
36
36
|
| Build-Tools | 与 `mobileAppConfig.js` 的 `android.buildToolsVersion` 一致 |
|
|
37
37
|
| Platform-Tools | 含 adb 的较新版本 |
|
|
38
|
-
| NDK | 与模板 `android/build.gradle` 的 `ndkVersion`
|
|
38
|
+
| NDK | 与模板 `android/build.gradle` 的 `ndkVersion` 一致(libnode.so 编译依赖) |
|
|
39
39
|
|
|
40
40
|
### 1.3 adb
|
|
41
41
|
|
|
42
|
-
查找顺序同 SDK
|
|
42
|
+
查找顺序同 SDK;常用命令:
|
|
43
43
|
|
|
44
44
|
```powershell
|
|
45
45
|
$adb = "$env:LOCALAPPDATA\Android\Sdk\platform-tools\adb.exe"
|
|
46
46
|
& $adb devices
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
### 1.4
|
|
49
|
+
### 1.4 原生模块编译(自动检测)
|
|
50
50
|
|
|
51
|
-
CLI 会扫描 `<buildDir>/nodejs-assets/nodejs-project/node_modules/` 下是否有 `binding.gyp`
|
|
51
|
+
CLI 会扫描 `<buildDir>/nodejs-assets/nodejs-project/node_modules/` 下是否有 `binding.gyp` 文件(原生模块的标志),自动写:
|
|
52
52
|
|
|
53
53
|
```
|
|
54
54
|
<buildDir>/nodejs-assets/BUILD_NATIVE_MODULES.txt # 1=有原生模块,0=无
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
-
-
|
|
58
|
-
|
|
57
|
+
- **检测到原生模块**(如 `bcrypt`、`sqlite3`):写 `1`,并设环境变量 `NODEJS_MOBILE_BUILD_NATIVE_MODULES=1`,`npm install`
|
|
58
|
+
时自动重编
|
|
59
|
+
- **未检测到**:写 `0`,跳过编译
|
|
59
60
|
|
|
60
61
|
**用户无需手动配置**;检测结果会纳入依赖哈希,装/卸原生模块时会自动触发重装重编;
|
|
61
62
|
|
|
62
|
-
|
|
63
|
+
**手动强制重编**:换过 `libnode.so` 但依赖没变、需要重新编译原生模块时:
|
|
63
64
|
|
|
64
65
|
```bash
|
|
65
66
|
# Linux / macOS
|
|
@@ -71,7 +72,9 @@ NODE_MOBILE_FORCE_REBUILD=1 npx node-mobile-app test
|
|
|
71
72
|
$env:NODE_MOBILE_FORCE_REBUILD=1; npx node-mobile-app test
|
|
72
73
|
```
|
|
73
74
|
|
|
74
|
-
**Windows
|
|
75
|
+
**Windows 编译原生模块的前置条件**:需 Android SDK 中的 NDK(提供交叉编译工具链与 `make.exe`)与 Git for Windows(提供 `sh` /
|
|
76
|
+
`sed` / `rm` 等 GNU 工具,`nodejs-mobile-gyp` 会从注册表或常见路径自动定位);二者缺失时编译阶段报错;Linux / macOS
|
|
77
|
+
使用系统自带的同类工具,无需额外安装;
|
|
75
78
|
|
|
76
79
|
---
|
|
77
80
|
|
|
@@ -81,15 +84,16 @@ $env:NODE_MOBILE_FORCE_REBUILD=1; npx node-mobile-app test
|
|
|
81
84
|
|
|
82
85
|
### 2.0 预编译二进制怎么来的
|
|
83
86
|
|
|
84
|
-
从 `@flun/nodejs-mobile-react-native` 1.0.1 起,`libnode.so` **不在 npm 包里**,安装时由 postinstall 脚本从 Gitee / GitHub
|
|
87
|
+
从 `@flun/nodejs-mobile-react-native` 1.0.1 起,`libnode.so` **不在 npm 包里**,安装时由 postinstall 脚本从 Gitee / GitHub
|
|
88
|
+
Release 自动下载:
|
|
85
89
|
|
|
86
|
-
-
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
-
|
|
90
|
+
- **下载源**:Gitee 优先,失败自动回退 GitHub
|
|
91
|
+
- **下载内容**:`android-libnode.zip`(双架构约 88 MB),含 `bin/` + `include/`;具体大小以实际下载为准;
|
|
92
|
+
- **覆盖目标**:`node_modules/@flun/nodejs-mobile-react-native/android/libnode/`
|
|
93
|
+
- **幂等**:已装版本匹配则跳过,不重复下载
|
|
94
|
+
- **失败处理**:全部源失败时打印下载链接,不中断 npm 安装
|
|
91
95
|
|
|
92
|
-
|
|
96
|
+
环境变量(按需):
|
|
93
97
|
|
|
94
98
|
```bash
|
|
95
99
|
NODE_MOBILE_PREBUILT_VERSION=v22.23.2 # 覆盖默认版本
|
|
@@ -97,17 +101,17 @@ NODE_MOBILE_PREBUILT_SKIP=1 # 跳过全部下载
|
|
|
97
101
|
NODE_MOBILE_PREBUILT_ANDROID_SKIP=1 # 只跳过 Android
|
|
98
102
|
```
|
|
99
103
|
|
|
100
|
-
|
|
104
|
+
**用户不需要手动下载和替换**--除非要换成自编译的版本,见 2.2;
|
|
101
105
|
|
|
102
106
|
### 2.1 自动下载的预编译产物
|
|
103
107
|
|
|
104
|
-
|
|
108
|
+
路径:
|
|
105
109
|
|
|
106
110
|
```
|
|
107
111
|
<你的项目>/node_modules/@flun/nodejs-mobile-react-native/android/libnode/bin/<架构>/libnode.so
|
|
108
112
|
```
|
|
109
113
|
|
|
110
|
-
以下为 v18
|
|
114
|
+
以下为 v18 产物的实测大小;其它版本的体积以实际下载为准:
|
|
111
115
|
|
|
112
116
|
| 架构 | 大小 |
|
|
113
117
|
| ----------- | ------- |
|
|
@@ -115,18 +119,19 @@ NODE_MOBILE_PREBUILT_ANDROID_SKIP=1 # 只跳过 Android
|
|
|
115
119
|
| armeabi-v7a | 56 MB |
|
|
116
120
|
| x86_64 | 62.3 MB |
|
|
117
121
|
|
|
118
|
-
|
|
122
|
+
**版本特性**:v18 产物使用 `--with-intl=none`,不含 ICU,不能用 `\p{...}` / `\P{...}` Unicode 正则,必须配 Express 4;v22
|
|
123
|
+
起产物带 full-icu,可用 Unicode 正则与 Express 5;下载版本由 `package.json` 的 `prebuiltAssets.version` 决定;
|
|
119
124
|
|
|
120
125
|
### 2.2 替换为自编译产物
|
|
121
126
|
|
|
122
|
-
自动下载的产物若不含 full-icu
|
|
127
|
+
自动下载的产物若不含 full-icu(见 2.3 的 `strings` 验证),且需跑 Express 5 或使用 Unicode 正则,替换为自编译的 full-icu 版本;
|
|
123
128
|
|
|
124
|
-
|
|
129
|
+
**预编译产物仓库**:
|
|
125
130
|
|
|
126
|
-
- GitHub
|
|
127
|
-
- Gitee
|
|
131
|
+
- GitHub:https://github.com/OpenFlun/nodejs-mobile
|
|
132
|
+
- Gitee(国内):https://gitee.com/OpenFlun/nodejs-mobile
|
|
128
133
|
|
|
129
|
-
|
|
134
|
+
**架构支持(按版本)**:
|
|
130
135
|
|
|
131
136
|
| 架构 | v18 | v22 |
|
|
132
137
|
| ----------- | --- | --- |
|
|
@@ -134,16 +139,17 @@ NODE_MOBILE_PREBUILT_ANDROID_SKIP=1 # 只跳过 Android
|
|
|
134
139
|
| x86_64 | ✓ | ✓ |
|
|
135
140
|
| armeabi-v7a | ✓ | ✗ |
|
|
136
141
|
|
|
137
|
-
|
|
142
|
+
架构支持随产物版本变化;具体以 Releases 页面各版本的产物说明为准;
|
|
138
143
|
|
|
139
|
-
|
|
144
|
+
**替换步骤**:
|
|
140
145
|
|
|
141
|
-
1. 下载 `android-libnode.zip
|
|
146
|
+
1. 下载 `android-libnode.zip`(含 `bin/` + `include/`)
|
|
142
147
|
2. **整体替换** `你的项目/node_modules/@flun/nodejs-mobile-react-native/android/libnode/`
|
|
143
|
-
3. `mobileAppConfig.js` 的 `android.abiFilters`
|
|
148
|
+
3. `mobileAppConfig.js` 的 `android.abiFilters` 只写该产物实际包含的架构(见解压后的 `libnode/bin/` 目录)
|
|
144
149
|
4. 跑 `npx node-mobile-app test` 或 `build`
|
|
145
150
|
|
|
146
|
-
CLI 指纹机制检测到 `libnode.so`
|
|
151
|
+
CLI 指纹机制检测到 `libnode.so` 变化后,会清 `.cxx` / `android/build` / `app/build`,并清 `nodejs-assets` 与依赖快照,
|
|
152
|
+
触发重装、重编、重优化--**无需手动清缓存**;
|
|
147
153
|
|
|
148
154
|
**完整自编译流程**见 `自定义libnode指南.md`;
|
|
149
155
|
|
|
@@ -154,34 +160,34 @@ CLI 指纹机制检测到 `libnode.so` 变化后,会清 `.cxx` / `android/buil
|
|
|
154
160
|
strings libnode.so | grep -c icudt78l
|
|
155
161
|
```
|
|
156
162
|
|
|
157
|
-
-
|
|
163
|
+
- 输出几千(约 4300)→ 带 full-icu
|
|
158
164
|
- 输出 0 → 不带
|
|
159
165
|
|
|
160
|
-
|
|
166
|
+
**体积对照**(实测,strip 后):
|
|
161
167
|
|
|
162
168
|
| 版本 | arm64-v8a | x86_64 |
|
|
163
169
|
| ---------------------- | --------- | -------- |
|
|
164
|
-
| v18
|
|
165
|
-
| v22
|
|
170
|
+
| v18(官方,无 ICU) | 59.6 MB | 62.3 MB |
|
|
171
|
+
| v22(自编译,full-icu) | 112.4 MB | 117.2 MB |
|
|
166
172
|
|
|
167
|
-
体积差异约 50 MB
|
|
173
|
+
体积差异约 50 MB,来自三部分:Node v22 核心引擎 + full-icu 数据(约 25–30 MB)+ V8 版本升级;**不是编译出错**;
|
|
168
174
|
|
|
169
175
|
---
|
|
170
176
|
|
|
171
|
-
## 三、Express
|
|
177
|
+
## 三、Express 版本选择(踩坑清单)
|
|
172
178
|
|
|
173
|
-
**选错版本会在 Node
|
|
179
|
+
**选错版本会在 Node 进程启动时崩溃**,且错误信息极具误导性(如 `number 116 is not a function`);
|
|
174
180
|
|
|
175
181
|
### 3.1 版本对照
|
|
176
182
|
|
|
177
183
|
| libnode.so | Node.js | ICU | Express |
|
|
178
184
|
| --------------------- | ------- | --- | ---------------------- |
|
|
179
|
-
| 官方 v18 | v18 | 无 | **4.x
|
|
180
|
-
| 自编译 v22 + full-icu | v22 | 有 | **5.x
|
|
185
|
+
| 官方 v18 | v18 | 无 | **4.x**(如 `4.22.2`) |
|
|
186
|
+
| 自编译 v22 + full-icu | v22 | 有 | **5.x**(如 `5.2.1`) |
|
|
181
187
|
|
|
182
|
-
### 3.2 场景 A
|
|
188
|
+
### 3.2 场景 A(v18 + Express 4)
|
|
183
189
|
|
|
184
|
-
`nodejs-project/package.json
|
|
190
|
+
`nodejs-project/package.json`:
|
|
185
191
|
|
|
186
192
|
```json
|
|
187
193
|
{
|
|
@@ -191,13 +197,13 @@ strings libnode.so | grep -c icudt78l
|
|
|
191
197
|
}
|
|
192
198
|
```
|
|
193
199
|
|
|
194
|
-
依赖里如有 `\P{ASCII}` 等 Unicode 正则,改写成 ASCII
|
|
200
|
+
依赖里如有 `\P{ASCII}` 等 Unicode 正则,改写成 ASCII 等价:
|
|
195
201
|
|
|
196
202
|
| 原写法 | ASCII 写法 |
|
|
197
203
|
| ----------- | -------------- |
|
|
198
204
|
| `\P{ASCII}` | `[^\x00-\x7F]` |
|
|
199
205
|
|
|
200
|
-
### 3.3 场景 B
|
|
206
|
+
### 3.3 场景 B(v22 + full-icu + Express 5)
|
|
201
207
|
|
|
202
208
|
```json
|
|
203
209
|
{
|
|
@@ -207,15 +213,16 @@ strings libnode.so | grep -c icudt78l
|
|
|
207
213
|
}
|
|
208
214
|
```
|
|
209
215
|
|
|
210
|
-
|
|
216
|
+
**三个前提**:
|
|
211
217
|
|
|
212
|
-
1. `libnode.so` 确实带 full-icu
|
|
213
|
-
2. **不要**用 `@alloc/path-to-regexp`
|
|
218
|
+
1. `libnode.so` 确实带 full-icu(用 `strings` 验证过)
|
|
219
|
+
2. **不要**用 `@alloc/path-to-regexp` 替换原版--它的 `exports` 只有 `import` 条件,CJS 下 `require()` 报
|
|
220
|
+
`No "exports" main defined`
|
|
214
221
|
3. **不要**加任何 `overrides` 强制替换 `path-to-regexp`
|
|
215
222
|
|
|
216
223
|
### 3.4 Express 5 路由语法迁移
|
|
217
224
|
|
|
218
|
-
`app.get('*')` 会抛 `TypeError: Missing parameter name
|
|
225
|
+
`app.get('*')` 会抛 `TypeError: Missing parameter name`:
|
|
219
226
|
|
|
220
227
|
| Express 4 | Express 5 |
|
|
221
228
|
| ---------------------------- | --------------------------------- |
|
|
@@ -234,7 +241,7 @@ npm ls express --all
|
|
|
234
241
|
npm ls path-to-regexp --all
|
|
235
242
|
```
|
|
236
243
|
|
|
237
|
-
|
|
244
|
+
**期望(场景 B)**:
|
|
238
245
|
|
|
239
246
|
```
|
|
240
247
|
express@5.2.1
|
|
@@ -242,7 +249,7 @@ express@5.2.1
|
|
|
242
249
|
└── path-to-regexp@8.4.2
|
|
243
250
|
```
|
|
244
251
|
|
|
245
|
-
如出现 `@alloc/path-to-regexp`,说明 `package-lock.json` 里有残留 `overrides
|
|
252
|
+
如出现 `@alloc/path-to-regexp`,说明 `package-lock.json` 里有残留 `overrides`;**彻底清理**:
|
|
246
253
|
|
|
247
254
|
```powershell
|
|
248
255
|
Remove-Item -Recurse -Force node_modules, package-lock.json
|
|
@@ -251,9 +258,10 @@ npm install
|
|
|
251
258
|
|
|
252
259
|
### 3.6 三个常见误区
|
|
253
260
|
|
|
254
|
-
- **误区 1
|
|
255
|
-
- **误区 2
|
|
256
|
-
- **误区 3
|
|
261
|
+
- **误区 1**:以为 `@alloc/path-to-regexp` 能解决 ESM 问题 → 它的 `exports` 也是纯 `import`,`require()` 依然失败
|
|
262
|
+
- **误区 2**:只改路由语法就想让 Express 5 跑 → 若 `libnode.so` 无 full-icu,加载 `path-to-regexp@8` 时仍崩
|
|
263
|
+
- **误区 3**:用 `overrides` 强制替换 `path-to-regexp` → 破坏依赖链,且 `package-lock.json` 会残留解析结果,删掉 `overrides`
|
|
264
|
+
也不生效
|
|
257
265
|
|
|
258
266
|
---
|
|
259
267
|
|
|
@@ -275,55 +283,55 @@ $adb = "$env:LOCALAPPDATA\Android\Sdk\platform-tools\adb.exe"
|
|
|
275
283
|
& $adb logcat -d | Select-String 'NODEJS-MOBILE|ReactNativeJS'
|
|
276
284
|
```
|
|
277
285
|
|
|
278
|
-
|
|
286
|
+
**正常日志**:
|
|
279
287
|
```
|
|
280
288
|
NODEJS-MOBILE: [node-mobile-app] server URL: http://127.0.0.1:3000
|
|
281
289
|
NODEJS-MOBILE: Express started on port 3000
|
|
282
290
|
ReactNativeJS: Node started on http://127.0.0.1:3000
|
|
283
291
|
```
|
|
284
292
|
|
|
285
|
-
|
|
293
|
+
**失败日志**:
|
|
286
294
|
```
|
|
287
295
|
NODEJS-MOBILE: [node-mobile-app] failed: Node 服务 5 秒内未启动 -- 请检查 ./server.js 是否调用了 listen()
|
|
288
296
|
```
|
|
289
297
|
|
|
290
|
-
|
|
298
|
+
**崩溃日志**:
|
|
291
299
|
|
|
292
300
|
```powershell
|
|
293
301
|
& $adb logcat -c
|
|
294
302
|
& $adb logcat | Select-String 'FATAL|AndroidRuntime|NODEJS-MOBILE'
|
|
295
303
|
```
|
|
296
304
|
|
|
297
|
-
### 4.2
|
|
305
|
+
### 4.2 手动清缓存(兜底)
|
|
298
306
|
|
|
299
|
-
|
|
307
|
+
**正常情况不需要**--CLI 指纹机制自动清;以下仅当指纹判断失效(如手动改过 `node-mobile-app-build/` 内文件)时用:
|
|
300
308
|
|
|
301
309
|
```powershell
|
|
302
|
-
#
|
|
310
|
+
# 最彻底:删整个 RN 工程
|
|
303
311
|
Remove-Item -Recurse -Force D:\你的项目\node-mobile-app-build
|
|
304
312
|
|
|
305
313
|
# 或删插件 CMake 缓存
|
|
306
314
|
Remove-Item -Recurse -Force D:\你的项目\node_modules\@flun\nodejs-mobile-react-native\android\.cxx
|
|
307
315
|
Remove-Item -Recurse -Force D:\你的项目\node_modules\@flun\nodejs-mobile-react-native\android\build
|
|
308
316
|
|
|
309
|
-
#
|
|
317
|
+
# 或删指纹文件(下次跑 = 全新构建)
|
|
310
318
|
Remove-Item -Force D:\你的项目\node-mobile-app-build\.build-fingerprint.json
|
|
311
319
|
```
|
|
312
320
|
|
|
313
|
-
|
|
321
|
+
或直接:
|
|
314
322
|
|
|
315
323
|
```powershell
|
|
316
324
|
npx node-mobile-app clean
|
|
317
325
|
```
|
|
318
326
|
|
|
319
|
-
### 4.3
|
|
327
|
+
### 4.3 手动端口转发(`test` 会自动做)
|
|
320
328
|
|
|
321
329
|
```powershell
|
|
322
330
|
& "$env:LOCALAPPDATA\Android\Sdk\platform-tools\adb.exe" reverse tcp:8081 tcp:8081
|
|
323
331
|
& "$env:LOCALAPPDATA\Android\Sdk\platform-tools\adb.exe" reverse --list
|
|
324
332
|
```
|
|
325
333
|
|
|
326
|
-
### 4.4
|
|
334
|
+
### 4.4 模拟器(x86_64)
|
|
327
335
|
|
|
328
336
|
```powershell
|
|
329
337
|
# 列出 AVD
|
|
@@ -333,7 +341,7 @@ npx node-mobile-app clean
|
|
|
333
341
|
& "$env:LOCALAPPDATA\Android\Sdk\emulator\emulator.exe" -avd Pixel_7_API_34
|
|
334
342
|
```
|
|
335
343
|
|
|
336
|
-
|
|
344
|
+
**三个必须**:
|
|
337
345
|
- `mobileAppConfig.js` 的 `abiFilters` 含 `x86_64`
|
|
338
346
|
- `libnode/bin/x86_64/libnode.so` 存在
|
|
339
347
|
- 模拟器镜像是 **x86_64 架构**
|
|
@@ -342,6 +350,6 @@ npx node-mobile-app clean
|
|
|
342
350
|
|
|
343
351
|
## 相关文档
|
|
344
352
|
|
|
345
|
-
- [README.md](./README.md)
|
|
346
|
-
- [自定义libnode指南.md](./自定义libnode指南.md)
|
|
347
|
-
- [libnode.so 预编译仓库](https://github.com/OpenFlun/nodejs-mobile)
|
|
353
|
+
- [README.md](./README.md) -- 快速开始、配置字段、命令
|
|
354
|
+
- [自定义libnode指南.md](./自定义libnode指南.md) -- 自编译 v22 + full-icu 完整流程
|
|
355
|
+
- [libnode.so 预编译仓库](https://github.com/OpenFlun/nodejs-mobile)([Gitee](https://gitee.com/OpenFlun/nodejs-mobile))
|
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
# 变更日志
|
|
2
|
-
## [4.0.
|
|
3
|
-
###
|
|
4
|
-
-
|
|
2
|
+
## [4.0.8] - 2026-10-26 09:56
|
|
3
|
+
### 修复
|
|
4
|
+
- 修复 `src/copy.js` 中 `out.allowScripts` 赋值语句缺少等号导致的运行时报错 `out.allowScripts is not a function`;
|
|
5
|
+
- 该问题由 4.0.7 版本折行时断点落在等号处、丢失赋值运算符引起;
|
|
5
6
|
|
|
6
|
-
## [4.0.
|
|
7
|
+
## [4.0.7] - 2026-10-25 15:16
|
|
7
8
|
### 优化
|
|
8
|
-
-
|
|
9
|
+
- 项目标点已改为以英文标点为主;
|
|
10
|
+
- 行宽改为以 123 为主,部分超宽表格改为了列表;
|
|
9
11
|
|
|
10
|
-
## [4.0.
|
|
11
|
-
###
|
|
12
|
-
-
|
|
12
|
+
## [4.0.6] - 2026-10-22 16:31
|
|
13
|
+
### 更新
|
|
14
|
+
- 同步升级了一些依赖包;
|
package/LICENSE
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
ISC 许可证 (ISC License)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Copyright (c) 2026, flun <open@flun.top>
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
特此免费授予任何获得本软件及相关文档文件("软件")副本的人,不受限制地处理本软件的权利,
|
|
6
|
+
包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件副本的权利,
|
|
7
|
+
并允许向其提供本软件的人这样做,但须满足以下条件:
|
|
6
8
|
|
|
7
9
|
上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中;
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
本软件按"原样"提供,不作任何形式的明示或暗示的保证,
|
|
12
|
+
包括但不限于适销性、特定用途的适用性和不侵权的保证;
|
|
13
|
+
在任何情况下,作者或版权持有人均不对因本软件或本软件的使用或其它交易而产生的
|
|
14
|
+
任何索赔、损害或其它责任负责,无论是合同之诉、侵权之诉还是其它行为之诉;
|
|
10
15
|
|
|
11
16
|
---
|
|
12
17
|
|
|
@@ -26,4 +31,4 @@ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
|
26
31
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
27
32
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
28
33
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
29
|
-
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
34
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|