【01】完整开发即构美颜sdk的uni官方uts插件—让所有开发者可以直接使用即构美颜sdk的能力-优雅草卓伊凡
背景
即构美颜sdk不支持uniapp,我们需要制作uni原生插件,安卓和IOS双端都需要
章节内容
【01】初步建立即构美颜SDK的uniapp-uts插件-初步规划目录-初步熟悉即构美颜sdk的构造
实战开始
插件基础知识
根据官方说明:
如果您是插件作者,可以了解更多uts插件和uni原生语言插件对插件作者的区别。详见
更新:“App原生语言插件”已停止维护,插件市场不再受理新增App原生插件。请插件开发者都使用uts插件。
扩展知识:
- uni-app x中,是uts来调用uts插件。(HBuilderX 3.9支持)
也就是一个uts插件,可以同时支持uni-app和uni-app x。
为了兼容全端,uts插件可以分目录写所有平台代码,也就是一个uts插件除了支持App的扩展,还可以支持web、小程序。
比如这个uts插件,电量,其源码在https://gitcode.net/dcloud/uni-api/-/tree/master/uni_modules/uni-getbatteryinfo,内部有多个目录(app-android、app-ios、web、mp-weixin、mp-alipay…),在非App目录也可以写js。
这个电量插件在uni-app和uni-app x中均可以使用。
uts插件分api和组件。这和uni-app的组件、api的概念是一样的。
- api插件:uts插件扩展了api能力,在script里调用
- 组件插件:uts插件扩展了界面组件,在template里调用。它是要内嵌在页面中。
api插件也可以操作界面,但更多是独立的全屏窗口或弹出窗口。而不能嵌入在template中。
比如lottie动画的uts插件,就是一个组件插件。https://ext.dcloud.net.cn/plugin?id=10674,其源码在https://gitcode.net/dcloud/uni-component/-/tree/master/uni_modules/uni-animation-view
创建默认实例
因此我们建立:
创建默认uts插件实例
这里要选择 hello uts 这是官方默认给的uts插件实例
右键 uni_modules 创建插件
选择uts 插件,输入插件名字,(保持唯一性)
配置package.json
打开 package.json 描述基本配置
"id": "作者ID-插件英文名称", // 必填,插件ID,格式为:'作者ID-插件英文名称',例如:'xx-yy',其中作者ID和插件名称只能包含英文、数字,作者ID不能使用'DCloud'、'uni'等关键字 "displayName": "插件显示名称", // 必填,用于展示在插件市场的显示名称 "version": "1.0.0", // 必填,插件版本 "description": "插件描述", // 必填,插件描述 "keywords": [], // 必填,插件标签关键词,最多5个 "repository": "github:user/repo", // 仓库地址 "engines": { // HBuilderX/cli 最低兼容版本 "HBuilderX": "^3.1.0"
修改为我们自己的信息:
"id": "youyacao-zegomeiyan", "name": "zego-meiyan", "displayName": "即构美颜sdk插件-优雅草制", "version": "1.0.0", "description": "即构美颜sdk插件", "repository": "https://gitee.com/youyacao/zegomeiyanuts", "keywords": [ "美颜sdk", "即构美颜", "美颜美妆", "APP美颜" ],
uts插件的目录
┌─common // 当前插件内可跨端公用的uts代码。uts文件仅支持放在utssdk目录或common目录。 ├─static // 静态资源 ├─utssdk │ ├─app-android //Android平台目录 │ │ ├─assets //Android原生assets资源目录,可选 │ │ ├─libs //Android原生库目录,可选 │ │ ├─res //Android原生res资源目录,可选 │ │ ├─AndroidManifest.xml //Android原生应用清单文件,可选 │ │ ├─config.json //Android原生配置文件 │ │ ├─hybrid.kt //Android混编的kt文件 │ │ └─index.uts //Android原生插件能力实现 │ ├─app-ios //iOS平台目录 │ │ ├─Frameworks //iOS原生依赖的第三方 framework 依赖库存放目录,可选 │ │ ├─Libs //iOS原生依赖的第三方 .a 依赖库存放目录,可选 │ │ ├─Resources //iOS原生所依赖的资源文件存放目录,可选 │ │ ├─info.plist //iOS原生所需要添加到主 info.plist 文件中的配置文件,可选 │ │ ├─UTS.entitlements //iOS原生所需要添加到主工程 .entitlements 文件中的配置文件,可选 │ │ ├─config.json //iOS原生配置文件 │ │ ├─hybrid.swift //ios混编的swift文件 │ │ └─index.uts //iOS原生插件能力实现 │ ├─web //web平台目录 │ │ └─index.uts │ ├─mp-alipay // 支付宝小程序平台,可选 │ ├─mp-baidu // 百度小程序平台,可选 │ ├─mp-jd // 京东小程序平台(仅限vue2),可选 │ ├─mp-kuaishou // 快手小程序平台,可选 │ ├─mp-lark // 飞书小程序平台,可选 │ ├─mp-qq // QQ小程序平台,可选 │ ├─mp-toutiao // 抖音小程序平台,可选 │ ├─mp-weixin // 微信小程序平台,可选 │ ├─mp-xhs // 小红书小程序平台(仅限vue2),可选 │ ├─interface.uts // 声明插件对外暴露的API,必需 │ ├─unierror.uts // 定义插件对外暴露的错误信息,可选 │ └─index.uts // 跨平台插件能力实现,可选 └─package.json // 插件清单文件,必需
官方的意思就是 index.uts 可以声明 原生插件在哪里, 然后utsdk里面组织放入真正的原生sdk,即可被识别和使用
下载原生sdk
找到对应要做的sdk的技术文档中心下载对应 安卓 和 ios的 sdk
对应放入文件
首先 了解 文件的目录
app-android 文件夹下存在Android平台原生配置,包括以下目录或文件
目录名/文件名 |
用途 |
assets |
Android平台原生assets资源目录 |
libs |
Android平台原生引用的三方jar/aar目录 |
res |
Android平台原生res资源目录 |
AndroidManifest.xml |
Android平台原生应用清单文件 |
config.json |
Android平台下的配置文件 |
index.uts |
主入口,interface.uts/index.d.ts声明的能力在Android平台下的实现 |
我们对应建立文件,并且放入对应sdk的代码文件。
比如新建assets后 Android平台原生assets资源目录, 我们把原生安卓sdk目录里面assets的内容复制进去,因为其他内容看起来很乱,因此并不知道 对应内容在哪里,首先我们得分析sdk的结构
分析 即构sdk 安卓项目的 目录:
项目目录结构分析 根目录 (ZegoEffects-release-android-shared-java) Example: 包含示例应用的代码。 ZegoEffectsExample: 示例应用的具体实现。 build.gradle: 示例应用的构建配置文件(您已提供)。 src/main/java: 示例应用的主要 Java 源代码。 包名对应的目录(例如 com/example/zegoeffects) 核心功能模块的Java类文件 src/main/res: 示例应用的资源文件(如布局、图片等)。 src/test/java: 示例应用的单元测试代码。 src/androidTest/java: 示例应用的仪器化测试代码。 sdk 或 library: 假设 SDK 的源代码位于此目录下。 build.gradle: SDK 的构建配置文件。 src/main/java: SDK 的主要 Java 源代码。 包名对应的目录(例如 im/zego/sdk) 核心功能模块的Java类文件 src/main/res: SDK 的资源文件(如有)。 src/test/java: SDK 的单元测试代码。 docs: 文档目录,存放 API 文档或其他说明性文档。 examples: 示例代码目录,展示如何使用该 SDK。 build.gradle: 顶层构建配置文件(您已提供)。 settings.gradle: 定义项目中的模块(如 :Example, :sdk 等)。 gradle.properties: Gradle 属性配置文件。 gradlew 和 gradlew.bat: Gradle Wrapper 脚本,用于跨平台构建。 .gitignore: Git 忽略文件配置
本文已经实现了创建插件实例,分析了即构美颜sdk的目录,已经完成目标。