# @blotch/angular-lynx-native 中文文档

规范地址：https://npmcn.com/package/%40blotch/angular-lynx-native/

版本：22\.2\.18
npm 元数据更新时间：2026-11-08T01:59:27.183Z
中文译文更新时间：2026-11-08T08:10:42.439Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40blotch/angular-lynx-native
原文对照：https://npmcn.com/package/%40blotch/angular-lynx-native/?lang=original
项目主页：https://github.com/Blotch-Smart-Frames/AngularLynx#readme
源码仓库：https://github.com/Blotch-Smart-Frames/AngularLynx

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：591 kB，119 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.12
- 运行依赖：0 个
- 首次发布：2026-10-15T23:05:17.552Z
- 最新版本发布：2026-11-08T01:59:26.848Z
- 近 30 天下载量：3422（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：19（近 12 个月 19 个）

## 中文简介

将 AngularLynx 应用程序建入 iOS 和 Android 二进制

## 安装

```sh
npm install @blotch/angular-lynx-native
```

也可以使用：`pnpm add @blotch/angular-lynx-native`、`yarn add @blotch/angular-lynx-native`、`bun add @blotch/angular-lynx-native`

## README

# @blotch/ angular- lynx- 本地化

将AngularLynx应用程序构建为iOS和Android二进制. 你不直接说: `ng build --platform ios|android|all` (单位:千美元) `@blotch/angular-lynx-build:application` 建造者)在建造了Lynx捆后加载. 这是依赖 [`@blotch/angular-lynx-build`](https://npmcn.com/package/%40blotch/build),哪个 `ng add @blotch/angular-lynx` 安装.

用户文档 : [发布您的应用](https://npmcn.com/package/%40blotch/website/docs/guide/building-for-production.mdx)设计及其推理: [`investigations/native-app-builds.md`](https://npmcn.com/package/investigations/native-app-builds.md)。 。 。 .

## 它会做什么

1.  **生成** 本地项目来源 `templates/ios` 或者说 `templates/android` 输入 Angular 构建缓存中的项目文件夹(`.angular/cache/<Angular version>/<project>/lynx-native/<platform>`,哪个 `ng new` 已经 gi出和 `ng cache clean` ),从 `angular.json` 输入少数文件的模板标记。 它只有在其输入的散列变化(这个软件包的版本,模板,选项,图标)时再生出,所以Xcode和Gradle保持了它们的增量状态.
2.  **副本** `dist/` (没有网络捆绑)进入项目.
3.  **构建** 带它 `xcodebuild` 或 Gradle 并复制二进制到 `dist/<platform>/`。 。 。 .
4.  **运行** 它,与 `--run` (单位:千美元)`src/ios/run.ts`, (中文(简体) ), `src/android/run.ts`: 选择模拟器、模拟器或电话(`--device`,否则就是运行中的一款,否则就是最新的iPhone模拟器或第一个AVD),并在第3步之前开始,所以它在应用程序编译时会靴子;然后安装应用程序并打开. iOS 用途 `simctl` 并显示设备Hub中的模拟器(`devices://device/open?id=<UDID>`)或,在Xcode 27.1,模拟器应用程序之前. Android 使用 SDK 软件 `adb` 财务报告和审定财务报表 `emulator` 并按部件打开发射器活动.

弹出的项目( E)`ios/` 或者说 `android/` 带有 `.angular-lynx-ejected` 标记,由 `ng generate @blotch/angular-lynx:eject`)是按原样建造的,永远不会再被再生成.

## 炮弹

两个都是全屏 `LynxView` 运行 `main.lynx.bundle`;角路由器在它内部进行所有导航. 应用程序内部的套装和资产负载,所以RSpeedy默认资产前缀(`/static/...`无配置的工作。 这个 `LynxView` 在状态栏和家用指示器下填充屏幕(`"edgeToEdge": false` 在角. json 把它放在安全区域里代替。 林克斯自己的CSS系统 `env(safe-area-inset-*)` 是0在那里:Android从未设置过它,而iOS外壳生成它的 `LynxView` 在窗户是钥匙之前 Lynx读它的地方 运行时间给出每个 `env(safe-area-inset-*)` 贝壳发送的套接字( 见 `safe-area-insets.ts` 故他们遵循正道。 在Android上,活性仍然会给键盘打出一页,而下方的入位值在打开时为0. 一个 `<overlay>` 屏幕也填满,所以底页覆盖到屏幕边缘的页面,并用套件将内容贴上:在Android XElement上方的覆盖窗口停止在导航栏上方,所以 shell 注册它自己的 `overlay` 行为, `EdgeToEdgeOverlay.kt`,它的窗口 吸引每个酒吧,就像活动.

两者都发送同样的全球道具,运行时间的服务读作: `platform`, (中文(简体) ), `theme` (再次当电话在灯光和黑暗之间开关), `appLocale` (电话语言作为BCP 47标签), `appTimeZone` (其时区名称为IANA,即: `intl` 构建选项 `Intl.DateTimeFormat` 使用), `isNotchScreen`, (中文(简体) ), `edgeToEdge`,安全区域设置 `safeAreaTop`, (中文(简体) ), `safeAreaBottom`, (中文(简体) ), `safeAreaLeft` 财务报告和审定财务报表 `safeAreaRight` (当它们改变时), `osVersion` (Lynx离开主线的) `SystemInfo`)和无障碍环境 `reduceMotion`, (中文(简体) ), `reduceTransparency` (仅iOS)和 `increaseContrast`,在用户更改时再次更改。 Android 12号,后来也发送 `dynamicColors`,壁纸的材料 3 在光和暗中的颜色角色(`DynamicColors.kt`),再次当用户改变其壁纸或颜色时。 Lynx 浏览器发送 `theme` 财务报告和审定财务报表 `isNotchScreen` 也一样,但是没有 `appLocale`, (中文(简体) ), `appTimeZone`, (中文(简体) ), `osVersion` 或无障碍环境。 见 [`templates/android/README.md`](https://npmcn.com/package/%40blotch/angular-lynx-native/templates/android/README.md) 安卓贝壳的细节.

二者都注册运行时间服务调用的地方模块,Lynx Explorer没有: `AngularLynxWebAuth` (单位:千美元)`WebAuthModule.swift`, (中文(简体) ), `WebAuthModule.kt`)打开 `LynxWebAuthSession`'' 登录页面, in `ASWebAuthenticationSession` 在iOS和Android上的自定义标签上,返回它重定向的URL. `AngularLynxLocalStorage` (单位:千美元)`LocalStorageModule.swift`, (中文(简体) ), `LocalStorageModule.kt`保留 `LynxLocalStorage`'在 a 中的值 `UserDefaults` 套间和一个 `SharedPreferences` 他们自己的文件. `AngularLynxSecureStorage` (单位:千美元)`SecureStorageModule.swift`, (中文(简体) ), `SecureStorageModule.kt`保留 `LynxSecureStorage`在iOS上的键链中,在Android上的键链中 `SharedPreferences`,每个值由 Android Keystore 键用 AES-GCM 加密,文件 Auto 备份退出(`res/xml/backup_rules.xml`, (中文(简体) ), `data_extraction_rules.xml`) (中文(简体) ). `AngularLynxLinking` (单位:千美元)`LinkingModule.swift`, (中文(简体) ), `LinkingModule.kt`)打开 `LynxLinking`'链接 : `openURL` 与 `UIApplication.open` 还有一个 `ACTION_VIEW` 意图, `openInApp` 内 `SFSafariViewController` 和一个自定义标签,以及 `canOpenURL` 与 `UIApplication.canOpenURL` 财务报告和审定财务报表 `resolveActivity`,它只回答生成器从角写出来的方案。 强森的 `canOpenURLSchemes` (与 `http`, (中文(简体) ), `https`, (中文(简体) ), `mailto`, (中文(简体) ), `tel` 财务报告和审定财务报表 `sms`)进入Info.plist's `LSApplicationQueriesSchemes` 和名单 `<queries>`。 。 。 . `AngularLynxImagePicker` (单位:千美元)`ImagePickerModule.swift`, (中文(简体) ), `ImagePickerModule.kt`)让当事人为 `LynxImagePicker`,与 `PHPickerViewController` 在iOS上和Android上的"取相"(Photo Picker)上,两者都不需要授权,并以Base64回电,当应用程序要求一个更小的JPEG或照片是HEIC等格式时,重新编码为直立JPEG. Android 也拥有过 `AngularLynxShell`后面的按钮.

`AngularLynxClipboard` (单位:千美元)`ClipboardModule.swift`, (中文(简体) ), `ClipboardModule.kt`(续) `LynxClipboard`文本为 `UIPasteboard.general` 在iOS和 `ClipboardManager` 在Android, 并读回来.

两个链接 Lynx 的 XElement 库,它持有 `<input>`, (中文(简体) ), `<textarea>`, (中文(简体) ), `<overlay>`, (中文(简体) ), `<svg>`, (中文(简体) ), `<blur-view>`, (中文(简体) ), `<viewpager>`, (中文(简体) ), `<refresh>`,则 `<scroll-coordinator>` 家庭 家庭 家庭, `<webview>` 财务报告和审定财务报表 `<video>`. Lynx的核心不包含这些,一个不注册它们的主机使得这些标记(在Android上,在它们之后也没有任何)成为一无所有. XElement的AnimaX和Markdown元素被忽略:运行时间不支持它们. 在iOS上, `<blur-view>` 是XElement的 更多的UIKit 在里面(`App/BlurView.swift`(单位:千美元) `blur-material` uIKit 适应性模糊材料的属性, 玻璃组件在 iOS 26 上之前绘制其设计( Lynx 模糊视图只有 iOS 13 之前的样式); Liquid Glass 中实现、溶解和减轻 a 内部效应之间的作用 `glass-container`, Lynx 立即设定效果;和 a `glass-effect-id` 属性,将两个玻璃形状对齐,跨越一个变化,这样一个变形为另一个(`App/GlassTransitions.swift`) (中文(简体) ).

两者都有 `<canvas>` 与 WebGL2( 第211期), Lynx 不使用: a `canvas` 要素(`App/AngularLynxWebGL.m`是因为 `AngularLynxCanvas`页:1 `CAMetalLayer` 视图; `CanvasUI.kt`页:1 `TextureView`)和 `AngularLynxWebGL` 模块,运行时的 WebGL2 上下文发送它的呼叫,在 OpenGL ES 3.0 上运行(`App/AngularLynxWebGLContext.m`, (中文(简体) ), `WebGLContext.kt`) (中文(简体) ). 在iOS上,这是 [英格兰](https://chromium.googlesource.com/angle/angle)'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 安格莱的 `libEGL` 财务报告和审定财务报表 `libGLESv2` 框架,及其标题,请输入 Lynx 框架zip(下方)。 Android的OpenGL ES是手机的,仿真器已经在Mac的GPU上运行了. 运行时间运行在 Lynx 的主线上,WebGL 需要同步解答,因此两者都打开了主线程模块(`enableMTSModule`:然后从主线程 JavaScript 调用配置的模块 `lynx.module(name)`。 。 。 . `AngularLynxAssets` (单位:千美元)`App/AssetsModule.swift`, (中文(简体) ), `AssetsModule.kt`)读取主线程的应用程序捆绑文件 `fetch`,没有页面 URL 解决 `/static/...` 反对。 WebGL 模块读取的命令编号(`App/AngularLynxWebGLOps.h`, (中文(简体) ), `WebGLOps.kt`)是从运行时生成的 `canvas/webgl-ops.ts` 与 `npm run generate:webgl-ops -w packages/native`· ; `scripts/webgl-ops.test.ts` 当他们被困住时就失败了 UIKit 模块将 Apple 的 OpenGL ES 信头导入到每个文件, 所以 `AngularLynxWebGLContext.m` 关闭其贬值警告,这些警告以相同名称的ANGLE的功能为依据;明确链接到 `libGLESv2` 出现在UIKit的自动1到OpenGLES之前,所以这些呼叫绑定在ANGLE上.

|  | iOS系统 | 机器人 |
| --- | --- | --- |
| 语言 | 斯威夫特,场景生命周期 | 科特林语Name |
| 林克丝 | 4.1.0,预建的XCF框架(下) | 4.1.0 马文中心AARs |
| 元素 | 链接和登记(`App/XElementRegistry.swift`(中文(简体) ) | 链接和登记(`XElementBehaviors`(中文(简体) ) |
| 工具链 | Xcode 27, iOS 15+ (英语) | AGP 9.4、Gradle 9.6、JDK 17+、SDK 36、minSdk 24 |
| 生成配置 | `Config/App.xcconfig`, (中文(简体) ), `App/Info.plist` 标记 | `angular-lynx.properties`, (中文(简体) ), `AndroidManifest.xml` 标记 |

## IOS 的 Lynx 版本

Lynx出版iOS只作为源代码活塞,这需要几分钟来编译和需要CocoaPods(并因此需要Ruby). `scripts/build-lynx-ios-frameworks.sh` 将它们编译为 XCF 框架( 大约32 MB ziped, 单独 zip 有调试符号): Lynx, PrimJS, Xlement 及其依赖性, 和 ANGLE 的 `libEGL` 财务报告和审定财务报表 `libGLESv2`,并带有ANGLE的抬头 `ANGLE/include`。构建者下载被绑在 `src/ios/frameworks.ts` (URL和SHA-256)首先使用并缓存到 `~/.cache/angular-lynx/lynx-ios/<version>-<build>`。 。 。 .

ANGLE 仅用 Chrimium 的工具构建( depot tools, GN and Ninja), 因此 Lynx 脚本运行 `scripts/build-angle-ios-frameworks.sh`,它检查ANGLE修订时运出的一个Chrome稳定放行(`ANGLE_REVISION`),为设备单独构建其金属后端并同时构建模拟器架构,并预建了ANGLE自己的金属遮阳器(否则当一个app第一次做上下文时它会编译它们,这在模拟器的一款新安装上花费了5.7 s),并留下了依赖性ANGLE的DEPS取来进行测试和其他后端. 结账时间大约为5GB,3个建筑共需约1分半钟;单独运行(`npm run build:angle-ios-frameworks -w packages/native`尝试新的修订。 ANGLE 将大约 6 MB 添加到一个应用程序中(2 MB 压缩到 `.ipa`),与Lynx的34 MB相对抗,每个应用程序都会链接到它,所以 `<canvas>` 在每一个建筑中工作.

Lynx 4.1.0的拉链是 [`lynx-ios-4.1.0-3` 释放](https://github.com/Blotch-Smart-Frames/AngularLynx/releases/tag/lynx-ios-4.1.0-3)。构建数字计算一个 Lynx 版本的重建,该版本的框架已经改变(2个添加了XElement, 3 ANGLE),并且是缓存文件夹的一部分,所以拥有更古老的zip下载新版本的机器. 对于新的 Lynx 版本, 在脚本中按下版本并重置 `BUILD` 改为 1; 更改同一版本的框架, 凸起 `BUILD` (脚本和 `LYNX_IOS`) (中文(简体) ). 然后运行 **Lynx iOS 框架** 工作流程与 `publish` (或本地脚本),并给新拉链的URL和SHA-256打针. 要在发布前先测试本地创建的文件夹 :

```sh
npm run build:lynx-ios-frameworks -w packages/native   # needs Xcode, Ruby >= 2.7 with Bundler for CocoaPods, and Python 3 for ANGLE (the script downloads Xcode's Metal toolchain if it's missing)
export ANGULAR_LYNX_IOS_FRAMEWORKS=$PWD/packages/native/.lynx-ios-build/out/LynxFrameworks
```

## 更改模板

-   **iOS: (英语)** `App/` 是一个同步文件夹,所以添加或删除 Swift 文件不需要更改工程 。 对于其他任何东西(构建设置、框架、资源文件夹),编辑 `APP_PROJECT` 内 `scripts/generate-ios-project.ts`。 。 。 . `App.xcodeproj` 不在基特语: `iosTemplateProject` 虚拟插件在 `vite.config.ts` 让它与 [`@bacons/xcode`](https://github.com/EvanBacon/xcode),只需要节点,每节点 `npm run build` 财务报告和审定财务报表 `npm test`,而npm 包运结果。 运行 `npm run generate:ios-project -w packages/native` 以不使用 TypeScript 构建来渲染它,例如打开 Xcode 模板.
-   **两者:** 运行 `npm run e2e -- --ios --shell` (Android的第6层,见 [E2E 读取](https://npmcn.com/package/%40blotch/e2e/README.md)通过每个平台的一款新软件来建设和开发.

## 常见问题

### @blotch/angular-lynx-native 是什么？

将 AngularLynx 应用程序建入 iOS 和 Android 二进制

### 如何安装 @blotch/angular-lynx-native？

在项目目录运行 npm install @blotch/angular-lynx-native，或使用 pnpm add / yarn add / bun add。

### @blotch/angular-lynx-native 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @blotch/angular-lynx-native 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @blotch/angular-lynx-native 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=22\.12。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @blotch/angular-lynx-native 可以商用吗？

@blotch/angular-lynx-native 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @blotch/angular-lynx-native 的下载量有多少？

根据 npm 官方下载统计，@blotch/angular-lynx-native 在 2026/10/09 – 2026/11/07 这 30 天内被下载 3,422 次，日均约 114 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @blotch/angular-lynx-native 还在维护吗？

最新版本 22\.2\.18 发布于 2026/11/08（今天）；至今共发布 19 个版本，其中过去 12 个月发布了 19 个；首次发布于 2026/10/16。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

