# 制作UTS插件

  1. 付费uts插件不支持原生工程接入。
  2. 如果导出的资源文件不包含 uni_modules ,或 uni_modules 中的插件均不包含 app-ios 目录可以跳过此章节

# 新建原生插件工程

根据资源文件下的uni_modules下的插件列表,新建原生插件工程

  1. 启动Xcode,点击File->New->Project,选择Framework点击Next
  2. Product Name填写规则为:unimodule+插件名称,其中-分割改为驼峰,比如uni-getbatteryinfo插件对应的原生工程名应为unimoduleUniGetbatteryinfo
  3. Language选择为Objective-C,点击Next即可完成创建

# 插件工程环境配置

Target -> General -> Minimum Deployments 选择 12.0 Target -> Build Settings -> Mach-O Type 设置为Dynamic Library Target -> Build Settings -> Other Linker Flags 中添加-ObjC, 字母o和c大写 Target -> Build Settings -> Build Libraries for Distribution 设置为YES Target -> Build Settings -> Framework Search Paths 中添加SDK的Libs目录(操作方法:双击展开Framework Search PathsSDK/Libs文件夹拖入即可)

插件工程中新建uts-config.json文件,然后将SDK中SDK/ExtApiSrc/UTSOC.h以及SDK/ExtApiSrc/UTSOC.mm添加到插件工程

# 配置资源文件

  1. 将以下源文件(SDK/ExtApiSrc 目录下)、依赖库(SDK/Libs 目录下)添加到插件工程中,并将依赖库均设置为Do Not Embed
    uniapp-x源码文件&资源文件 uniapp-x项目依赖库 uniapp源码文件&资源文件 uniapp项目依赖库
    UTSOC.h
    UTSOC.mm
    uts-config.json
    DCloudUniappRuntime.xcframework
    DCloudUTSExtAPI.xcframework
    DCloudUTSFoundation.xcframework
    DCloudUTSConfig.h
    DCloudUTSConfig.m
    UTSCPP.h
    UTSCPP.mm
    uts-config.json
    DCUniBase.framework
    DCloudUTSFoundation.framework

DCloudUTSExtAPI.xcframework的制作详见集成内置模块

  1. 将导出的资源文件中uni_modules目录下的插件资源,按以下列表中的配置方式分别在主工程插件工程添加依赖资源
    目录名/文件名 用途 配置
    Frameworks 插件依赖的三方库(framework/xcframework) 将目录下的依赖库添加到插件工程
    Libs 插件依赖的三方库(.a) 将目录下的依赖库添加到插件工程
    src 插件源代码 将目录下的源代码添加到插件工程
    Resources 插件需要引用的资源文件存放目录 将目录下的资源文件添加到主工程
    Info.plist 需要添加到原生主工程Info.plist中的配置文件 将该文件配置添加到主工程Info.plist中,注意去重
    UTS.entitlements 需要添加到原生主工程 entitlements 文件中的配置文件 根据该文件内容,在主工程中添加对应的Capability
    config.json 插件依赖的系统库cocoapods三方库以及一些需要添加到主工程Info.plist文件内的配置信息 详见下表

# config.json配置

参数 用途 配置
frameworks 插件依赖的系统库 主工程中搜索并添加该列表中的系统依赖库
deploymentTarget 插件最低支持的iOS版本 插件工程Target -> General -> Minimum Deployments设置(若大于主工程设置的最低iOS版本需要同步修改主工程的最低支持)
dependencies-pods 依赖的pod库 将其添加到插件工程Podfile文件中并执行pod install
plists 需要添加到原生主工程Info.plist中的配置文件 将字段配置添加到主工程Info.plist
hooksClass 用于uts插件应用程序生命周期函数监听 插件工程中找到上面创建的uts-config.json文件,将该配置内容添加到hooksClasses节点下
provider 组件的注册信息 插件工程中找到上面创建的uts-config.json文件,将该配置内容添加到providers节点下
components 组件的注册信息 插件工程中找到上面创建的uts-config.json文件,将该配置内容添加到components节点下

uts-config.json配置示例图

# 隐私清单

如果HBuilderX导出的资源文件中包含PrivacyInfo.xcprivacy文件,需要将文件内容添加到插件工程的同名文件中,注意去重

# 编译导出xcframework

选择构建目标(Any iOS Device/Any iOS Simulator Device),在菜单栏中,选择Product -> Build(或使用快捷键Command + B),分别编译出真机以及模拟器的Framework文件。 在菜单栏中,选择Product -> Show Build Floder in Finder 获取编译产物所在路径。 使用xcodebuild命令行创建xcframework

xcodebuild -create-xcframework -framework 真机路径/unimoduleUniGetbatteryinfo.framework -framework 模拟器路径/unimoduleUniGetbatteryinfo.framework -output 导出路径/unimoduleUniGetbatteryinfo.xcframework

导出成功后,将 unimoduleUniGetbatteryinfo.xcframework 添加到主工程,并设置为 Embed && Sign

编译模拟器注意事项 Apple芯片的设备编译模拟器需要在菜单栏中点击 Product -> Destination -> Show All Run Destinations ,然后选择 Rosetta模拟器 编译