写在前面
趁着最近项目结尾,又恰逢周五,不稍微摸一下🐟 有点儿对不起过去一个多月加班的自己(写技术总结类文章应该不算摸鱼吧🙄),周五就该有周五的态度,有啥事下周一再说吧~
技术点
1. uni-app
使用的是vue2语法的uniapp框架进行Android应用开发,是一个用于政府的工具类项目,所以说不用上架应用市场,也不用兼容ios系统,省了我好多事~
2. uview
ui框架使用的是uview组件,挺好用的,至少比原生的uniapp组件好看一些,嗯 我是这么而觉得的..
3. arcgis地图服务
app有一些地图类型的服务,比如地下水管的查询显示,和一些城市水务类的功能,新手上路,网上资料又少之甚少,走了好多弯路,还好有之前做过的同事帮忙,不然又要花大把的时间去学习这个,害😑
4.地图定位
谷歌地图与定位信息,这个还好,度娘挺多资料能查到的。主要就是申请key和配置,离线打包就麻烦一点了,需要引入相应的SDK才行。
5.文件上传
Android系统API去调用文件系统上传文件。这个本来想自己搞的,后来发现社区有现成的组件能够用... 淦!
6.可视化图表uCharts
基于echarts的uCharts组件,app用eCharts也可以,uCharts的 兼容性好像更好一点儿,看个人选择,都行的
踩坑记录
-
uview的表单组件,H5测试密码显示与隐藏能够实现,但是真机测试实现不了~,换了N种写发法 ,依然无效,被迫使用uniapp原生的表单组件重写,成功实现,有踩坑或者知道问题的小伙伴能留言评论一下,谢谢🙏
-
消息推送,如果要实现app有推送功能的话 ,一定要确认好是否需要离线推送,如果不需要那非常好办,只需要一些信息按照教程就能实现,如果需要离线推送,那就要做好部分平台上线的准备~,比如华为还是vivo的的,好像就需要上架应用才能实现离线推送。同时需要一些列的信息进行注册使用,如果你们公司有运维之类的工程师帮你做好了,这样能省很多事!
-
文件选择 uni.chooseFile(OBJECT) 这个API只能在H5中使用,动手之前记得先看清楚,我就是没看写了之后H5测试没问题,于是真机测试了发现跑不通...(我是**),大家可以看下官网对这个API的介绍,只能使用社区的插件或者自己通过plus模块进行封装使用了。
-
arcgis地图,我初进公司做这个app项目之前,从未了解过GIS,在同时的帮助下学习了ArcGis API for JS,感兴趣的小伙伴可以去了解一下,简单来说就是一款地图与图形化服务通过JavaScript来实现,提供了许多API让你能够画出自己想要的地图,在uniapp中编写ARCGIS的方式与在web端vue中不同,还好我在写项目之前不久就有一位大佬分享了他的在vue中实现方式,让我少走了许多弯路,这里贴出来感谢一下,非常棒的一篇文章!👉这里,其中他提到了需要在RenderJS中加载地图,what? 他也没解释为什么,于是我抱着不信邪的心态就不在RenderJS层去调用,结果一尝试真的不行...,后来一查资料,我觉得原因可能是因为这个arcgis库是一个for web库,对运行在Android环境下不支持的原因导致的,所以实现不了。我相信也有小伙伴想到了用混合开发,使用web-view组件进行渲染不就行了吗?一开始我也是这么想的,但是仔细一想在web-view中,通信方法少,同时难以和vuex状态统一管理起来,而且需要大量的dom操作和写原生的视图界面,于是我就使用了上边老哥的方法实现了,真香!在官方文档中对RenderJS的介绍是这样的1.大幅降低逻辑层和视图层的通讯损耗,提供高性能视图交互能力,2.在视图层操作dom,运行for web的js库。我一看到这两句话,我就想,嗯~就是你了,没使用过RenderJS的小伙伴可以去看看uniapp文档的解释,某些情况下还是挺有用的。
-
ucharts的使用,建议不要拿到数据就开始渲染,一开始我就是这样做的,后来发现在真机上会出现抖动的情况,用延时器延时50mm后再渲染就是正常情况了,之前在用ucharts文档的时候还有在线工具可以在线演示的,现在居然收💰了~~~
-
打包,因为这个项目是给政府做的,所以对安全性这块非常看重,界面UI倒是没那么高要求。如果公司的项目需要过安全检测,比如等保安全检测和爱加密的检测报告之类的安全检测的话,就要做好离线打包的准备。HBuiderX的云打包很好用,但是你要过安全检测的话就必须要手动在Android Studio里边去编写一些代码来解决问题。各种配置和模块都要重新来过,这里想批评一下uniapp官方的离线打包文档更新不及时的问题...,有些代码官方已经在SDK中更新了,但是文档还是停留在之前的版本,费了我一些时间才看明白/(ㄒoㄒ)/~~ 并且对一些细节上的编写说明也不够多,许多安全问题需要你自己去学习Android Studio的语法才能搞懂,因为这个安全问题真的是困扰了我好久,公司的Android开发不懂uniapp,我又不懂Android开发,导致在AS里边修改安全问题谁都不好下手...,而且检测出来的一系列安全问题都比较棘手,例如需要使用NDK开发去编译SO文件之类的,听都没听过..,最终还是选择了向技术妥协,花钱买了专业的加固去解决问题,早知今日何必当初~ 我们公司检测方和加固方都是爱加密,不得不说,真是两头赚钱👍。不过在这个解决安全问题这块还是学到了不少东西,有需要离线打包有问题的小伙伴而且网上教程不懂的(我还是比较推荐官方的文档)可以联系我瞧一瞧~,给一些力所能及的帮助。
-
发布,因为我的项目不需要上架应用市场,所以省了很多事,我们发布的方法呢是把APP放在服务器上,把资源地址生成一个二维码给用户下载。这里推荐一个二维码生成的工具,有需要的小伙伴可以试试,二维码生成器,给app启动的时候调一下接口判断是否最新版本,如果需要升级就在app内下载重新安装就好啦~,就不用每次卸载重新安装麻烦了。
总结
开发app总共一个多月时间,第一次从0到1的开发说没有压力确实是假的,前期也没少加班,可惜的是公司没有打卡加班工资,害 说到底也是因为自己能力不够吧,换个人可能还能省一些工期来摸鱼~ 开发这个app我收获也不少,uniapp的架构搭建、文件的上传下载、消息通知、Android Studio离线打包、一些APP安全问题的解决、ARCGIS地图、服务器的部署、以及对开发流程有了一些新的思考和解决的思路。总的来说这一个多月来的收获还是很大的,也很感谢经理对我的信任。希望从此篇开始记录我的成长之路~