原生HarmonyOS APP开发经验分享,「51CTO开源技术社区」App上线
51CTO开源基础软件社区作为开发者聚集地,希望为开发者深入探索HarmonyOS APP从设计到开发到上架这一完整流程,并为开发者提供专业的、具有参考价值的建议,同时,社区希望站在开发者的角度对HarmonyOS的开发者体验作出客观公正的评价。
我们希望给大家呈现一款充分展现HarmonyOS特性的社区APP,我们开发了卡片,实现了流转;在开发过程中探索HarmonyOS原生功能对APP支持程度,遇到了富文本BUG,解决了视频的问题;也摸清后端接入的技术难度,并无太大差异;最终,我们也真刀真枪地跑通了上架流程,虽然过程有些痛苦。
「51CTO开源技术社区」App下载方式
华为应用市场搜索“开源技术”,找到「51CTO开源技术社区」,下载安装(注:仅限鸿蒙操作系统的华为手机)
「51CTO开源技术社区」App产品说明
「51CTO开源技术社区」是51CTO开源技术社区为开发者打造的HarmonyOS学习交流平台。在这里,可以阅读鸿蒙原创技术文章,也可以学习最新的鸿蒙课程;在这里,可以参加鸿蒙大咖直播和线下沙龙,可以近距离与大咖进行互动;在这里,你还可以对话专家,与开发者们互动交流学习,下载最新鸿蒙开发学习资料。总之,我们希望为开发者提供一个开放、友爱的学习型社区。
「51CTO开源技术社区」App开发心得
以下内容由张云波老师(https://harmonyos.51cto.com/user/posts/9541484)整理撰写。
1. 已知主要BUG
富文本、WebView两大BUG:主要问题,一个组件仅能显示一页,不能拖动展示更多内容,导致过长的内容会被截断,严重影响内容显示的完整性。
网络请求fetch组件:前期我们测试发现不能正常发送POST请求,迫于无奈,我们选择使用GET请求。
Image组件:不能支持带HTTP Redirect请求的网络图片。
卡片组件:还不能做到JS页面的带参数的跳转。
2. 开发心得
① 因为App有既有的H5版本,所以从UI和交互设计上,与H5端是比较相似的, UI的实现相对琐碎,需要极大的耐心去实现。实际上在设计上可以更简洁一些,可减少因此产生的bug。
②关于技术框架选择,对于需要做重度繁复的UI实现的项目,选择JS UI较Java UI有效率上的重大提升,但缺点是目前JS UI提供的API比较弱,第三方库npm能使用的也比较有限,不具备非常好的综合开发能力。
③富文本、WebView中存在比较大的bug。单个页面中对内容高度存在限制。我们选择了循环渲染多个富文本组件来规避,但由此也产生一个比较明显的加载性能问题。再有就是WebView独占页面的限制,无奈放弃使用,改为原生实现,也花费了大量的时间去实现稍显复杂的页面。
④页面冗余。在开发中发现,很多页面具有相同的功能,有着非常相近的子组件构成,比如关于的用户,粉丝,内容标签,这些都在搜索、帖子、我的等页面频繁重复出现,所以在开发中我们就思考,这些相似的内容出现频率过高,设计上有一定的合并可能。
3.上架心得
①由于开发周期非常紧张,很多页面都是采用WebView来获取H5既有的页面来嵌入用户信息的,体验着实并不令人满意,但华为应用商店反馈的消息是可以上架的。相比较目前的鸿蒙原生开发的版本,采用WebView开发可以提前好几个月完成上架。这可能是华为上架策略上的失误,对于企业来说,先完成上架要比迭代到一个相对完美的版本更重要。
②从多次的上架审核沟通中,华为审核提出的意见越来越多,有很多意见其实是之前的版本未曾提出的。审核人员对版权、资质的理解也非常形式化,也造成了很多的困扰,其实很多材料是不必要的,一些要求可以凭常识就能判断核实。频繁地打回重审,时间往返成本极高。
③我们主动适配了暗黑模式、折叠屏等,这是在开发一开始未曾想到的。但在审核中是重点审核的功能,所以我们在开发中途增加了相关的设计。同时鸿蒙api中有想要的暗黑模式的颜色匹配、图片匹配等,又花费了蛮久的时间在审核往返中。
4.后续技术迭代规划
①后续版本希望鸿蒙API解除对富文本、WebView的各种限制,解锁与之相关的性能、体验有关的问题。
②在关键功能上,进一步增加体现鸿蒙特性的分布式协同功能。比如协同式发帖,一个帖子,可以在2台手机,或者多个设备上同时编辑修改,增加发帖的连续性不间断体验。
③另外增加一些音视频功能,使用更好的原生音视频组件,提供HarmonyOS社区内强大的视频流内容,甚至能达到媲美抖音之类的短视频产品体验。
5.整体判断&开发建议
①整体上,开发原生版APP本还是非常值得的,虽然周期超出原本很多,但是最终结果还是可以的。从HarmonyOS的发展速度来看,有bug可以理解,不过希望华为能解决目前一些非常明显的bug,尽量提升开发者的体验。
②开发的整体规划上,当以简洁明快设计为宜,可以减少页面,减少产生的开发bug和UI子组件嵌套形成的隐形性能问题,以及最重要的是减少上架审核周期,在上架之后迭代,可能更符合开发厂商的利益,因为一旦审核通过,后续的增量内容审核顺利度就高很多。
结语
以下几点是51CTO开源基础软件社区想要强调的:
社区并不认为这是一个功能完整的、体验优秀的APP,仅作为一次略显激进、为开发者踩坑的尝试,社区将会在合适的时机持续迭代优化,不排除推翻重构。
由于涉及到数据接口等隐秘信息,代码不考虑对外公布。
至于当前已上线的Beta版本,社区不排除暂时下架的可能。如想体验,建议尽快下载安装。
赶快学习一下。
加油,难得的经验干货分享。
说的明明白白,开发社区APP的心路历程全在这儿啦
厉害了 社区终于有鸿蒙原生APP了。必须支持下载一个!