提交 ed883e80 编写于 作者: DCloud_iOS_WZT's avatar DCloud_iOS_WZT

优化iOS原生SDK文档描述

上级 577f3a24
# 生成自定义基座 # 生成自定义基座
## 导出自定义基座 ## 导出自定义基座
1. 确保原生工程中`应用名称``versionName``versionCode`离线资源中的`manifest.json`是否一致 1. 确保原生工程中`应用名称``versionName``versionCode`资源文件中的`manifest.json`是否一致
2. 确保`Target -> Info -> uniapp-x`节点下的`appid`与工程中`uni-app-x -> apps`下的目录名称以及该目录下`manifest.json`文件中的`id`三者是否一致 2. 确保`Target -> Info -> uniapp-x`节点下的`appid`与工程中`uni-app-x -> apps`下的目录名称以及该目录下`manifest.json`文件中的`id`三者是否一致
3. 确保`Target -> Info -> uniapp-x`节点下的`uniRuntimeVersion``HBuilder X`版本号是否一致 3. 确保`Target -> Info -> uniapp-x`节点下的`uniRuntimeVersion``HBuilder X`版本号是否一致
4. 在Xcode菜单栏中,选择`Product -> Archive` 根据提示导出ipa文件 4. 在Xcode菜单栏中,选择`Product -> Archive` 根据提示导出ipa文件
## 导入HBuilderX ## 导入HBuilderX
1. 将生成的`ipa`文件重命名为`iOS_debug.ipa` 1. 将生成的`ipa`文件重命名为`iOS_debug.ipa`
2.`iOS_debug.ipa`拷贝到uni-app x项目的`unpackage/debug`目录下 2.`iOS_debug.ipa`拷贝到`uni-app x`项目的`unpackage/debug`目录下
3. 点击 `运行 -> 运行到iOS App基座`,勾选`使用自定义基座运行` 3. 点击 `运行 -> 运行到iOS App基座`,勾选`使用自定义基座运行`,点击`运行`即可
\ No newline at end of file \ No newline at end of file
# uni-app x iOS离线打包SDK # uni-app x iOS原生SDK
## alpha版 ## alpha版
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
| UTSOC.h、UTSOC.mm、uni-getAppAuthorizeSetting-index.swift、uni-getAppBaseInfo-index.swift、uni-getDeviceInfo-index.swift、uni-getSystemInfo-index.swift、uni-getSystemSetting-index.swift、uni-openAppAuthorizeSetting-index.swift、uni-prompt-index.swift、uni-rpx2px-index.swift、uni-storage-index.swift、uni-theme-index.swift | DCloudUniappRuntime.xcframework、DCloudUTSFoundation.xcframework、DCUniToast.xcframework、DCloudAlertController.xcframework、storage.framework| uts-config.json | | UTSOC.h、UTSOC.mm、uni-getAppAuthorizeSetting-index.swift、uni-getAppBaseInfo-index.swift、uni-getDeviceInfo-index.swift、uni-getSystemInfo-index.swift、uni-getSystemSetting-index.swift、uni-openAppAuthorizeSetting-index.swift、uni-prompt-index.swift、uni-rpx2px-index.swift、uni-storage-index.swift、uni-theme-index.swift | DCloudUniappRuntime.xcframework、DCloudUTSFoundation.xcframework、DCUniToast.xcframework、DCloudAlertController.xcframework、storage.framework| uts-config.json |
### 配置其他模块(可选) ### 配置其他模块(可选)
根据离线资源中的`manifest.json`文件包含的模块名称,选择以下源文件(`SDK/ExtApiSrc 目录下`)、依赖库(`SDK/Libs 目录下`)添加到DCloudUTSExtAPI工程中,依赖库均设置为`Do Not Embed` 根据资源文件中的`manifest.json`文件包含的模块名称,选择以下源文件(`SDK/ExtApiSrc 目录下`)、依赖库(`SDK/Libs 目录下`)添加到DCloudUTSExtAPI工程中,依赖库均设置为`Do Not Embed`
| 模块名称 | 源文件 | 依赖库 | 系统依赖库 | | 模块名称 | 源文件 | 依赖库 | 系统依赖库 |
|---|---|---|---| |---|---|---|---|
| uni-createWebviewContext | uni-createWebviewContext-index.swift | | | | uni-createWebviewContext | uni-createWebviewContext-index.swift | | |
...@@ -113,7 +113,7 @@ xcodebuild -create-xcframework -framework 真机路径/DCloudUTSExtAPI.framework ...@@ -113,7 +113,7 @@ xcodebuild -create-xcframework -framework 真机路径/DCloudUTSExtAPI.framework
## 主工程配置 ## 主工程配置
根据离线资源中的`manifest.json`文件包含的模块名称,根据下述相关模块文档向`主工程`添加依赖以及工程配置 根据资源文件中的`manifest.json`文件包含的模块名称,根据下述相关模块文档向`主工程`添加依赖以及工程配置
## uni-prompt ## uni-prompt
### 添加依赖库以及资源文件 ### 添加依赖库以及资源文件
...@@ -378,4 +378,4 @@ xcodebuild -create-xcframework -framework 真机路径/DCloudUTSExtAPI.framework ...@@ -378,4 +378,4 @@ xcodebuild -create-xcframework -framework 真机路径/DCloudUTSExtAPI.framework
#### 隐私清单 #### 隐私清单
开通 `优量汇、Gromore` 渠道需要将该渠道的隐私清单内容手动合并到主工程的隐私清单文件中,详见目录`SDK/PrivacyInfo/优量汇``SDK/PrivacyInfo/Gromore` 开通 `优量汇、Gromore` 渠道需要将该渠道的隐私清单内容手动合并到`主工程`的隐私清单文件中,详见目录`SDK/PrivacyInfo/优量汇``SDK/PrivacyInfo/Gromore`
\ No newline at end of file \ No newline at end of file
...@@ -5,25 +5,32 @@ ...@@ -5,25 +5,32 @@
* Xcode 15.2及以上版本 * Xcode 15.2及以上版本
## 接入流程 ## 接入流程
* 通过 `HBuilder X` 导出离线资源,根据资源内容,配置`原生主工程`环境,添加基础模块需要的依赖库以及资源文件 * 通过 `HBuilder X` 导出资源文件,根据资源内容,配置`原生主工程`环境,添加基础模块需要的依赖库以及资源文件
* 根据离线资源中的`manifest.json`文件中包含的模块,制作`DCloudUTSExtAPI.xcframework`,并将其添加到`原生主工程`中,详见[集成内置模块](../modules/ios/modules.md) * 根据资源文件中的`manifest.json`文件中包含的模块,制作`DCloudUTSExtAPI.xcframework`,并将其添加到`原生主工程`中,详见[集成内置模块](../modules/ios/modules.md)
* 根据离线资源中的`manifest.json`文件中包含的模块,向`原生主工程`添加工程配置以及内置模块需要的资源文件等,详见[集成内置模块](../modules/ios/modules.md) * 根据资源文件中的`manifest.json`文件中包含的模块,向`原生主工程`添加工程配置以及内置模块需要的资源文件等,详见[集成内置模块](../modules/ios/modules.md)
* 根据离线资源中的`uni_modules`文件夹中包含的UTS插件,制作对应的原生xcframework,并将其添加到`原生主工程`(付费购买的uts插件不支持离线打包),详见[制作UTS插件](iosuts.md) * 根据资源文件中的`uni_modules`文件夹中包含的UTS插件,制作对应的原生xcframework,并将其添加到`原生主工程`(付费购买的uts插件不支持原生工程使用),详见[制作UTS插件](iosuts.md)
* 编写代码通过离线API初始化SDK,详见[接入离线SDK](iosapi.md) * 根据API文档接入SDK,详见[API文档](iosapi.md)
## 导出资源文件
1. 在主工程中新建文件目录`uni-app-x/apps`
![](https://web-ext-storage.dcloud.net.cn/native/doc/iOS/create_resources_document.png)
2. 打开 `HBuilder X -> 发行 -> 原生App-本地打包 -> 生成本地打包App资源` 勾选iOS点击生成
![](https://web-ext-storage.dcloud.net.cn/native/doc/iOS/export.png)
3. 导出成功之后会在项目的`unpackage/resources`目录下生成资源文件
![](https://web-ext-storage.dcloud.net.cn/native/doc/iOS/resources.png)
4.`app-ios` 目录下与`appid`对应的目录拷贝到主工程的 `uni-app-x/apps` 目录下
![](https://web-ext-storage.dcloud.net.cn/native/doc/iOS/copy_resources.png)
## 新建项目(已有可跳过)
1. 启动`Xcode`,点击`File->New->Project`,选择`App`点击`Next`
2. 填写`Product Name``Language`选择为`Swift`,点击`Next`即可完成创建
## 主工程环境配置 ## 工程配置
`Target -> General -> Minimum Deployments` 选择 `12.0` `Target -> General -> Minimum Deployments` 选择 `12.0`
`Target -> Build Settings -> Other Linker Flags` 中添加`-ObjC``-ld_classic``-weak_framework SwiftUI` `Target -> Build Settings -> Other Linker Flags` 中添加`-ObjC``-ld_classic``-weak_framework SwiftUI`
`Target -> General -> Identity -> Display Name` 输入应用名称(`manifest.json`文件中的`name`)
`Target -> General -> Identity -> Bundle Identifier` 输入应用标识
`Target -> General -> Identity -> Version` 输入应用`versionName`
`Target -> General -> Identity -> Build` 输入应用`versionCode`
## Info.plist配置
1. 若HBuilderX项目`根目录`下包含`Info.plist`文件,需要将该文件内容拷贝到`原生主工程``Target -> Info` 1. 若HBuilderX项目`根目录`下包含`Info.plist`文件,需要将该文件内容拷贝到`原生主工程``Target -> Info`
2.`Target -> Info` 下,添加如下配置 2.`Target -> Info` 下,添加如下配置
``` ```
...@@ -42,7 +49,7 @@ ...@@ -42,7 +49,7 @@
<key>singleThread</key> <key>singleThread</key>
<true/> <true/>
<key>uniRuntimeVersion</key> <key>uniRuntimeVersion</key>
<string>离线SDK版本号</string> <string>SDK版本号</string>
<key>unionid</key> <key>unionid</key>
<string>广告联盟id,如未开通uniad可不填</string> <string>广告联盟id,如未开通uniad可不填</string>
</dict> </dict>
...@@ -51,20 +58,6 @@ ...@@ -51,20 +58,6 @@
![](https://web-ext-storage.dcloud.net.cn/native/doc/iOS/uniappx_info.png) ![](https://web-ext-storage.dcloud.net.cn/native/doc/iOS/uniappx_info.png)
## 导出离线资源
1. 在主工程中新建文件目录`uni-app-x/apps`
![](https://web-ext-storage.dcloud.net.cn/native/doc/iOS/create_resources_document.png)
2. 打开 `HBuilder X -> 发行 -> 原生App-本地打包 -> 生成本地打包App资源` 勾选iOS 点击生成
![](https://web-ext-storage.dcloud.net.cn/native/doc/iOS/export.png)
3. 导出成功之后会在项目的`unpackage/resources`目录下生成资源文件
![](https://web-ext-storage.dcloud.net.cn/native/doc/iOS/resources.png)
4.`app-ios` 目录下与`appid`对应的目录拷贝到主工程的 `uni-app-x/apps` 目录下
![](https://web-ext-storage.dcloud.net.cn/native/doc/iOS/copy_resources.png)
## 集成基础模块 ## 集成基础模块
将以下依赖库(`SDK/Libs 目录下`)添加到工程中 将以下依赖库(`SDK/Libs 目录下`)添加到工程中
...@@ -83,5 +76,5 @@ ...@@ -83,5 +76,5 @@
## 集成UTS插件 ## 集成UTS插件
根据[集成UTS插件](iosuts.md)制作插件库以及向主工程添加相关配置 根据[集成UTS插件](iosuts.md)制作插件库以及向主工程添加相关配置
## 接入离线SDK ## 启动与通信
根据[接入离线SDK](iosapi.md)`主工程`编写代码完成接入 根据[API文档](iosapi.md)在主工程编写代码完成接入
\ No newline at end of file \ No newline at end of file
> * 仅需要离线打包可直接使用或参考`HBuilder`工程 > * 仅打包可参考HBuilder工程
> * 原生项目接入离线SDK可参考示例`UniAppXDemo`工程 > * SDK基于Swift开发,因此原生Objective-C语言开发的应用需要新建一个Swift文件用于添加Swift运行环境以及桥接SDK的API,详情可参考UniAppXDemo工程中的`UniAppBridge`
> * 离线SDK基于Swift开发,因此原生Objective-C语言开发的应用需要新建一个Swift文件用于添加Swift运行环境以及桥接离线SDK的API,详情可参考UniAppXDemo工程中的`UniAppBridge`
# 仅离线打包
1. 参考如下示例修改AppDelegate(建议直接使用示例中的`HBuilder`工程)
```
import DCloudUniappRuntime
@main
class AppDelegate: UniAppRootAppDelegate {
}
```
2. `Main.storyboard`文件中将`ViewController``Class`设置为`UniAppRootViewController``Module`设置为`DCloudUniappRuntime`.
![](https://web-ext-storage.dcloud.net.cn/native/doc/iOS/main_storyboard_viewcontroller.png)
# 采用SDK方式接入
## 初始化SDK ## 初始化SDK
在 AppDelegate 的 didFinishLaunchingWithOptions 中初始化 在 AppDelegate 的 didFinishLaunchingWithOptions 中初始化
......
# 制作UTS插件 # 制作UTS插件
> 1. 付费uts插件不支持离线打包 > 1. 付费uts插件不支持原生工程接入
> 2. 如果导出的离线资源不包含 `uni_modules` ,或 `uni_modules` 中的插件均不包含 `app-ios` 目录可以跳过此章节 > 2. 如果导出的资源文件不包含 `uni_modules` ,或 `uni_modules` 中的插件均不包含 `app-ios` 目录可以跳过此章节
## 新建原生插件工程 ## 新建原生插件工程
根据离线资源下的`uni_modules`下的插件列表,新建原生插件工程 根据资源文件下的`uni_modules`下的插件列表,新建原生插件工程
1. 启动`Xcode`,点击`File->New->Project`,选择`Framework`点击`Next` 1. 启动`Xcode`,点击`File->New->Project`,选择`Framework`点击`Next`
2. `Product Name`填写规则为:`unimodule`+`插件名称`,其中`-`分割改为驼峰,比如`uni-getbatteryinfo`插件对应的原生工程名应为`unimoduleUniGetbatteryinfo` 2. `Product Name`填写规则为:`unimodule`+`插件名称`,其中`-`分割改为驼峰,比如`uni-getbatteryinfo`插件对应的原生工程名应为`unimoduleUniGetbatteryinfo`
3. `Language`选择为`Objective-C`,点击`Next`即可完成创建 3. `Language`选择为`Objective-C`,点击`Next`即可完成创建
...@@ -15,27 +15,27 @@ ...@@ -15,27 +15,27 @@
`Target -> Build Settings -> Build Libraries for Distribution` 设置为`YES` `Target -> Build Settings -> Build Libraries for Distribution` 设置为`YES`
`Target -> Build Settings -> Framework Search Paths` 中添加SDK的Libs目录(操作方法:双击展开`Framework Search Paths``SDK/Libs`文件夹拖入即可) `Target -> Build Settings -> Framework Search Paths` 中添加SDK的Libs目录(操作方法:双击展开`Framework Search Paths``SDK/Libs`文件夹拖入即可)
`插件工程`中新建`uts-config.json`文件,然后将离线SDK中`SDK/ExtApiSrc/UTSOC.h`以及`SDK/ExtApiSrc/UTSOC.mm`添加到`插件工程` `插件工程`中新建`uts-config.json`文件,然后将SDK中`SDK/ExtApiSrc/UTSOC.h`以及`SDK/ExtApiSrc/UTSOC.mm`添加到`插件工程`
## 添加基础依赖 ## 配置资源文件
将以下源文件(`SDK/ExtApiSrc 目录下`)、依赖库(`SDK/Libs 目录下`)添加到`插件工程`中,并将依赖库均设置为`Do Not Embed` 1. 将以下源文件(`SDK/ExtApiSrc 目录下`)、依赖库(`SDK/Libs 目录下`)添加到`插件工程`中,并将依赖库均设置为`Do Not Embed`
| 源文件 | 依赖库 | 资源文件 | | 源文件 | 依赖库 | 资源文件 |
|---|---|---| |---|---|---|
| UTSOC.h、UTSOC.mm | DCloudUniappRuntime.xcframework、DCloudUTSExtAPI.xcframework、DCloudUTSFoundation.xcframework| uts-config.json | | UTSOC.h、UTSOC.mm | DCloudUniappRuntime.xcframework、DCloudUTSExtAPI.xcframework、DCloudUTSFoundation.xcframework| uts-config.json |
> DCloudUTSExtAPI.xcframework的制作详见[集成内置模块](../modules/ios/modules.md) > DCloudUTSExtAPI.xcframework的制作详见[集成内置模块](../modules/ios/modules.md)
## 配置离线资源
将导出的离线资源`uni_modules`目录下的插件资源,按以下列表中的配置方式分别在`主工程``插件工程`添加依赖资源 2. 将导出的资源文件`uni_modules`目录下的插件资源,按以下列表中的配置方式分别在`主工程``插件工程`添加依赖资源
| 目录名/文件名 | 用途 | 配置 | | 目录名/文件名 | 用途 | 配置 |
|---|---|---| |---|---|---|
| Frameworks | 插件依赖的三方库(framework/xcframework) | 将目录下的依赖库添加到`插件工程`中 | | Frameworks | 插件依赖的三方库(framework/xcframework) | 将目录下的依赖库添加到`插件工程`中 |
| Libs | 插件依赖的三方库(.a) | 将目录下的依赖库添加到`插件工程`中 | | Libs | 插件依赖的三方库(.a) | 将目录下的依赖库添加到`插件工程`中 |
| src | 插件源代码 | 将目录下的源代码添加到`插件工程`中 | | src | 插件源代码 | 将目录下的源代码添加到`插件工程`中 |
| Resources | 插件需要引用的资源文件存放目录 | 将目录下的资源文件添加到`主工程`中 | | Resources | 插件需要引用的资源文件存放目录 | 将目录下的资源文件添加到`主工程`中 |
| Info.plist | 需要添加到原生主工程`Info.plist`中的配置文件 | 将该文件配置添加到`主工程``Info.plist`中,注意去重 | | Info.plist | 需要添加到原生主工程`Info.plist`中的配置文件 | 将该文件配置添加到`主工程``Info.plist`中,注意去重 |
| UTS.entitlements | 需要添加到原生主工程 `entitlements` 文件中的配置文件 | 根据该文件内容,在主工程中添加对应的`Capability` | | UTS.entitlements | 需要添加到原生主工程 `entitlements` 文件中的配置文件 | 根据该文件内容,在主工程中添加对应的`Capability` |
| config.json | 插件依赖的`系统库``cocoapods三方库`以及一些需要添加到`主工程Info.plist`文件内的配置信息 | 详见下表 | | config.json | 插件依赖的`系统库``cocoapods三方库`以及一些需要添加到`主工程Info.plist`文件内的配置信息 | 详见下表 |
### config.json配置 ### config.json配置
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
### 隐私清单 ### 隐私清单
如果HBuilderX导出的离线资源中包含`PrivacyInfo.xcprivacy`文件,需要将文件内容添加到`插件工程`的同名文件中,注意去重 如果HBuilderX导出的资源文件中包含`PrivacyInfo.xcprivacy`文件,需要将文件内容添加到`插件工程`的同名文件中,注意去重
## 编译导出xcframework ## 编译导出xcframework
选择构建目标(Any iOS Device/Any iOS Simulator Device),在菜单栏中,选择`Product -> Build`(或使用快捷键`Command + B`),分别编译出真机以及模拟器的Framework文件。 选择构建目标(Any iOS Device/Any iOS Simulator Device),在菜单栏中,选择`Product -> Build`(或使用快捷键`Command + B`),分别编译出真机以及模拟器的Framework文件。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册