Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-uni-app-x-zh
提交
00bf7308
U
unidocs-uni-app-x-zh
项目概览
DCloud
/
unidocs-uni-app-x-zh
通知
144
Star
2
Fork
33
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
9
列表
看板
标记
里程碑
合并请求
11
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-uni-app-x-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
9
Issue
9
列表
看板
标记
里程碑
合并请求
11
合并请求
11
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
00bf7308
编写于
12月 26, 2023
作者:
D
DCloud_LXH
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: 错误链接
上级
8658a603
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
122 addition
and
122 deletion
+122
-122
docs/api/push.md
docs/api/push.md
+1
-1
docs/collocation/manifest.md
docs/collocation/manifest.md
+1
-1
docs/dom/element.md
docs/dom/element.md
+2
-2
docs/plugin/_sidebar.md
docs/plugin/_sidebar.md
+1
-1
docs/plugin/uts-component.md
docs/plugin/uts-component.md
+11
-11
docs/plugin/uts-for-android.md
docs/plugin/uts-for-android.md
+41
-41
docs/plugin/uts-ios-cocoapods.md
docs/plugin/uts-ios-cocoapods.md
+4
-4
docs/plugin/uts-plugin.md
docs/plugin/uts-plugin.md
+61
-61
未找到文件。
docs/api/push.md
浏览文件 @
00bf7308
...
...
@@ -145,7 +145,7 @@ channelManager.setPushChannel({
})
```
*
uni-app x 的push模块仅支持uni-push2,不再支持uni-push1。但这不意味着强绑uniCloud的付费行为。而是DCloud的所有云服务都将统一纳入到uniCloud体系管理,开发者在开通uni-push2后,也可以拿到mastersecret,然后在自己的服务器去直接连接个推服务器。
*
uni-push是一个独立的模块,在标准基座中并不包含。开发push需要首先编写push相关代码,然后打包自定义基座,根据摇树规则,打出的自定义基座才会包含push模块。详见
[
摇树
](
../
manifest.md#treeS
haking
)
*
uni-push是一个独立的模块,在标准基座中并不包含。开发push需要首先编写push相关代码,然后打包自定义基座,根据摇树规则,打出的自定义基座才会包含push模块。详见
[
摇树
](
../
collocation/manifest-modules.md#trees
haking
)
*
创建本地通知栏,理论上可以和个推的服务无关。但目前也都包含在push模块里了。如果您不需要服务器推送,只需要本地创建通知栏,也需要打包push模块才行。
*
部分手机创建本地通知时,App如果在后台状态,点击通知消息并不会拉起App,原因是厂商增加了后台弹窗权限,需要用户手动打开此权限。
*
获取手机端app是否拥有push权限,请使用API
[
uni.getAppAuthorizeSetting
](
get-app-authorize-setting.md
)
docs/collocation/manifest.md
浏览文件 @
00bf7308
...
...
@@ -35,7 +35,7 @@ uni-app x 不再提供内置模块选择,而是提供了摇树机制自动选
uni-app x 的权限配置,移入了
[
AndroidManifest.xml
](
https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-android.html#permissions
)
中。
使用
[
uni内置模块
](
#utsmodules
)
时,云端打包会自动添加模块需要的Android权限,不需要在
[
AndroidManifest.xml
](
https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-android.html#permissions
)
中配置。
使用
[
uni内置模块
](
./manifest-modules.md
#utsmodules
)
时,云端打包会自动添加模块需要的Android权限,不需要在
[
AndroidManifest.xml
](
https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-android.html#permissions
)
中配置。
-
HBuilderX3.97+版本标准基座已经包含了所有Android权限,在 uvue 页面中直接通过 uts 调用需要权限的 Android 系统 API 时,使用标准基座真机运行可直接通过
[
UTSAndroid.requestSystemPermission
](
../uts/utsandroid.md#requestsystempermission
)
申请;
-
使用自定义基座则需要在项目的
[
AndroidManifest.xml
](
https://uniapp.dcloud.io/tutorial/app-nativeresource-android.html#permissions
)
中配置要使用的权限,重新提交云端打包。
...
...
docs/dom/element.md
浏览文件 @
00bf7308
...
...
@@ -267,5 +267,5 @@ view.takeSnapshot({
完整示例代码参考
[
hello uni-app x
](
https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/element-takesnapshot/element-takesnapshot.uvue
)
*
截图会在应用沙盒目录的cache目录产生临时文件,位置
[
详见
](
file-system-spec.md#cache
)
。
*
app端如需主动删除临时文件,使用
[
uni.getFileSystemManager
](
get-file-system-manager.md
)
。
\ No newline at end of file
*
截图会在应用沙盒目录的cache目录产生临时文件,位置
[
详见
](
../api/file-system-spec.md#cache
)
。
*
app端如需主动删除临时文件,使用
[
uni.getFileSystemManager
](
../api/get-file-system-manager.md
)
。
\ No newline at end of file
docs/plugin/_sidebar.md
浏览文件 @
00bf7308
...
...
@@ -7,5 +7,5 @@
*
[
uts中使用uni api
](
uts-uni-api.md
)
*
[
Android平台uts开发指南
](
uts-for-android.md
)
*
[
iOS平台uts开发指南
](
uts-for-ios.md
)
*
[
使用CocoaPods依赖
](
uts-ios-cocoapods.md
)
*
[
使用CocoaPods依赖
](
uts-ios-cocoapods.md
)
*
[
插件作者专区
](
https://uniapp.dcloud.net.cn/plugin/publish.html
)
docs/plugin/uts-component.md
浏览文件 @
00bf7308
...
...
@@ -23,7 +23,7 @@ UTS组件,是UTS插件的一个分支。UTS插件提供了原生API的扩展
继续阅读文档前,开发者需要了解以下前置条件:
-
了解
[
uts语法
](
/uts/
)
和
[
uts原生插件
](
uts-plugin.md
)
-
了解
[
Vue组件
](
../tutorial/vue3-components.md
)
-
了解
[
Vue组件
](
https://uniapp.dcloud.net.cn/tutorial/vue3-components.html
)
## UTS组件简介
...
...
@@ -620,7 +620,7 @@ NVUpdateStyles(styles: Map<String, any>){
}
}
//原生提供以下属性或方法的实现
//原生提供以下属性或方法的实现
export
default
{
/**
* 组件名称,也就是开发者使用的标签
...
...
@@ -664,7 +664,7 @@ NVUpdateStyles(styles: Map<String, any>){
}
}
},
immediate
:
false
//创建时是否通过此方法更新属性,默认值为false
immediate
:
false
//创建时是否通过此方法更新属性,默认值为false
},
},
/**
...
...
@@ -697,7 +697,7 @@ NVUpdateStyles(styles: Map<String, any>){
},
/**
* 对应平台的view载体即将被创建,对应前端beforeMount
* 对应平台的view载体即将被创建,对应前端beforeMount
* [可选实现]
*/
NVBeforeLoad
()
{
...
...
@@ -706,12 +706,12 @@ NVUpdateStyles(styles: Map<String, any>){
/**
* 创建原生View,必须定义返回值类型
* 开发者需要重点实现这个函数,声明原生组件被创建出来的过程,以及最终生成的原生组件类型
* (Android需要明确知道View类型,需特殊校验)
* (Android需要明确知道View类型,需特殊校验)
* todo 补充IOS平台限制
* [必须实现]
*/
NVLoad
():
LinearLayout
{
//必须实现
//必须实现
let
contentLayout
=
new
LinearLayout
(
this
.
$androidContext
)
let
button
=
new
Button
(
this
.
$androidContext
)
button
.
setText
(
"
点击触发
"
);
...
...
@@ -721,11 +721,11 @@ NVUpdateStyles(styles: Map<String, any>){
return
contentLayout
}
}
</script>
<style>
</style>
```
...
...
@@ -829,14 +829,14 @@ NVUpdateStyles(styles: Map<String, any>){
<uts-hello-view
ref=
"helloView"
buttonText=
"点击按钮内容"
style=
"width:375px;height: 375px;background-color: aqua;"
></uts-hello-view>
<button
@
tap=
"callComponentMethod"
>
调用组件的方法
</button>
</div>
</template>
<script>
export
default
{
data
()
{
return
{
}
},
methods
:
{
...
...
@@ -848,7 +848,7 @@ NVUpdateStyles(styles: Map<String, any>){
// (this.$refs["helloView"] as UtsHelloViewElement).doSth('param doSth');
},
}
}
</script>
...
...
docs/plugin/uts-for-android.md
浏览文件 @
00bf7308
...
...
@@ -36,7 +36,7 @@
虽然 UTS 和 koltin 在数据类型上基本保持了一致,但是在部分场景下,还是会有差异,在此特别说明
原则上:
原则上:
**数据类型以UTS 内置的类型为准, 各原生平台都会对其自动适配。**
...
...
@@ -51,7 +51,7 @@
但是当开发者重写
`Service`
组件
`onStartCommand`
方法时,
`Android`
API要求 明确要求后两个参数 必须为Int
原生开发环境中,应该这样写:
```
kotlin
...
...
@@ -75,7 +75,7 @@
#### 举例二:`MutableList`
`MutableList`
是
`android`
平台 特有的数据类型,一般场景下,可以使用UTS中内置类型
`Array`
替代
但是在 调用
`onAppActivityRequestPermissionsResult`
函数监听权限申请结果时,明确要求使用此类型的参数
...
...
@@ -85,7 +85,7 @@
```
kotlin
onAppActivityRequestPermissionsResult
(
fun
(
requestCode
:
Number
,
permissions
:
MutableList
<
String
>,
grantResults
:
MutableList
<
Number
>){
});
```
...
...
@@ -96,7 +96,7 @@ onAppActivityRequestPermissionsResult(fun(requestCode: Number, permissions: Muta
```
ts
onAppActivityRequestPermissionsResult
((
requestCode
:
number
,
permissions
:
MutableList
<
string
>
,
grantResults
:
MutableList
<
number
>
)
=>
{
});
```
...
...
@@ -120,9 +120,9 @@ class XXX{
### 2.4 线程环境差异
UTS环境中,默认是没有线程概念的。
UTS环境中,默认是没有线程概念的。
如果需要执行异步任务,建议通过内置函数
`UTSAndroid.getDispatcher("io")`
执行
如果需要执行异步任务,建议通过内置函数
`UTSAndroid.getDispatcher("io")`
执行
[
文档地址
](
https://doc.dcloud.net.cn/uni-app-x/uts/utsandroid.html#getdispatcher
)
...
...
@@ -152,7 +152,7 @@ UTSAndroid.getDispatcher("main").async(function(_){
}
callback
(
true
,
"
pass
"
)
},
null
)
},
null
)
},
null
)
```
...
...
@@ -182,7 +182,7 @@ AndroidManifest.xml示例:
```
xml
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
//
注意:这里是插件的包名而不是应用的包名
package=
"io.dcloud.uni_modules.utsNativepage"
>
// 配置权限
...
...
@@ -228,7 +228,7 @@ uts-nativepage -> uts.sdk.modules.utsNativepage
示例文件在hello uts中的位置:
~
\u
ni_modules
\u
ts-nativepage
\u
tssdk
\a
pp-android
\r
es
~
\u
ni_modules
\u
ts-nativepage
\u
tssdk
\a
pp-android
\r
es
除了这里列出的layout、values目录外,还支持anim等所有android标准资源目录
...
...
@@ -430,7 +430,7 @@ import { UTSAndroid } from "io.dcloud.uts";
```
获取指定插件资源的运行期绝对路径
```
ts
// [示例]获取指定资源路径
// 得到文件运行时路径: `/storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/__UNI__3732623/www/uni_modules/test-uts-static/static/logo.png`
...
...
@@ -468,7 +468,7 @@ onAppTrimMemory 对应的反注册函数
UTSAndroid
.
offAppTrimMemory
()
// 移除指定监听
UTSAndroid
.
offAppTrimMemory
((
level
:
Number
)
=>
{
});
```
...
...
@@ -685,7 +685,7 @@ UTSAndroid.offAppActivityBack(() => {
> HBuilderX 3.6.8+
App 的 activity 启动其他activity的回调结果监听 对应原生的
[
onActivityResult
](
!
https://developer.android.com/training/basics/intents/result
)
App 的 activity 启动其他activity的回调结果监听 对应原生的
[
onActivityResult
](
https://developer.android.com/training/basics/intents/result
)
需要特别注意的是
`requestCode`
参数,这个参数用于区别 不同的请求来源,开发者应该只处理自己发起请求
...
...
@@ -700,7 +700,7 @@ UTSAndroid.onAppActivityResult((requestCode: Int, resultCode: Int, data?: Intent
}
else
{
// 别的代码发起的请求,不要处理
}
});
```
...
...
@@ -737,9 +737,9 @@ App 的 activity 获得权限请求结果的回调
UTSAndroid
.
onAppActivityRequestPermissionsResult
((
requestCode
:
number
,
permissions
:
Array
<
string
>
,
grantResults
:
Array
<
number
>
)
=>
{
console
.
log
(
grantResults
);
console
.
log
(
permissions
);
console
.
log
(
permissions
);
console
.
log
(
requestCode
);
});
...
...
@@ -783,14 +783,14 @@ UTSAndroid.getUniActivity()!.getWindow().getDecorView();
UTS环境中对原生的生命周期进行了封装和简化,用户不需要关心 除了activity 以外的更多原生细节。
只需要了解本章节中列出的 activity相关生命周期即可。即 在UTS环境中 开发者可以认为 activity 的生命周期 就是应用的生命周期。
只需要了解本章节中列出的 activity相关生命周期即可。即 在UTS环境中 开发者可以认为 activity 的生命周期 就是应用的生命周期。
其中最为常见的场景,要数`onAppActivityDestroy`中释放系统资源了:
举个例子,以Hello UTS [用户截屏插件](https://ext.dcloud.net.cn/plugin?id=9897)为例。
在注册监听回调时,添加了下列代码。
在注册监听回调时,添加了下列代码。
```
UTSAndroid.onAppActivityDestroy(function(){
screenOB?.stopWatching()
...
...
@@ -919,7 +919,7 @@ let user?:string
```
kotlin
fun startListener():void{
}
```
uts中,需要区分全局方法、成员方法
...
...
@@ -927,14 +927,14 @@ uts中,需要区分全局方法、成员方法
```
ts
// 成员方法
startListener():void{
}
```
```
ts
// 全局方法
function startListener():void{
}
```
...
...
@@ -952,7 +952,7 @@ uts中,需要区分全局方法、成员方法
```
ts
// 使用UTS 实现 OnClickListener接口
class StartServiceListener extends OnClickListener{
override onClick(v?: View):void{
// 执行点击逻辑
}
...
...
@@ -984,7 +984,7 @@ user!!.sayHello();
//kotlin 中快速实现super
constructor() : super() {
}
```
```
uts
...
...
@@ -1112,7 +1112,7 @@ System.currentTimeMillis()
```
kotlin
// 获取当前时间戳
class ScreenReceiver extends BroadcastReceiver(){
}
```
...
...
@@ -1121,7 +1121,7 @@ UTS环境中,不建议这样做(虽然目前这样做不会影响编译)
```
ts
class ScreenReceiver extends BroadcastReceiver{
constructor (){
super();
}
...
...
@@ -1134,12 +1134,12 @@ class ScreenReceiver extends BroadcastReceiver{
```
ts
// IDE会提示 name,status,desc 变量未使用
onStatusUpdate(name:string, status:Int, desc:string){
}
// 不会警告变量未使用
onStatusUpdate(_name:string, _status:Int, _desc:string){
}
```
...
...
@@ -1166,11 +1166,11 @@ onStatusUpdate(_name:string, _status:Int, _desc:string){
简单示例
```
ts
class CustomThread extends Thread{
constructor(){
super();
}
override run(){
Thread.sleep(1000)
console.log("CustomThread = " + Thread.currentThread().getName())
...
...
@@ -1258,7 +1258,7 @@ val d = c.toIntArray()
### 6.7 如何生成byte[]对象
在java平台中,二进制操作一般采用字节数组实现。
在java平台中,二进制操作一般采用字节数组实现。
UTS在android平台编译后的语言为Kotlin,对应的语法对象是ByteArray.
...
...
@@ -1275,7 +1275,7 @@ console.log(byteTest)
在 uni-app 1.0 平台,js环境与原生环境的交互都是经过js引擎桥接
js引擎除了 string,number,boolean 等基本数据结构外,仅支持JSONObject,JSONArray两种。
js引擎除了 string,number,boolean 等基本数据结构外,仅支持JSONObject,JSONArray两种。
+ JSONObject 比较常见,基本所有的接口参数都会 对应一个uts中定义的 type 类
+ JSONArray 一般在uts中采用Array数组来承接
...
...
@@ -1322,7 +1322,7 @@ UTS插件支持使用android的原生资源,比如动画,布局,字符串
import R from 'io.dcloud.uni_modules.uts_nativepage.R';
```
### 6.10 UTSJSONObject 转 Map
### 6.10 UTSJSONObject 转 Map
```
val extraParam = UTSJSONObject()
...
...
@@ -1358,7 +1358,7 @@ console.log(aa.javaClass.toString()) // int
### 6.13 UTS 如何进行遍历操作
相比于for in / 下标计数等写法, UTS 推荐更现代化的foreach语法 实现集合的遍历。
相比于for in / 下标计数等写法, UTS 推荐更现代化的foreach语法 实现集合的遍历。
数组:
```
...
...
@@ -1408,18 +1408,18 @@ class User {
}
class StartBroadcastListener extends User implements OnClickListener{
override onClick(v?: View):void{
let myReceiver = new ScreenReceiver();
let filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_SCREEN_ON);
UTSAndroid.getUniActivity()!.registerReceiver(myReceiver, filter);
// 提示屏幕状态监听已经注册
Toast.makeText(UTSAndroid.getAppContext(),"屏幕状态监听已注册,注意观察控制台日志",Toast.LENGTH_LONG).show();
}
}
...
...
@@ -1437,13 +1437,13 @@ class Person{
}
class User extends Person implements android.view.View.OnClickListener,Cloneable{
constructor(){
}
override onClick(v?: android.view.View):void{
console.log(v)
}
override equals(other?: any):boolean{
return true
}
...
...
docs/plugin/uts-ios-cocoapods.md
浏览文件 @
00bf7308
...
...
@@ -12,8 +12,8 @@
"deploymentTarget"
:
"9.0"
,
//
可选,插件支持的最低
iOS
版本
默认:
9.0
"
"
dependencies-pods
": [ // 可选, 需要依赖的 CocoaPods 库, HBuilderX 3.8.5+ 版本支持
{
"
name
": "
WechatOpenSDK
",
"
version
": "
2.0
.
2
"
"
name
": "
WechatOpenSDK
",
"
version
": "
2.0
.
2
"
}, {
"
name
": "
Alamofire
",
"
version
": "
5.7
.
3
", //配置 repo 时可不指定 version
...
...
@@ -208,9 +208,9 @@ sudo gem install cocoapods
## 常见问题@questions
### MAC 环境真机运行 uts 插件时未安装 CocoaPods@not
I
nstall
### MAC 环境真机运行 uts 插件时未安装 CocoaPods@not
i
nstall
错误信息:
uni_module
[
xxxx
](
iOS
)
存在pod三方依赖库,请先安装 CocoaPods!
错误信息:
`uni_module xxxx (iOS)`
存在pod三方依赖库,请先安装 CocoaPods!
说明:出现此错误是因为当前环境没有安装 CocoaPods
处理方法: 请参照上述章节描述的方式安装 CocoaPods 工具。
...
...
docs/plugin/uts-plugin.md
浏览文件 @
00bf7308
...
...
@@ -83,7 +83,7 @@ uts 插件编译到 app 平台时,在功能上相当于 uni-app 之前的 app
### uts插件和Native.js的区别
-
[
Native.js
](
../tutorial/native-js.md
)
运行在js上,通过反射调用os api。功能和性能都不及原生
-
[
Native.js
](
https://uniapp.dcloud.net.cn/tutorial/native-js.html
)
运行在js上,通过反射调用os api。功能和性能都不及原生
-
uts 在 app 上不运行在 js 引擎里,是真正的原生。
...
...
@@ -93,7 +93,7 @@ uts 插件编译到 app 平台时,在功能上相当于 uni-app 之前的 app
在 uni-app 的项目工程下,提供了独立的目录
`utssdk`
,来存放 uts 插件。
当然官方更推荐使用
[
uni_modules
](
uni_modules.md
)
方式,这是更好的包管理方案。
当然官方更推荐使用
[
uni_modules
](
https://uniapp.dcloud.net.cn/plugin/uni_modules.html
)
方式,这是更好的包管理方案。
首先确保项目根目录存在 uni_modules 文件夹,如果不存在,需要手动创建一个。
...
...
@@ -128,12 +128,12 @@ package.json 为 uni_modules 插件配置清单文件,负责描述插件的基
"version"
:
"0.1"
,
"description"
:
"uts插件示例"
,
"uni_modules"
:
{
}
}
```
上面是一个默认的清单文件示例,关于 package.json 更多描述
[
详见
](
uni_modules.md#package.
json
)
上面是一个默认的清单文件示例,关于 package.json 更多描述
[
详见
](
https://uniapp.dcloud.net.cn/plugin/uni_modules.html#package-
json
)
### 插件的目录结构
...
...
@@ -210,34 +210,34 @@ app-android 文件夹下存在Android平台原生配置,包括以下目录或
|index.uts |主入口,interface.uts/index.d.ts声明的能力在Android平台下的实现 |
##### assets
##### assets
Android平台原生assets资源目录,建议只保存UTS插件内置的资源文件。
除了插件下有assets目录,项目下也有。注意2者的区别。
如果需要插件使用者配置(如三方SDK的授权文件),则插件作者应该在插件文档中告诉插件使用者,配置到项目的Android原生应用资源目录,而不是配置在插件目录下。
[
详见
](
https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-android
)
##### libs
##### libs
Android平台原生三方库目录,支持以下类型文件:
-
jar
-
jar
-
aar
-
so库
如果封装三方原生sdk为uni-app插件,可以将sdk的jar/aar文件放到此目录,但因为多个uts插件引用相同三方原生sdk时可能会产生冲突,所以如果sdk支持仓储,建议优先使用仓储配置,而不是直接把jar等文件放在libs目录。
仓储配置参考config.json的
[
dependencies
](
#dependencies
)
。
仓储配置参考config.json的
[
dependencies
](
#dependencies
)
。
如果使用的三方sdk包含了so库,保存到此目录时,需按Android的abi类型分目录保存。
关于libs目录的使用,可以参考
[
Hello UTS
](
https://gitcode.net/dcloud/hello-uts/-/tree/master/uni_modules
)
##### res
##### res
Android平台原生res资源目录,建议只保存UTS插件内置的资源文件。
除了插件下有res目录,项目下也有。注意2者的区别。一般使用者的配置不放在插件下,而放在自己的项目下。项目下配置
[
详见
](
https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-android
)
##### AndroidManifest.xml
##### AndroidManifest.xml
Android原生应用清单文件,建议只保存UTS插件内置的清单文件配置。
除了插件下有AndroidManifest.xml,项目下也有。注意2者的区别。一般使用者的配置不放在插件下,而放在自己的项目下。项目下配置
[
详见
](
https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-android
)
...
...
@@ -272,37 +272,37 @@ uts插件在Android平台的原生层配置文件,可以在其中配置依赖
}
```
-
abis
当插件使用了NDK开发的so库时配置,描述插件支持CPU类型。
-
abis
当插件使用了NDK开发的so库时配置,描述插件支持CPU类型。
可取值:armeabi-v7a、arm64-v8a、x86、x86_64
<a
id=
"dependencies"
/>
-
dependencies
配置插件依赖的仓储,云端打包时会合并到Android原生工程的build.gradle的
数组类型,数组中的项可以是字符串类型或JSON对象
对于字符串类型项,将会作为
`implementation`
方式依赖添加到build.gradle中,上面示例中"androidx.core:core-ktx:1.6.0"将会添加以下配置
-
dependencies
配置插件依赖的仓储,云端打包时会合并到Android原生工程的build.gradle的
数组类型,数组中的项可以是字符串类型或JSON对象
对于字符串类型项,将会作为
`implementation`
方式依赖添加到build.gradle中,上面示例中"androidx.core:core-ktx:1.6.0"将会添加以下配置
```
dependencies {
implementation 'androidx.core:core-ktx:1.6.0'
}
```
对于JSON类型项,将会把source字段值作为gradle源码添加到build.gradle中,上面示例中"id": "com.xxx.richtext:richtext"项将会添加以下配置
对于JSON类型项,将会把source字段值作为gradle源码添加到build.gradle中,上面示例中"id": "com.xxx.richtext:richtext"项将会添加以下配置
```
dependencies {
implementation 'com.xxx.richtext:richtext:3.0.7'
}
```
-
minSdkVersion
-
minSdkVersion
插件支持的Android最低版本,整数类型,取值范围为Android API Level
默认uni-app最低支持版本为19,即Android4.4.2
-
project
云端打包项目相关配置,当使用的三方SDK需要配置gradle插件时可配置此项:
+
plugins
此配置将会添加到云端打包工程app及build.gradle文件的“plugins”中:
-
project
云端打包项目相关配置,当使用的三方SDK需要配置gradle插件时可配置此项:
+
plugins
此配置将会添加到云端打包工程app及build.gradle文件的“plugins”中:
```
plugins {
id 'com.android.application'
...
...
@@ -310,8 +310,8 @@ plugins {
id 'com.huawei.agconnect'
}
```
+
dependencies
此配置将会添加到云端打包工程项目级build.gradle文件的“buildscript > dependencies”中
+
dependencies
此配置将会添加到云端打包工程项目级build.gradle文件的“buildscript > dependencies”中
```
buildscript {
dependencies {
...
...
@@ -347,28 +347,28 @@ app-ios 文件夹下存在iOS平台原生配置,包括以下目录或文件
|config.json |iOS平台原生工程的配置文件 |
|index.uts |主入口,interface.uts/index.d.ts声明的能力在iOS平台下的实现 |
##### Frameworks
##### Frameworks
iOS平台插件依赖的三方framework存放目录,支持以下类型文件:
-
framework
-
framework
-
xcframework
注意:目前支持静态库和动态库
##### Libs@ios-libs
##### Libs@ios-libs
> HBuilder X 3.7.2+ 版本支持
iOS平台插件依赖的三方.a库存放目录,支持以下类型的.a库:
-
使用OC语言创建的.a库
-
使用OC语言创建的.a库
-
使用Swift语言创建的.a库
备注:有关OC及Swift创建的.a库的区别、.a库的使用方法和注意事项
[
详见
](
https://uniapp.dcloud.net.cn/plugin/uts-for-ios
)
##### Resources
iOS平台原生资源目录,建议只保存uts插件内置的资源文件。云端打包时会将此目录下的所有文件添加到应用 main bundle 中。
iOS平台原生资源目录,建议只保存uts插件内置的资源文件。云端打包时会将此目录下的所有文件添加到应用 main bundle 中。
除了插件下有Resources目录,项目下也有。注意2者的区别。一般使用者的配置不放在插件下,而放在自己的项目下。项目下配置
[
详见
](
https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-ios.html#%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6-bundle-resources
)
除了插件下有Resources目录,项目下也有。注意2者的区别。一般使用者的配置不放在插件下,而放在自己的项目下。项目下配置
[
详见
](
https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-ios.html#%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6-bundle-resources
)
##### Info.plist
iOS平台原生 Info.plist 文件配置,云端打包时会将配置信息合并到原生工程的 Info.plist 中。
...
...
@@ -411,21 +411,21 @@ iOS平台原生 entitlements 文件配置,云端打包时会将配置信息合
```
##### config.json
uts插件在iOS平台的其它原生配置文件,可以在其中配置依赖的系统库等信息
uts插件在iOS平台的其它原生配置文件,可以在其中配置依赖的系统库等信息
```
json
{
"frameworks"
:
[
"可选,依赖的系统库(系统库有.framework和.tbd和.dylib类型)"
"可选,依赖的系统库(系统库有.framework和.tbd和.dylib类型)"
],
"deploymentTarget"
:
"9.0"
,
//
可选,插件支持的最低
iOS
版本
默认:
9.0
"
"
validArchitectures
": [ // 可选,支持的 CPU 架构类型 默认:arm64
"
arm
64
"
],
"
arm
64
"
],
"
dependencies-pods
": [ // 可选, 需要依赖的pod库, HBuilderX 3.8.5+ 版本支持
{
"
name
": "
WechatOpenSDK
",
"
version
": "
2.0
.
2
"
"
name
": "
WechatOpenSDK
",
"
version
": "
2.0
.
2
"
}]
}
```
...
...
@@ -589,13 +589,13 @@ type GetBatteryInfoOptions = {
};
/**
* 导出 获取电量方法
* 导出 获取电量方法
*/
export
default
function
getBatteryInfo
(
options
:
GetBatteryInfoOptions
)
{
// 开启电量检测
UIDevice
.
current
.
isBatteryMonitoringEnabled
=
true
// 返回数据
const
res
=
{
errMsg
:
"
getBatteryInfo:ok
"
,
...
...
@@ -616,12 +616,12 @@ export default function getBatteryInfo(options: GetBatteryInfoOptions) {
import
{
UIDevice
}
from
"
UIKit
"
;
/**
* 导出 获取电量方法
* 导出 获取电量方法
*/
export
default
function
getBatteryLevel
():
number
{
// 开启电量检测
UIDevice
.
current
.
isBatteryMonitoringEnabled
=
true
let
level
=
Number
(
UIDevice
.
current
.
batteryLevel
*
100
)
return
level
}
...
...
@@ -631,8 +631,8 @@ export default function getBatteryLevel():number {
### 应用程序生命周期函数监听@hooksClass
> 特别注意:
> 此功能在 HBuilderX 3.97+ 版本支持,HBuilderX 3.97 之前的版本不支持。
...
...
@@ -641,7 +641,7 @@ export default function getBatteryLevel():number {
在插件开发过程中,有时我们需要监听 APP 的生命周期函数来完成一些业务逻辑,比如在应用启动时初始化三方 SDK, 在收到推送消息时做消息的处理,在被 url scheme 唤醒时调用指定功能等等。
在 iOS 平台可以通过自定义 class 遵循
`UTSiOSHookProxy`
协议的方式来实现对应用程序生命周期函数的监听。
> 注意:
> 该自定义 class 需要 export, 否则不会参与编译。
...
...
@@ -668,19 +668,19 @@ export class MyPluginClass implements UTSiOSHookProxy {
}
// 远程通知注册成功时的回调函数。(打自定义基座时需要勾选 push 模块)
didRegisterForRemoteNotifications
(
deviceToken
:
Data
|
null
)
{
}
// 远程通知注册失败时的回调函数。(打自定义基座时需要勾选 push 模块)
didFailToRegisterForRemoteNotifications
(
error
:
NSError
|
null
)
{
didFailToRegisterForRemoteNotifications
(
error
:
NSError
|
null
)
{
}
// 应用收到远程通知时的回调函数。(打自定义基座时需要勾选 push 模块)
didReceiveRemoteNotification
(
userInfo
:
Map
<
AnyHashable
,
any
>
|
null
)
{
}
// 应用收到本地通知时的回调函数。(打自定义基座时需要勾选 push 模块)
didReceiveLocalNotification
(
notification
:
UILocalNotification
|
null
)
{
}
// 通过 url scheme 方式唤起 app 时的回调函数。(iOS9 之前的系统回调此方法,iOS9 之后的系统请使用 applicationOpenURLOptions)
applicationHandleOpenURL
(
application
:
UIApplication
|
null
,
url
:
URL
|
null
)
:
boolean
{
...
...
@@ -697,7 +697,7 @@ export class MyPluginClass implements UTSiOSHookProxy {
// 应用完全激活时的回调函数。
applicationDidBecomeActive
(
application
:
UIApplication
|
null
)
{
}
}
// 应用程序进入后台时的回调函数。
applicationDidEnterBackground
(
application
:
UIApplication
|
null
)
{
console
.
log
(
"
did enter background
"
)
...
...
@@ -714,12 +714,12 @@ export class MyPluginClass implements UTSiOSHookProxy {
}
// 当应用程序接收到与用户活动相关的数据时调用此方法,例如,当用户使用 Universal Link 唤起应用时。
applicationContinueUserActivityRestorationHandler
(
application
:
UIApplication
|
null
,
userActivity
:
NSUserActivity
|
null
,
restorationHandler
:
((
res
:
[
any
]
|
null
)
=>
void
)
|
null
=
null
)
:
boolean
{
return
true
}
}
```
#### Android 平台
...
...
@@ -790,12 +790,12 @@ export function getPluginVersion(): string{
}
```
2.
UTSJSONObjct
2.
UTSJSONObjct
```
ts
// UTSJSONObjct 示例
export
function
getPluginVersion
():
UTSJSONObject
{
var
ret
=
{
version
:
"
1.2.0
"
,
versionNum
:
120
,
...
...
@@ -851,7 +851,7 @@ export function postUserInfo(user:UTSJSONObject){
}
```
需要注意的是,在声明为
`any`
类型的前提下,
`uni-app`
环境中的
`Object`
在UTS环境中也会被转换为
`UTSJSONObjct`
.
需要注意的是,在声明为
`any`
类型的前提下,
`uni-app`
环境中的
`Object`
在UTS环境中也会被转换为
`UTSJSONObjct`
.
也就是说上面的代码同样可以写作
...
...
@@ -992,7 +992,7 @@ getBatteryCapacity()
自定义基座支持uts插件。
#### Android平台
#### Android平台
普通uts代码可以直接使用标准基座真机运行。但与原生插件一样,涉及以下场景,需要自定义基座后方能生效:
-
1 集成三方sdk
...
...
@@ -1000,7 +1000,7 @@ getBatteryCapacity()
总结来说,就是所有 涉及新增依赖/gralde配置/androidManifest.xml/资源 等标准基座不具备的能力时,需要自定义基座
#### iOS平台
#### iOS平台
uts插件编译需要XCode环境,因此在mac电脑安装了XCode工具时支持直接使用标准基座真机运行。
在windows电脑或者mac电脑没有安装XCode工具时,需要提交云端打包生成自定义基座后才能调用uts插件。
...
...
@@ -1018,7 +1018,7 @@ uts插件支持debug断点调试。
## 云端打包
正常支持云端打包。但打包后uts编译为了纯原生二进制代码,不支持wgt热更新。
正常支持云端打包。但打包后uts编译为了纯原生二进制代码,不支持wgt热更新。
## 常见问题
...
...
@@ -1033,7 +1033,7 @@ uts插件支持debug断点调试。
vue2项目使用 uts 插件的最低版本要求是HBuilderX 3.6.8,低于此版本,编译时将报错。
-
UTSCallback
-
UTSCallback
HBuilderX 3.7.7开始,不推荐使用 UTSCallback 定义函数类型,当需要定义函数类型时,应定义为更具体的类型,如:`const callback:UTSCallback` 应调整为`const callback:()=>void`
如果您使用的是插件市场三方uts插件,可以检查更新插件最新版本
...
...
@@ -1093,7 +1093,7 @@ let layoutParam = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARE
函数参数支持设置默认值,比如下面testName
```
ts
function
connectWifi
(
option
:
WifiConnectOption
,
testName
:
string
=
"
zhangsan
"
)
function
connectWifi
(
option
:
WifiConnectOption
,
testName
:
string
=
"
zhangsan
"
)
```
### 在uni-app 1.0 上的导出限制
...
...
@@ -1132,7 +1132,7 @@ console.log("jsonObj['age'] == " + jsonObj['age'] );
解决方案:
方案1:将 uts 插件导出 class 调整为导出 function,避免在 js 端实例化 uts 中的 class。
方案2:云端打包机已修复此问题,您可以通过云打包自定义基座来规避该问题。
## 示例项目
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录