uni-app x,一个纯原生的Android App开发工具
uni-app x,一个纯原生的Android App开发工具
uni-app x
uni-app x,下一代uni-app,一个神奇的产品。
用vue语法、uni的组件、api,以及uts语言,编译出了kotlin
的app。不再使用js引擎和webview。纯纯的kotlin原生app。
uni-app x,让“跨平台开发性能不如原生”的这条曾广为流传的规则,扔进了历史的垃圾桶!
uni-app x原理简析
当uni-app x
整体推到你面前时,你可能觉得难以想象,怎么可能编译为纯原生App?uni-app过去之所以能跨平台,是因为js是跨平台的啊。
所谓,成也萧何败也萧何,而uni-app过去在app上性能不如原生,也很大程度是因为js和原生的交互通信阻塞问题。
简述下uni-app x
的原理。
其实uni-app x使用的不是js,而是DCloud在2022年发布的uts
语言。这是一种基于ts改造的语言,改造的目的就是让它可以全平台编译。
我们知道js和原生语言的差异性主要在于类型
和动态性
。而ts已经为js提供了类型。uts是在ts的基础上,融合kotlin
和swift
的特性,抽象出了一套全平台可用的编译型语言。
uts在不同平台,编译为不同的产物:
- 在Web中编译为js
- 在iOS中编译为swift
- 在Android中编译为kotlin
然后DCloud又基于uts开发了uvue
的ui引擎,可使用vue语法来开发界面,再补上uni的组件和api,最终形成了你目前看到的uni-app x。
让你使用熟悉的代码、跨平台的方式,却能写出和原生的功能性能完全一致的app。
而且有趣的是,我们与原生开发者交流,发现使用uni-app x开发应用,比原生开发要快非常多。
案例
很多开发者都在关注着uni-app x,等待先行者趟坑。
这几个月来,很多先行者已经发布了他们的基于uni-app x
的产品。而HBuilderX
也发布了里程碑的3.98正式版,已经可以支撑商业应用。
快亿商城
这是一个云端一体的、完整的电商项目。客户端、服务器,甚至还包括管理端:快亿商城管理端
t-uvue-ui
这是一个丰富的ui库,解救那些不擅长界面的开发者。当然即便是擅长界面开发的,使用这个组件库也能提升不少开发效率。
uXui
一款基于 uni-app x 的、免费、开源的 UI 框架。
快速体验
欢迎你也来体验uni-app x这个神奇的产品:用你熟悉的代码,开发出原生的Android App。
<template>
<view class="content">
<button @click="buttonClick">{{title}}</button>
</view>
</template>
<script> //注意这里编写的是uts,是ts的变种
export default {
data() {
return {
title: "Hello world"
}
},
onLoad() {
console.log('onLoad')
},
methods: {
buttonClick: function () {
uni.showModal({
"showCancel": false,
"content": "点了按钮"
})
}
}
}
</script>
<style>
.content {
width: 750rpx;
background-color: white;
}
</style>
体验uni-app x的真实效果,在外部浏览器里下载hello uni-app x的apk,或扫描下方二维码。
hello uni-app x 演示了uni-app x目前支持的所有内置组件、API、以及诸多页面模版。
质量
uni-app x
从源头重视产品质量,第一个版本就支持自动化测试。并已为uni-app x产品编写了几十个测试工程、数十万行测试例代码。
虽然这些工作导致uni-app x
初期的迭代速度变慢。但让uni-app x的质量水平大幅提升。每天晚上DCloud内部众多机器在运行这些自动化测试代码,除了监控质量,还在监控启动速度、包体积大小、内存占用等各种关键指标。
插件大赛及生态
由于uts编译为kotlin,也就是kotlin在Android上能用的api、能用的三方sdk,uni-app x里都可以用。
<script>
import Build from 'android.os.Build';
export default {
onLoad() {
console.log(Build.MODEL); //调用原生对象,返回手机型号
console.log(uni.getSystemInfoSync().deviceModel); //调用uni API,返回手机型号。与上一行返回值相同
}
}
</script>
上面的示例,在页面启动时打印了2行日志,显示手机型号。
uni.getSystemInfoSync
,是uni的apiimport
的Build,是Android os的api
在uni-app x里,可以直接调用os的能力,不受限制,语法是uts的语法,但需要了解什么功能在原生里是哪个api。
使用uni.getSystemInfoSync
则比较简单,看uni的文档即可,且可跨平台。
其实,uni.getSystemInfoSync
的内部实现就是一个uts模块,底层使用了一样的代码,也是import了android.os.Build。
uni.
的api,大多是uts开发的,它们都开源在uni-api仓库
uni-app x
作为一个原生应用,自然可以使用原生的各种sdk,包括flutter、react native、cocos、unity等原生sdk,均可集成使用。
在插件市场,有基于uni-app x的各种作品。
DCloud官方插件
第三方项目
UI库
- t-uvue-ui :丰富的组件库
- easyX电商组件库:电商业务常见的各种组件库
还有各种原生扩展的ui组件和api插件。
目前已有数百款适配uni-app x的插件。
随着插件大赛的开展,uni-app x周边生态在如火如荼的丰富中。
针对您提到的uni-app x,作为IT专家,我将提供一个简要的介绍以及如何使用uni-app x开发纯原生Android App的相关代码案例。uni-app x是DCloud公司推出的一个跨平台开发框架的增强版,旨在通过一套代码同时发布到iOS、Android、以及各种小程序等多个平台,而uni-app x更进一步,强化了原生能力,让开发者能够更高效地开发出接近原生体验的应用。
环境准备
首先,确保您已经安装了HBuilderX,这是DCloud提供的集成开发环境(IDE),支持uni-app的开发。同时,您还需要配置好Android Studio,以便进行原生代码的调试和打包。
创建一个uni-app项目
- 打开HBuilderX,选择“文件”->“新建”->“项目”。
- 在弹出的窗口中,选择“uni-app”项目模板,填写项目名称和路径,点击“创建”。
编写原生模块代码
uni-app x支持通过原生插件的方式扩展原生功能。以下是一个简单的原生插件示例,用于在Android端显示Toast消息。
创建原生插件
- 在Android Studio中创建一个新的Android Library模块。
- 在该模块中编写Java代码,例如:
package com.example.myplugin;
import android.widget.Toast;
import io.dcloud.feature.uniapp.bridge.UniJSCallback;
import io.dcloud.feature.uniapp.common.UniModule;
public class ToastModule extends UniModule {
public void showToast(String msg, UniJSCallback callback) {
Toast.makeText(mUniContext.getActivity(), msg, Toast.LENGTH_SHORT).show();
if (callback != null) {
callback.invoke();
}
}
}
- 配置
manifest.json
文件,将原生插件注册到uni-app项目中。
"nativePlugins": {
"ToastPlugin": {
"package": "com.example.myplugin.ToastModule",
"platforms": {
"android": {
"package": "com.example.myplugin",
"abiFilters": ["armeabi-v7a", "arm64-v8a", "x86", "x86_64"]
}
}
}
}
在uni-app中调用原生插件
在uni-app的JavaScript代码中,可以通过以下方式调用原生插件:
uni.requireNativePlugin('ToastPlugin').showToast({
msg: 'Hello, uni-app x!',
success: function() {
console.log('Toast shown');
}
});
打包和运行
- 在HBuilderX中,选择“发行”->“原生App-云打包”或“原生App-本地打包”。
- 根据提示配置相关信息,生成APK文件。
- 使用Android Studio或其他工具将APK文件安装到Android设备上,运行并测试。
通过上述步骤,您可以利用uni-app x开发纯原生的Android应用,并体验到其强大的跨平台开发能力。