Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
你丑我先上
unidocs-zh
提交
9eb32dc1
U
unidocs-zh
项目概览
你丑我先上
/
unidocs-zh
与 Fork 源项目一致
Fork自
DCloud / unidocs-zh
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
9eb32dc1
编写于
9月 26, 2022
作者:
杜庆泉
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add uts-for-android 文档
上级
009bcf76
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
345 addition
and
0 deletion
+345
-0
docs/plugin/uts-for-android.md
docs/plugin/uts-for-android.md
+345
-0
未找到文件。
docs/plugin/uts-for-android.md
0 → 100644
浏览文件 @
9eb32dc1
## 写在最前
本文旨在 引导Android开发者,快速上手UTS插件开发
需要阅读者具备Android原生应用开发经验。
## 1 了解UTS插件是什么
`UTS插件`
是最新发布的
`uni-app`
新型插件形式,拥有跨平台,高效率,易调试等优点
[
更多介绍看这里
](
https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#
)
对于Android开发者来说,我们需要了解的是
1 编译时:当我们在保存
`UTS`
源码文件时,IDE会同步将其编译为对应的Kotlin代码。
2 运行时:在真机运行/云打包时,这些编译后的kotlin源码也会成为apk的一部分
## 2 掌握UTS语法
开发UTS插件的第一步是掌握UTS语法
### 2.1 对于掌握kotlin语言者
因为UTS语法与kotlin很类似,可以从2.4 章节 开始阅读。
建议快速阅读后,在实践中掌握这UTS语法。
### 2.2 对于仅掌握java语言者
与js相比,uts的语法和java更加类似。
但是依然存在较大的差异,需要详细阅读2.3语法部分。
尽管开发UTS插件,并不要求一定掌握kotlin,但是鉴于
`UTS`
目前在android平台上,会编译为kotlin源码。
学习kotlin语言,方便排查问题和复杂功能实现
因此建议学习一下2.3 章节 kotlin语法,
### 2.3 kotlin 语法部分
建议掌握kotlin语法,可以参考下面的文档
+
kotlin
[
文档
](
https://kotlinlang.org/
)
+
kotlin for android
[
文档
](
https://developer.android.com/kotlin
)
### 2.4 UTS语法部分
uts,全称 uni type script,是一门跨平台的、高性能的、强类型的现代编程语言。
> 它可以被编译为不同平台的编程语言,如:
>
> web平台,编译为JavaScript
>
> Android平台,编译为Kotlin
>
> iOS平台,编译Swift(暂未发布)
>
> uts 采用了与 ts 基本一致的语法规范,支持绝大部分 ES6 API。
uts语法详细介绍:
[
uts语法介绍
](
https://uniapp.dcloud.net.cn/tutorial/syntax-uts
)
## 3 Android原生环境配置 (目前版本暂不支持)
对于Android项目来说,除了源码之外,还会涉及依赖,资源,配置等常见问题
本章节将会介绍,UTS插件开发环境中如何配置这些属性
注意:
+
1 本章节内的实例代码均取自Hello UTS项目
+
2 本章节设计的配置,均需自定义基座后才能生效
### 3.1 配置AndroidManifest.xml
以hello UTS中的native-page插件中的配置文件为例:
示例文件在hello uts中的位置:
~
\u
ni_modules
\u
ts-nativepage
\u
tssdk
\a
pp-android
\A
ndroidManifest.xml
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"
//
配置包名
package=
"io.dcloud.uni_modules.uts_nativepage"
>
// 配置权限
<!--创建前台服务权限-->
<uses-permission
android:name=
"android.permission.FOREGROUND_SERVICE"
/>
<application>
// 配置service / activity
<service
android:name=
"uts.sdk.modules.utsNativepage.ForeService"
/>
<activity
android:name=
"uts.sdk.modules.utsNativepage.DemoActivity"
></activity>
</application>
</manifest>
```
AndroidManifest.xml配置规则与android中的规则是一致的。
特别提示:
每一个UTS插件对应android项目中的一个 lib module.
与你在android studio中手动输入包名不同的是,如果你没有手动包名,HX会按照下面的规则默认生成一个:
```
uts插件默认包名规则:
如果是根目录utssdk下的uts插件
包名:uts.sdk.(插件ID转驼峰)
如果是uni_modules目录下的uts插件
包名:uts.sdk.modules.(插件ID转驼峰)
举例:
uni-getbatteryinfo -> uts.sdk.modules.uniGetbatteryinfo;
uts-nativepage -> uts.sdk.modules.utsNativepage
```
### 3.2 配置res资源
![](
./uts_android_res_folder.jpg
)
示例文件在hello uts中的位置:
~
\u
ni_modules
\u
ts-nativepage
\u
tssdk
\a
pp-android
\r
es
除了这里列出的layout,values目录外,还支持anim等所有android标准资源目录
### 3.3 配置asset资源
以hello UTS中的uts-advance插件为例。
示例文件在hello uts中的位置:
~
\u
ni_modules
\u
ts-advance
\u
tssdk
\a
pp-android
\a
ssets
![](
./uts_android_assets_folder.jpg
)
### 3.4 增加libs依赖资源
以Hello UTS项目下的uts-tencentgeolocation 插件为例
![](
./uts_android_libs_folder.jpg
)
示例文件在hello uts中的位置:
~
\u
ni_modules
\u
ts-tencentgeolocation
\u
tssdk
\a
pp-android
\l
ibs
## 4 语法差异重点介绍 (持续更新)
通过上面的章节的阅读。
至此我们认为你已经掌握了UTS语法,掌握了基本的Kotlin语法,掌握了UTS对于android资源的支持。
但是对于一个熟悉android开发的kotlin语言者来说,有很多常用的语法发生了改变,我们会在这个章节特别指出,便于开发者加深认识。
### 4.1 可为空的语法标识
kotlin中可为空的语法统一为类型后加
`?`
,已下面的代码为例
```
ts
// 一个可为空的字符串变量,变量名为user
var
user
:
String
?
=
null
```
但是ts中分两种情况,如果是全局变量,可为空,需要这样写
```
ts
let
user
:
string
|
null
```
如果是成员变量,与kotlin类似,但是区别在于?写在变量后,而非类型后
```
ts
let
user
?:
string
```
### 4.2 let和var
`kotlin`
中 可变变量修饰为
`var`
、
`val`
。 区别在于 val 不可变,var可变。
`uts`
中对应
`var`
的变量类型为
`var/let`
推荐使用
`let`
因为只会在作用域内生效,需要慎用
`var`
,因为它具备有更大的作用范围
### 4.3 extends
`kotlin`
中的: 继承操作符,需要用
`extends`
取代
|语法|kotlin|uts|
|---|-------|---|
|继承类|:|extends|
|实现接口|:|extends|
```
kotlin
class
MediaContentObserver
:
ContentObserver
{
}
```
```
ts
class
MediaContentObserver
extends
ContentObserver
{
}
```
### 4.4 非空断言
kotlin中的非空断言是
`!!`
,ts中是一个
`!`
```
ts
user
!
.
sayHello
();
```
```
kotlin
user
!!
.
sayHello
();
```
### 4.5 方法定义
方法定义
`kotlin`
里的方法只有一种定义方式
```
kotlin
fun
startListener
():
void
{
}
```
uts中,需要区分全局方法、成员方法
```
ts
// 成员方法
startListener
():
void
{
}
```
```
uts
// 全局方法方法
function startListener():void{
}
```
### 4.6 快速调用父类实现
```
ts
//ts 中快速实现super
constructor
()
:
super
()
{
}
```
```
kotlin
//kotlin 中快速实现super
constructor
(){
super
();
}
```
### 4.7 匿名内部类
`kotlin中`
可以使用匿名内部类
```
kotlin
// kotlin 新建事件监听
user
.
setListener
(
Listener
(){
//todo
});
```
目前版本UTS还不支持匿名内部类,需要显性的声明再新建
```
ts
// 声明一个新的类,实现Listener
class
MyListener
extends
Listener
{
// todo
}
// 新建实例
let
myListener
=
new
MyListener
();
user
.
setListener
(
myListener
);
```
## 5 常见问题(持续更新)
### 5.1 如何在UTS环境中,新建一个`activity`?
参考Hello UTS项目中的uts-nativepage插件
路径:
> ~\uni_modules\uts-nativepage
### 5.2 如何在UTS环境中,新建一个`service`?
参考Hello UTS项目中的uts-nativepage插件
路径:
> ~\uni_modules\uts-nativepage
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录