不专业,但主观!几种安卓开发框架的使用感受
从萌生开发安卓APP的想法到现在,一晃过去了好几年。期间,我尝试过各种开发框架,也陆陆续续开发了一些应用。最近,用Flutter
开发了BiliMusic
,以BiliBili
为音频源的音乐播放器。Flutter
是我接触的第一个框架,兜兜转转,最终又回到了它的怀抱,有点感慨,所以想写一篇博客,分享一下自己的这几年上手过的开发框架的使用感受。
Flutter
我自己也不知道为什么,对Java
非常抗拒,所以没有选择原生开发,而是机缘巧合下了解到的Flutter
。
Flutter
最大的一个痛点在于 Widget
嵌套的复杂性。它要求开发者通过层层嵌套Widget
来构建界面。对于复杂的布局,代码嵌套可能会变得非常深,可读性和维护性都大打折扣。不过,通过抽取组件复用、结合状态管理库,这个问题可以得到一定程度的缓解。
Flutter
的异步处理是它的亮点之一,但对于新手来说,却是个不小的挑战。在没有AI辅助的日子里,我花了半天时间才搞明白FutureBuilder
和StreamBuilder
的用法和适用场景。这成功地把我劝退了。
大约一年前,我发现了PiliPala
这个应用,得知它是用Flutter
开发的后,我对这个框架重新燃起了兴趣。
有了AI的帮助,我很快完成了BiliMusic
的
Demo。这次的开发体验好了很多,快速搭建一个 Demo
不再是难事。GetX
状态管理库用起来特别顺手,极大提升了开发效率。开发过程比较依赖第三方库,不过Pub
包管理生态里的库数量丰富。当然,偶尔也会遇到库版本不兼容的问题。
UniApp
uni-app
是我最早接触的跨平台开发框架,但一直没能真正上手。主要原因是,我想开发的应用大多依赖爬虫功能,而前端跨域问题始终是个绕不过去的坎。此外,要实现一些原生功能也显得颇为棘手。不过,凭借HTML
和CSS
的强大表现力,uni-app
确实能打造出
UI 相当精美的应用。
Xamarin / MAUI
Xamarin / MAUI
是我用得最多的框架了。
在大二的暑假,学校安排了见习,但是实验室的老师并不是很上心,对我们是放养状态。于是,我趁机自学了Xamarin
。恰好那时,我萌生了一个想法:开发一款集课表查询、考试查询和图书馆预约功能于一体的校园助手。因为学校官网的体验实在太差,前辈开发的微信公众号也槽点颇多。跟着东北大学张引老师的课程,我学习了MVVM
模式,写出了相对优雅的代码,后续维护也轻松了不少。
没多久,MAUI
就发布了。正巧,学校的图书馆预约系统也迎来了改版。于是,我顺势将图书馆预约功能独立出来,用MAUI
重写了一版。
MAUI
的开发效率很高,对新人颇为友好。东北大学张引老师的课程作为入门指引,新手也不容易写出糟糕的代码。MAUI
的MVVM
,初次接触时让人觉得很高级,代码优雅且结构清晰。后面接触了Vue
、Flutter
的GetX
,我开始觉得MAUI
的MVVM
有点繁琐。MAUI
的可自定义程度较低,想要高度定制化,就不得不深入原生开发。Nuget
包管理工具使用体验很不错,相较于Flutter
使用pubspec.yaml
依赖管理方式,更合我心意。
Jetpack Compose
与Flutter
一样,采用了声明式UI。不过我当时没有精力去学Kotlin
,用起来不是很顺手。费了九牛二虎之力,才通过Hilt
实现了MVVM
模式。那时候,Material 3
似乎还在测试阶段,写代码时需要在前面加上类似@ExperimentalMaterial3Api
的注解——具体记不清了,总之是用来标记这些功能尚属实验性质。最终,代码写得不够优雅,我便放弃了继续探索。