最近在尝试将现有的uni-app项目编译成app,过程中出现许多坑。现在记录一下编译打包过程主要顺序以及要注意的点。
uni-app是跨平台开发框架,开发一次IOS、Android都有了,uni-app在App端,基于能力层/渲染层分离的架构,渲染层是webview和weex二选一,能力调用共同的plus api 比如蓝牙、扫码等。
使用vue编写的页面就是通过webview编译的,使用nvue(native vue)编写的就是原生编译,因为MVVM模式架构逻辑层与试图层相分离,通信问题导致性能差。 但建议仍然以使用 vue 页面为主,在 App 端某些 vue 页面表现不佳的场景下使用 nvue 作为强化补充,使用的nvue场景如下:
介绍 | uni-app官网https://uniapp.dcloud.io/tutorial/nvue-outline.html#%E9%80%82%E7%94%A8%E5%9C%BA%E6%99%AF如果不追求性能,以大部分页面vue页面为主,nvue为补充,适用使用nvue的页面有以下:
1、在应用到大量原生控件,map、viedo、live-push等。
2、首页启动速度有要求的,首页可以使用nvue,在渲染上会快很多。
3、区域滚动以及瀑布滚动等
4、复杂的自定义下拉刷新等。
但nvue不仅有诸多限制,而且canvas的支持也是不如vue页面。而且nvue不支持ts 横竖屏也是难以适配,官方推荐横竖屏直接固定锁。
跨端经常出现的问题可在下面官网链接提前绕路避坑。
uni-app官网https://uniapp.dcloud.io/matter.html
nvue页面对样式也存在诸多限制,
仅支持flex布局。无法引入字体文件,媒体查询,不支持百分比布局等,文字必须在text中,详细可见以下链接,查看官网的罗列的问题,避免踩坑
nvue所支持的通用样式已在本文档中全部列出,一些组件可能有自定义样式,请参考组件文档。除此之外的属性,均不被支持。 | uni-app官网https://uniapp.dcloud.io/tutorial/nvue-css.html无论使用各种ide,cli创建的项目在进行云打包的时候,经常出现一个升级,而另一个未升级的情况。如果未进行cli以及云打包还有手机基底的适配,应用将无法运行。正常在HBuilderX升级后,在打包时进行升级cli即可。可以下载@dcloudio/uvm来管理。
npm i @dcloudio/uvm npx @dcloudio/uvm npx @dcloudio/uvm 3.2.12.20211029
详细见
uni-app官网https://uniapp.dcloud.io/quickstart-cli.html#%E4%BD%BF%E7%94%A8cli%E5%88%9B%E5%BB%BA%E9%A1%B9%E7%9B%AE%E5%92%8C%E4%BD%BF%E7%94%A8hbuilderx%E5%8F%AF%E8%A7%86%E5%8C%96%E7%95%8C%E9%9D%A2%E5%88%9B%E5%BB%BA%E9%A1%B9%E7%9B%AE%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB如果需要打包成apk,在菜单栏 发行-->云打包。可以选择想要打包类型,以及相应的配置。前提需要对manifest.json进行修改。这也是uni-app项目跟其他的项目的区别
在main.ts中修改挂载形式
(App as any).mpType = 'app'//标记类型
new Vue({
...App,
render:(h)=>h(App)
}).$mount() //修改挂载形式
解决完报错与cli版本以及打包cli的基底版本冲突之后就。推荐先使用真机调试,首先解决真机调试问题。真机运行常见问题 - HBuilderX 文档 (dcloud.net.cn)https://hx.dcloud.net.cn/Tutorial/App/PhoneDebuggingandroid需下载360、腾讯的手机助手。ios需下载itunes。并下载调试工具,运行--》手机--》选择手机,并运行。
编辑到真机成功后开启调试工具查看数据交互
浏览器手机模拟器显示效果如下,因为未做兼容处理。编译后出现样式排版的问题,灵敏度也下降
ios真机调试下载到手机上显示效果如下



