提交 6cfdb8b8 编写于 作者: W wangan

完善文档

上级 6fc5d221
......@@ -56,18 +56,18 @@ uni-app x项目的unpackage目录下的app-harmony下有编译后的鸿蒙原生
ArkTS的内存垃圾回收和V8等不同,比较容易造成内存泄漏。可以通过deveco提供的工具来分析泄漏点。
## 开发注意
鸿蒙整体处于发展初期,能用,有坑,大部分坑有规避方案。但开发者应建议其领导、客户、质量部门降低期望,不能严格比照Android和iOS的验收标准要求鸿蒙。
- 鸿蒙编译工具会在编译本地库时给编译产物的目录加上一串hash值,但windows上最长的文件路径不能超过255个字符。如果开发者的项目路径字符串较长、uni_modules的目录名称较长,再加上鸿蒙deveco编译器加上的hash,就会触发windows文件路径长度限制,导致编译失败。所以windows上的uni-app x项目路径尽量要短,比如`c:\dev\app1``uni_modules`的目录名称也要短一些。
- 鸿蒙平台从4.63起支持摇树,可以根据代码使用情况来决定打包的模块。但仍然部分sdk需要在manifest的可视化界面配置sdk信息。模块列表详见[manifest文档](../collocation/manifest-harmony.md#modules)
- 暂未发布小程序SDK
- 鸿蒙平台目前不支持横屏、不支持 rpx 根据窗口尺寸变化自动变化
- 鸿蒙自身的Bug还有不少,开发时需注意相关的组件、API文档说明。比如:
* sticky-header组件实际无法吸顶,[华为issues地址](https://issuereporter.developer.huawei.com/detail/250220195912059/comment)。临时规避方案是通过嵌套滚动或持续修改位置实现吸顶。在hello uni-app x的模板里有示例。
* rich-text的无法自动根据内容撑开高度、内部会自滚动且滚动条位置不对,[华为issues地址](https://issuereporter.developer.huawei.com/detail/250224172323045/comment),导致加载联网内容时滚动表现难以控制。[详见rich-text注意事项](../component/rich-text.md#tips)
* animateTo 设置 transform rotate 有较多问题,[华为issues地址](https://issuereporter.developer.huawei.com/detail/250317210619077/comment)
鸿蒙整体处于发展初期,能用,有坑,大部分坑有规避方案。但开发者应建议其领导、客户、质量部门降低期望,不能严格比照Android和iOS的验收标准要求鸿蒙。即便微信的鸿蒙版,功能、质量也比不过Android/iOS版。
- 使用 uni.loadFontFace 后需要更新设置字体内容才能使字体生效
- 鸿蒙官方文档中px是指物理像素,而在使用uni-app时px是指逻辑像素,这点在阅读鸿蒙官方文档时需要注意
- 鸿蒙平台 uts 插件内暂不支持使用uniCloud
- 在运行 HBuilderX 内置的 hello uni-app x 项目运行报错 `运行所需的权限没有签名授权`,是因为演示项目使用到了需要审批的 ACL 权限。解决方案:搜索 `ohos.permission.READ_PASTEBOARD` 将其注释掉,此时项目可以正常运行,同时剪切板的 api 测试页面将不生效。
## 插件扩展
......@@ -77,8 +77,3 @@ ArkTS的内存垃圾回收和V8等不同,比较容易造成内存泄漏。可
- [鸿蒙uts插件文档](../plugin/uts-for-harmony.md)
- [uts插件混编文档](../plugin/uts-plugin-hybrid.md#harmonyos平台)
- [uts标准模式组件文档](../plugin/uts-component-vue.md)
注意:
- 鸿蒙平台 uts 插件内暂不支持使用uniCloud
以上限制仅针对uts插件,页面里的代码没有限制
......@@ -34,7 +34,8 @@
+ sticky-header组件不支持css。仅支持padding属性控制子元素位置。其他排版需求要交给子元素实现
+ 同时存在多sticky-header组件请使用sticky-section组件充当父容器控制吸顶业务
+ 鸿蒙平台暂不支持sticky-header,需要等鸿蒙修复ListItemGroup组件frameNode不能添加header的Bug后方可支持
+ 在API版本低于17的鸿蒙平台上,若想使用吸顶,不能使用本组件。可在滚动容器里自行监听滚动,设置某个区域的top为固定值来实现吸顶。可参考hello uni-app x的模板->[scroll-view自定义滚动吸顶示例](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/template/scroll-sticky/scroll-sticky.uvue)
<!-- UTSCOMJSON.sticky-header.children -->
......
......@@ -11,7 +11,7 @@
所以在原生应用中集成uni-app x原生SDK,更像是集成一个小程序SDK。
当然uni-app x的性能是最好的,它不会像小程序那样缓慢,也比react native/weex/flutter等性能和兼容性更好(评测[另见](../select.md)
当然uni-app x的性能足够好,它不会像小程序那样启动缓慢,也比react native/flutter等性能和原生UI兼容性更好(评测[另见](../select.md)
uni-app x原生SDK,给原生开发者提供了更多可能性:
1. 一个最高性能的跨平台框架,让开发效率、运行性能、开发成本这个原来的不可能三角变成可以兼得
......
# uni-app x项目
## 新建
在HBuilder3.9起,新建uni-app项目界面的底部有一个checkbox:uni-app x。勾选后会新建为uni-app x项目。
首先需下载最新版[HBuilder](https://www.dcloud.io/hbuilderx.html)
在菜单文件>新建>项目中,选择新建uni-app项目。(或工具链左上角的新建快捷菜单,或者快捷键Ctrl+N)
可以选择空项目,也可以选择hello uni-app x示例项目,这个项目有几百个页面,演示了uni-app x的各种组件和API的用法。
注意这里区分uni-app和uni-app x项目,在该界面的底部有一个checkbox:uni-app x。**勾选后**会新建为uni-app x项目。
不要错选成uni-app!
![](./static/newproject.png)
uni-app x不支持vue2,所以无法同时勾选vue2。
uni-app x只支持vue3,无法勾选vue2。
uni-app x的项目,manifest.json中会多一个节点`"uni-app-x" : {}`。这是HBuilder识别项目类型的标记。如手动增删这个节点,需对项目点右键"重新识别项目类型"
```json
......@@ -32,8 +41,6 @@ uni-app x的项目结构与[uni-app老版的项目结构](https://uniapp.dcloud.
基于uts的插件,可以在uni-app x和uni-app上通用。
uni-app x的App平台也不支持微信小程序wxml组件。
<pre v-pre="" data-lang="">
<code class="lang-" style="padding:0">
┌─uniCloud 云空间目录,支付宝小程序云为uniCloud-alipay,阿里云为uniCloud-aliyun,腾讯云为uniCloud-tcb(详见<a href="https://doc.dcloud.net.cn/uniCloud/quickstart?structure&id=structure">uniCloud</a>
......@@ -70,34 +77,75 @@ uni-app x的App平台也不支持微信小程序wxml组件。
UniApp上有应用级的方法和属性。[详见](./api/get-app.md)
## App的运行和发行
## 运行
新建项目后,可以直接点顶部菜单或工具栏运行,选择要运行的目标平台。
在HBuilder中,有顶部菜单、toolbar运行按钮、快捷键三种运行入口。
1. 顶部运行菜单
![](https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/menurun.png)
2. toolbar工具栏上的运行按钮
![](https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/toolbarrun.png)
uni-app x的真机运行基座(playground),和 uni-app/5+App/wap2app 不同,是一个绿色圆形的U(之前是方型H),基座名称默认为`uni-app x`(之前叫HBuilder)。
toolbar的运行按钮点击后会展开一个菜单。这个菜单可配置,通过`自定义菜单`将不常用的运行项目折叠起来。
3. 快捷键
运行快捷键是【Ctrl+r】
弹出的菜单还支持键盘快捷选择:按回车可以选中菜单的第一项;windows下按数字可以快捷选中菜单项开头数字对应的菜单项。
如果不能看到相关菜单,那么HBuilder当前打开的文件可能不是uni-app x项目下的文件。
运行到不同平台,需要不同平台的运行环境,比如安装浏览器、安装小程序模拟器、安装手机模拟器或电脑端插入真机。
根据提示安装运行环境,并注意观察控制台的日志。
在控制台的右上角,点击红色虫子可以开启debug调试。详见左侧的运行和调试章节。
### 运行到App
uni-app x在运行到Android和iOS时,提供了真机运行基座(playground),该基座安装到手机后,可以把开发者编写代码同步到手机上运行在这个基座上。
并实现修改代码后热刷新,在手机上及时看到效果。
运行到鸿蒙时,没有基座概念,直接调用本地的deveco出包。当然也就不支持热刷新了。
Android和iOS上的基座有标准基座和自定义基座的概念。
和 uni-app/5+App/wap2app 的基座不同,uni-app x的标准基座是一个绿色圆形的U(之前是方型H),基座名称默认为`uni-app x`(之前叫HBuilder)。
![](./static/playground.jpg)
- uni-app x基座,只能运行uni-app x项目,包名是io.dcloud.uniappx
- HBuilder基座,可以运行uni-app/5+App/wap2app。包名是io.dcloud.HBuilder
标准基座使用的图标、包名、证书以及配置的三方sdk的appkey等各种原生信息,都是DCloud的。
标准基座使用的图标、包名、证书以及配置的三方sdk的appkey等各种原生信息,都是DCloud的。[详见](./tutorial/app-playground.md)
当需要使用自己的包名、证书、原生配置以及变更三方原生sdk时,需在打包界面勾选打包自定义基座,打包后的自定义基座会放置在项目的unpackage目录下,然后在运行项目时的界面中可以选择自定义基座来运行。
uni-app x运行时,控制台右上角可以选择开启原生日志。
uni-app x运行时,默认仅显示开发者代码和uni-app x框架的输出日志,在控制台右上角还可以选择开启原生日志。
### 运行到web
uni-app x运行到浏览器时,编译基于vite,其特点是按需编译。所以项目运行后很快能看到首页,但后续仍然在编译其他页面直到项目编译完成。
目前支持真机运行、从HBuilderX 4.0起支持uts插件的debug断点。目前iOS的uvue页面可以断点,Android还不支持uvue的断点debug
如果后续页面有报错,就会在控制台看到输出。即便这个页面并未打开
uni-app x App平台,不支持wgt热更新、不支持安心打包。下载到项目下的uts插件可打包含入。
## 发行
## web的运行和发行注意
选中要发行的项目,点顶部菜单发行(或者对项目点右键,或者快捷键Ctrl+U),选择要发行的目标平台。
uni-app x运行到浏览器时,编译基于vite,其特点是按需编译。所以项目运行后很快能看到首页,但点击二级页时有等待延迟,因为此时正在先编译后再渲染
所有平台的都支持本地发行,同时依赖本地安装的发布环境。在菜单或弹出界面上有相应的教程链接
这带来2个问题:
1. 运行时点击初次打开的二级页有等待过程。在一个运行的周期内,已编译过的页面再次进入时瞬间打开。
2. 运行后未点到页面由于不会被编译,其中隐藏的类型错误不可知,需在发行时查阅。
如果发布Android和iOS应用,HBuilder还额外提供了方便的云打包,免去安装和配置原生环境,直接出apk、ipa包。[详见](./tutorial/app-package.md)
发行时会编译全部项目。因为运行时未必点全所有页面,所以发行时可能看到更多编译报错。另外发行后由于已编译过,打开二级页面时很快。
除了在菜单里点击发布,也可以通过HBuilderX的cli,实现持续集成和自动发布。[详见](https://hx.dcloud.net.cn/cli/README)
发行后的文件如果部署uniCloud的前端网页托管,记得在uniCloud的web控制台点强制刷新。
如果你不希望直接发布成品应用,而希望发布成其他应用的一部分,那么
- App平台:需参考[uni-app x 原生SDK文档](./native/README.md),把uni-app x项目发布为kt、swift源码,集成到自己的原生项目中。
- 小程序平台:可发布为分包,成为其他小程序的一个分包。[详见](https://uniapp.dcloud.net.cn/hybrid.html)
如果有条件的话,可以在重新部署后用各地ip访问一遍,让文件同步到各地的cdn节点,这样当地用户第一次访问时就会更快
如果你已经拥有了非uni-app x的成型应用,想要渐进式的引入uni-app x,那么上面的方案非常合适。可以用uni-app x开发部分页面,集成到原来的项目中
\ No newline at end of file
......@@ -6,7 +6,7 @@ uni-app x 是一个庞大的工程,它包括uts语言、uvue渲染引擎、uni
uts是一门类ts的、跨平台的、新语言。
uts在iOS平台编译为swift、在Android平台编译为kotlin、在Web和小程序平台编译为js、在鸿蒙next平台上编译为ArkTS
uts在Android平台编译为kotlin、在iOS平台编译为swift、在鸿蒙next平台上编译为ArkTS、在Web和小程序平台编译为js
在Android平台,uni-app x 的工程被整体编译为kotlin代码,本质上是换了vue写法的原生kotlin应用,在性能上与原生kotlin一致。
......@@ -67,6 +67,7 @@ uvue是一套基于uts的、兼容vue语法的、跨平台的、原生渲染引
- Android版于3.99上线
- Web版于4.0上线
- iOS版于4.11上线
- 微信小程序版于4.41上线
- harmonyOS版于4.61上线
uvue渲染引擎包括uts版的vue框架(组件、数据绑定...)、跨平台基础ui、css引擎。
......@@ -155,15 +156,17 @@ uvue在App端支持的css语法,是web的子集,类似于但优于nvue的css
也就是uts原生插件作者必须得有mac电脑,普通的App开发者可以没有mac电脑。
- js逻辑层已于4.11版上线
- swift逻辑层还未上线
- swift逻辑层还未发布
虽然理论上swift逻辑层的性能要高于js逻辑层,但开发者可以放心使用js逻辑层。
uni-app x在iphone上的js逻辑层和原生渲染层的通信经过特殊处理,大幅提升通信效率问题,不再需要bindingX这类技术。也不存在flutter那种混合渲染问题。\
可以体验hello uni-app x的iOS版本,在slider-100、滚动时动态调整view的top值以维持吸顶等极端场景,均如Android一样的丝滑流畅。
使用js逻辑层除了能在windows下开发,还有一个好处是大幅降低插件生态的建设难度。
使用js逻辑层有若干好处:
- 可以在windows下开发(纯Swift只能在mac下开发)
- 支持开发期间热刷新(纯Swift修改代码只能重新编译打包安装)
- 大幅降低插件生态的建设难度
插件作者只需要特殊适配Android版本,在iOS和Web端仍使用ts/js库,即可快速把uni-app/web的生态迁移到uni-app x中。
例如这个[request拦截库](https://ext.dcloud.net.cn/plugin?id=16177)
......@@ -280,9 +283,8 @@ uni-app x支持npm,但npm的大多数库是for web的,无法跨端,这些
除上述文档中声明已经完成的,还有如下需要注意:
- 平台支持:Android、Web、iOS版已发布。虽然uts语言支持swift,可以写原生插件,但uvue的iOS版目前只上线了js逻辑层,还未发布swift逻辑层
- 平台支持:Android、Web、iOS、鸿蒙版已发布
- 小程序平台:4.41起支持微信小程序。其他小程序还在陆续适配中。
- 鸿蒙next平台:4.61起支持鸿蒙next。
- 目前不支持国际区账户,仅大陆区开发者账户可用。
::: info
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册