即构美颜sdk不支持uniapp,我们需要制作uni原生插件,安卓和IOS双端都需要
【01】初步建立即构美颜SDK的uniapp-uts插件-初步规划目录-初步熟悉即构美颜sdk的构造
根据官方说明:
如果您是插件作者,可以了解更多uts插件和uni原生语言插件对插件作者的区别。详见
更新:“App原生语言插件”已停止维护,插件市场不再受理新增App原生插件。请插件开发者都使用uts插件。
扩展知识:
也就是一个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插件也可以操作界面,但更多是独立的全屏窗口或弹出窗口。而不能嵌入在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 描述基本配置
"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的技术文档中心下载对应 安卓 和 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的目录,已经完成目标。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。