@unif/react-native-hms-scan 0.5.2 → 0.5.4
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.md +22 -6
- package/ReactNativeHmsScan.podspec +5 -14
- package/lib/module/HmsScanView.js +1 -1
- package/lib/module/index.js +0 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/HmsScanView.d.ts +3 -3
- package/lib/typescript/src/HmsScanView.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/HmsScanView.tsx +3 -3
- package/src/index.tsx +0 -1
- package/scripts/prepare-scankit-xcframework.sh +0 -83
package/README.md
CHANGED
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
## 特性
|
|
11
11
|
|
|
12
12
|
- **三种用法** — 成品 `<Scanner>` 扫一扫页(自带权限流 / 状态机 / 主题)、headless `<HmsScanView>` 相机组件(自定义 UI)、`decodeImage(uri)` 从本地图片识别。
|
|
13
|
-
- **Android 内置引擎** — 用 Scan SDK-Plus,**非华为机型可用**,不依赖设备装 HMS Core APK
|
|
13
|
+
- **Android 内置引擎** — 用 Scan SDK-Plus,**非华为机型可用**,不依赖设备装 HMS Core APK;`scanplus` 由本库声明,宿主需把 Huawei Maven 加到实际参与依赖解析的 `repositories`。
|
|
14
|
+
- **iOS 官方 CocoaPod** — CocoaPods 安装官方 `ScanKitFrameWork 1.1.2.305`,当前只支持真机构建和运行。
|
|
14
15
|
- **零云端配置** — 两端**都不需要 AppGallery Connect / agconnect / API Key**。
|
|
15
16
|
- **14 种码制** — `QR_CODE` / `EAN_13` / `CODE_128` / `PDF417` / `DATA_MATRIX` 等,默认识别全部。
|
|
16
17
|
- 仅支持 **RN 新架构**;`@unif/react-native-design` 风格统一。
|
|
@@ -22,7 +23,19 @@ yarn add @unif/react-native-hms-scan react-native-svg
|
|
|
22
23
|
cd ios && pod install
|
|
23
24
|
```
|
|
24
25
|
|
|
25
|
-
|
|
26
|
+
CocoaPods 会直接安装官方 `ScanKitFrameWork 1.1.2.305`;`pod install` 不会在 `node_modules` 中生成 XCFramework。iOS Simulator 不属于支持目标。
|
|
27
|
+
|
|
28
|
+
Android 宿主还必须在实际参与依赖解析的仓库列表中加入 Huawei Maven;库模块自己的 `repositories` 不会传播给 consumer:
|
|
29
|
+
|
|
30
|
+
```gradle
|
|
31
|
+
allprojects {
|
|
32
|
+
repositories {
|
|
33
|
+
maven { url 'https://developer.huawei.com/repo/' }
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
`react-native-svg` 是 peer 依赖(`<Scanner>` 图标用它绘制);`<Scanner>` 还依赖 peer `@unif/react-native-design`。宿主需开启新架构。完整 peer dependencies、Android 权限、iOS `NSCameraUsageDescription` 等见[文档站 · 安装](https://unif-design.github.io/react-native-hms-scan/docs/getting-started/installation)。
|
|
26
39
|
|
|
27
40
|
## 快速开始
|
|
28
41
|
|
|
@@ -52,13 +65,16 @@ headless `<HmsScanView>`(完全自定义 UI)、图片识别 `decodeImage`、权
|
|
|
52
65
|
|
|
53
66
|
- **完整文档**(安装 · 平台配置 · API · 平台差异 · 故障排查):https://unif-design.github.io/react-native-hms-scan/
|
|
54
67
|
- **AI / Agent**(按需 fetch,别凭记忆猜 API):[llms.txt](https://unif-design.github.io/react-native-hms-scan/llms.txt) · [llms-full.txt](https://unif-design.github.io/react-native-hms-scan/llms-full.txt)
|
|
55
|
-
- **Agent Skill** `
|
|
68
|
+
- **Agent Skill** `hms-scan`(`unif` plugin):`/plugin marketplace add unif-design/skills` → `/plugin install unif@skills`
|
|
56
69
|
|
|
57
70
|
## 兼容性
|
|
58
71
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
72
|
+
| 平台 | 支持 |
|
|
73
|
+
| --- | --- |
|
|
74
|
+
| React Native | 新架构(Fabric + TurboModule)**必须开启**;在 RN 0.85 上开发与验证 |
|
|
75
|
+
| Android | ✅ minSdkVersion ≥ 24(Android 7.0) |
|
|
76
|
+
| iOS | ✅ 官方 CocoaPod `ScanKitFrameWork 1.1.2.305` + 真机 |
|
|
77
|
+
| iOS Simulator | ❌ 不支持;无硬件逻辑测试使用随包 Jest mock |
|
|
62
78
|
|
|
63
79
|
## 许可
|
|
64
80
|
|
|
@@ -16,22 +16,13 @@ Pod::Spec.new do |s|
|
|
|
16
16
|
s.source_files = "ios/**/*.{h,m,mm,swift,cpp}"
|
|
17
17
|
s.private_header_files = "ios/**/*.h"
|
|
18
18
|
|
|
19
|
-
# hms-scan
|
|
20
|
-
#
|
|
21
|
-
# EXCLUDED_ARCHS(xcframework 已补 arm64-sim 切片)、arm64 模拟器真编译就暴露了缺链接。
|
|
19
|
+
# hms-scan 使用 AVFoundation(摄像头权限 + torch);
|
|
20
|
+
# UIKit / Foundation 显式声明,避免依赖传递关系。
|
|
22
21
|
s.frameworks = "AVFoundation", "UIKit", "Foundation"
|
|
23
22
|
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
# 华为官方 ScanKitFrameWork 1.1.2 是老式 fat framework(arm64 真机 + x86_64 Intel 模拟器),
|
|
28
|
-
# 不含 arm64-simulator 切片 → Apple Silicon 模拟器会链接失败(旧版只能 EXCLUDED_ARCHS 排掉、
|
|
29
|
-
# 导致模拟器 / CI 编不过)。这里改为:prepare_command 用 Apple 官方 vtool 把真机 arm64
|
|
30
|
-
# 改写成 simulator 平台、补出 arm64-sim,打成 xcframework(device 片 / simulator 片分目录)。
|
|
31
|
-
# 详见 scripts/prepare-scankit-xcframework.sh。产物 ios/vendor/ 不入 git,pod install 时按需生成。
|
|
32
|
-
s.prepare_command = "bash scripts/prepare-scankit-xcframework.sh"
|
|
33
|
-
s.vendored_frameworks = "ios/vendor/ScanKitFrameWork.xcframework"
|
|
34
|
-
s.resources = "ios/vendor/ScanKitFrameWorkBundle.bundle"
|
|
23
|
+
# Huawei Scan Kit iOS SDK(自包含,无需 AppGallery Connect / API Key)。
|
|
24
|
+
# 当前只支持真机;Simulator 不生成兼容切片。
|
|
25
|
+
s.dependency "ScanKitFrameWork", "1.1.2.305"
|
|
35
26
|
|
|
36
27
|
# 接入 New Architecture(Fabric 组件 + TurboModule)的 codegen 依赖。
|
|
37
28
|
install_modules_dependencies(s)
|
|
@@ -4,7 +4,7 @@ import { forwardRef } from 'react';
|
|
|
4
4
|
import NativeHmsScanView from './HmsScanViewNativeComponent';
|
|
5
5
|
import { formatsToCsv, parseResultsJson } from "./format.js";
|
|
6
6
|
|
|
7
|
-
/**
|
|
7
|
+
/** 平台相关的暗光提示 / 手电状态。 */
|
|
8
8
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
9
|
/**
|
|
10
10
|
* 底层 headless 扫码相机组件:只渲染相机预览并发出扫码结果事件。
|
package/lib/module/index.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
// @unif/react-native-hms-scan —— 华为 HMS 统一扫码服务 RN bridge(Fabric 新架构)
|
|
4
4
|
// 能力:定制视图扫码(底层 <HmsScanView> + 成品 <Scanner> 扫一扫页)+ 图片识别(decodeImage)+ 相机权限。
|
|
5
|
-
// 0.2.1:package.json#files 补 scripts/,修 pod install 缺 prepare-scankit-xcframework.sh(podspec prepare_command 调用)。
|
|
6
5
|
// 文档站:https://unif-design.github.io/react-native-hms-scan/(版本随发版自动部署)。
|
|
7
6
|
|
|
8
7
|
// ── 类型与常量 ──
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ALL_BARCODE_FORMATS","HmsScanError","coerceFormat","coerceContentType","formatsToCsv","HmsScanView","decodeImage","getCameraPermissionStatus","requestCameraPermission","Scanner"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA;AACA;AACA
|
|
1
|
+
{"version":3,"names":["ALL_BARCODE_FORMATS","HmsScanError","coerceFormat","coerceContentType","formatsToCsv","HmsScanView","decodeImage","getCameraPermissionStatus","requestCameraPermission","Scanner"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA;AACA;AACA;;AAEA;AACA,SACEA,mBAAmB,EACnBC,YAAY,QACP,YAAS;AAYhB;AACA,SAASC,YAAY,EAAEC,iBAAiB,EAAEC,YAAY,QAAQ,aAAU;;AAExE;AACA,SAASC,WAAW,QAAQ,kBAAe;AAG3C;AACA,SAASC,WAAW,QAAQ,kBAAe;;AAE3C;AACA,SAASC,yBAAyB,EAAEC,uBAAuB,QAAQ,kBAAe;;AAElF;AACA,SAASC,OAAO,QAAQ,sBAAmB","ignoreList":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { ViewProps } from 'react-native';
|
|
2
2
|
import type { BarcodeFormat, ScanResult } from './types';
|
|
3
|
-
/**
|
|
3
|
+
/** 平台相关的暗光提示 / 手电状态。 */
|
|
4
4
|
export interface TorchStatus {
|
|
5
|
-
/**
|
|
5
|
+
/** Android:环境暗光提示;iOS:设备是否有手电硬件。 */
|
|
6
6
|
available: boolean;
|
|
7
7
|
/** 手电当前是否点亮。 */
|
|
8
8
|
on: boolean;
|
|
@@ -23,7 +23,7 @@ export interface HmsScanViewProps extends ViewProps {
|
|
|
23
23
|
code: string;
|
|
24
24
|
message: string;
|
|
25
25
|
}) => void;
|
|
26
|
-
/**
|
|
26
|
+
/** Android 暗光提示或 iOS 手电硬件 / 点亮状态变化时回调。 */
|
|
27
27
|
onTorchStatus?: (status: TorchStatus) => void;
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HmsScanView.d.ts","sourceRoot":"","sources":["../../../src/HmsScanView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEzD,
|
|
1
|
+
{"version":3,"file":"HmsScanView.d.ts","sourceRoot":"","sources":["../../../src/HmsScanView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEzD,wBAAwB;AACxB,MAAM,WAAW,WAAW;IAC1B,oCAAoC;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB;IAChB,EAAE,EAAE,OAAO,CAAC;CACb;AAED,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,oBAAoB;IACpB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,oBAAoB;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wBAAwB;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4BAA4B;IAC5B,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC/C,kBAAkB;IAClB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACjE,0CAA0C;IAC1C,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;CAC/C;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,iOAiDtB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAKA,OAAO,EACL,mBAAmB,EACnB,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,WAAW,GACZ,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGzE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAGnF,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unif/react-native-hms-scan",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.4",
|
|
4
4
|
"description": "华为 HMS 统一扫码服务 React Native bridge:定制视图扫码 + 图片识别 (Scan SDK-Plus / ScanKitFrameWork,@unif 私有)",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
6
|
"types": "./lib/typescript/src/index.d.ts",
|
|
@@ -24,7 +24,6 @@
|
|
|
24
24
|
"ios",
|
|
25
25
|
"*.podspec",
|
|
26
26
|
"react-native.config.js",
|
|
27
|
-
"scripts",
|
|
28
27
|
"!ios/build",
|
|
29
28
|
"!android/build",
|
|
30
29
|
"!android/gradle",
|
|
@@ -41,7 +40,8 @@
|
|
|
41
40
|
"clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib",
|
|
42
41
|
"prepare": "bob build",
|
|
43
42
|
"typecheck": "tsc",
|
|
44
|
-
"test": "jest",
|
|
43
|
+
"test": "yarn verify:ios-integration && jest",
|
|
44
|
+
"verify:ios-integration": "node scripts/verify-ios-integration.mjs",
|
|
45
45
|
"lint": "eslint \"**/*.{js,ts,tsx}\""
|
|
46
46
|
},
|
|
47
47
|
"keywords": [
|
package/src/HmsScanView.tsx
CHANGED
|
@@ -4,9 +4,9 @@ import NativeHmsScanView from './HmsScanViewNativeComponent';
|
|
|
4
4
|
import { formatsToCsv, parseResultsJson } from './format';
|
|
5
5
|
import type { BarcodeFormat, ScanResult } from './types';
|
|
6
6
|
|
|
7
|
-
/**
|
|
7
|
+
/** 平台相关的暗光提示 / 手电状态。 */
|
|
8
8
|
export interface TorchStatus {
|
|
9
|
-
/**
|
|
9
|
+
/** Android:环境暗光提示;iOS:设备是否有手电硬件。 */
|
|
10
10
|
available: boolean;
|
|
11
11
|
/** 手电当前是否点亮。 */
|
|
12
12
|
on: boolean;
|
|
@@ -25,7 +25,7 @@ export interface HmsScanViewProps extends ViewProps {
|
|
|
25
25
|
onScanResult?: (results: ScanResult[]) => void;
|
|
26
26
|
/** 相机/解码出错时回调。 */
|
|
27
27
|
onScanError?: (error: { code: string; message: string }) => void;
|
|
28
|
-
/**
|
|
28
|
+
/** Android 暗光提示或 iOS 手电硬件 / 点亮状态变化时回调。 */
|
|
29
29
|
onTorchStatus?: (status: TorchStatus) => void;
|
|
30
30
|
}
|
|
31
31
|
|
package/src/index.tsx
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// @unif/react-native-hms-scan —— 华为 HMS 统一扫码服务 RN bridge(Fabric 新架构)
|
|
2
2
|
// 能力:定制视图扫码(底层 <HmsScanView> + 成品 <Scanner> 扫一扫页)+ 图片识别(decodeImage)+ 相机权限。
|
|
3
|
-
// 0.2.1:package.json#files 补 scripts/,修 pod install 缺 prepare-scankit-xcframework.sh(podspec prepare_command 调用)。
|
|
4
3
|
// 文档站:https://unif-design.github.io/react-native-hms-scan/(版本随发版自动部署)。
|
|
5
4
|
|
|
6
5
|
// ── 类型与常量 ──
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
# 生成含 arm64-simulator 切片的 ScanKitFrameWork.xcframework(+ 资源 bundle)。
|
|
4
|
-
#
|
|
5
|
-
# 背景:华为官方 ScanKitFrameWork 1.1.2 是 2020 年前的老式 fat framework
|
|
6
|
-
# (arm64 = 真机 / x86_64 = Intel 模拟器,LC_VERSION_MIN_IPHONEOS 标记),
|
|
7
|
-
# 不含 arm64-simulator 切片。Apple Silicon(M 芯片)的 iOS 模拟器是 arm64-sim,
|
|
8
|
-
# 会因缺这一片而链接失败(旧 podspec 只能 EXCLUDED_ARCHS 排掉、导致模拟器编不过)。
|
|
9
|
-
#
|
|
10
|
-
# 这里用 Apple 官方 vtool 把真机 arm64 改写成 simulator 平台、补出 arm64-sim,
|
|
11
|
-
# 再 lipo 合并 x86_64,最后 xcodebuild -create-xcframework 打成 xcframework
|
|
12
|
-
# (device 片 / simulator 片分目录,fat binary 不允许同 arch 共存)。
|
|
13
|
-
#
|
|
14
|
-
# vtool 转出来的 sim 片仅用于编译/链接(CI、模拟器跑通);真机仍走 device 片。
|
|
15
|
-
# 模拟器上真去调摄像头硬件会崩,但模拟器本无扫码硬件场景,不影响。
|
|
16
|
-
#
|
|
17
|
-
# 由 ReactNativeHmsScan.podspec 的 prepare_command 在 pod install 时调用。
|
|
18
|
-
# 产物 ios/vendor/ 不入 git —— 按需生成(已生成则跳过)。
|
|
19
|
-
#
|
|
20
|
-
set -euo pipefail
|
|
21
|
-
|
|
22
|
-
OUT_DIR="ios/vendor"
|
|
23
|
-
XCFW="$OUT_DIR/ScanKitFrameWork.xcframework"
|
|
24
|
-
BUNDLE="$OUT_DIR/ScanKitFrameWorkBundle.bundle"
|
|
25
|
-
|
|
26
|
-
# 华为官方 Scan SDK-Plus iOS 工具包(scansdk-ios-tool 1.1.0.305)。
|
|
27
|
-
# URL 取自 ScanKitFrameWork 的 CocoaPods spec(source.http),带 10 年签名有效期。
|
|
28
|
-
ZIP_URL="https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_package_901_9/eb/v3/FoQltlwsS0Ge-TitlHPL3A/scansdk-ios-tool-1.1.0.305.zip?HW-CC-KV=V1&HW-CC-Date=20230321T064901Z&HW-CC-Expire=315360000&HW-CC-Sign=C23A0122B070535FDFA38C56BA62E25E6BE66582D963B8C7F5DDF4FCA5C34CFF"
|
|
29
|
-
|
|
30
|
-
# 只在 macOS 生成(需 lipo / vtool / xcodebuild);Android 等平台的 pod install 直接跳过。
|
|
31
|
-
if [ "$(uname)" != "Darwin" ]; then
|
|
32
|
-
echo "[scankit] 非 macOS,跳过 xcframework 生成"
|
|
33
|
-
exit 0
|
|
34
|
-
fi
|
|
35
|
-
|
|
36
|
-
# 已生成且两个平台切片齐全 → 跳过(避免每次 pod install 重复下载几十 MB)。
|
|
37
|
-
if [ -d "$XCFW/ios-arm64" ] && [ -d "$XCFW/ios-arm64_x86_64-simulator" ] && [ -d "$BUNDLE" ]; then
|
|
38
|
-
echo "[scankit] xcframework 已存在,跳过"
|
|
39
|
-
exit 0
|
|
40
|
-
fi
|
|
41
|
-
|
|
42
|
-
echo "[scankit] 下载华为 Scan SDK ..."
|
|
43
|
-
TMP="$(mktemp -d)"
|
|
44
|
-
trap 'rm -rf "$TMP"' EXIT
|
|
45
|
-
curl -fsSL "$ZIP_URL" -o "$TMP/sdk.zip"
|
|
46
|
-
unzip -q "$TMP/sdk.zip" -d "$TMP/sdk"
|
|
47
|
-
|
|
48
|
-
SRC_FW="$(find "$TMP/sdk" -type d -name 'ScanKitFrameWork.framework' | head -1)"
|
|
49
|
-
SRC_BUNDLE="$(find "$TMP/sdk" -type d -name 'ScanKitFrameWorkBundle.bundle' | head -1)"
|
|
50
|
-
if [ -z "$SRC_FW" ]; then
|
|
51
|
-
echo "[scankit] ✗ 解压后未找到 ScanKitFrameWork.framework" >&2
|
|
52
|
-
exit 1
|
|
53
|
-
fi
|
|
54
|
-
BIN="$SRC_FW/ScanKitFrameWork"
|
|
55
|
-
|
|
56
|
-
echo "[scankit] 拆片 + vtool 补 arm64-simulator + 组 xcframework ..."
|
|
57
|
-
mkdir -p "$TMP/device" "$TMP/sim"
|
|
58
|
-
|
|
59
|
-
# device:真机 arm64
|
|
60
|
-
cp -R "$SRC_FW" "$TMP/device/ScanKitFrameWork.framework"
|
|
61
|
-
lipo "$BIN" -thin arm64 -output "$TMP/device/ScanKitFrameWork.framework/ScanKitFrameWork"
|
|
62
|
-
|
|
63
|
-
# simulator:arm64(真机片经 vtool 改写成 simulator 平台 7)+ x86_64(原 Intel 模拟器片)
|
|
64
|
-
cp -R "$SRC_FW" "$TMP/sim/ScanKitFrameWork.framework"
|
|
65
|
-
lipo "$BIN" -thin arm64 -output "$TMP/a64d"
|
|
66
|
-
vtool -arch arm64 -set-build-version 7 13.5 13.5 -replace -output "$TMP/a64s" "$TMP/a64d"
|
|
67
|
-
lipo "$BIN" -thin x86_64 -output "$TMP/x86"
|
|
68
|
-
lipo -create "$TMP/a64s" "$TMP/x86" -output "$TMP/sim/ScanKitFrameWork.framework/ScanKitFrameWork"
|
|
69
|
-
|
|
70
|
-
mkdir -p "$OUT_DIR"
|
|
71
|
-
rm -rf "$XCFW"
|
|
72
|
-
xcodebuild -create-xcframework \
|
|
73
|
-
-framework "$TMP/device/ScanKitFrameWork.framework" \
|
|
74
|
-
-framework "$TMP/sim/ScanKitFrameWork.framework" \
|
|
75
|
-
-output "$XCFW"
|
|
76
|
-
|
|
77
|
-
# 资源 bundle(扫码 UI 资源),原由 ScanKitFrameWork pod 带,现随 vendored 一起放。
|
|
78
|
-
if [ -n "$SRC_BUNDLE" ]; then
|
|
79
|
-
rm -rf "$BUNDLE"
|
|
80
|
-
cp -R "$SRC_BUNDLE" "$BUNDLE"
|
|
81
|
-
fi
|
|
82
|
-
|
|
83
|
-
echo "[scankit] ✓ 生成 $XCFW(+ bundle)"
|