本人后端佬,想了解一下其他领域的情况,所以想问一下大家移动端目前的主流技术栈是怎样的一个情况(虽然目前移动端的市场已经被小程序给吃掉很多了,但我还是想了解一下),react-native 、kotlin 、原生 Java 、flutter 等,如果要开发移动端 App 的话,目前主流的技术栈是咋样的
注:虽然 uniapp 这种可以极大程度上减少开发和维护的成本,但对于纯粹追求技术的开发者而言,实在是无法接受
1
boyxy120 2023-05-18 11:52:28 +08:00
公司需要什么就用什么
|
2
x77 2023-05-18 13:39:57 +08:00
Kotlin 、Java 是原生开发,用的系统的基于 XML 描述的交互界面,开发算法、集成第三方库、调用 Android 系统的 SDK 来实现功能
Flutter 是面向跨平台应用,一套代码只需要不同的平台编译即可(不需要为不同的平台开发不同的版本)。分原生和 Web:原生 App Flutter 框架自己实现交互界面,和 XML 不同 Dart 是声明式 UI ,功能实现上通过 Plugin 机制和系统 API 交互; Flutter Web App 在浏览器上运行,编译会生成 JS ,渲染模式可以用 Canvas 也可以 HTML ,功能没法做到原生 App 那么广泛,会受浏览器能力的限制。 RN 和 Flutter 类似,但我不是很了解就不讲了 |
3
vueli 2023-05-18 13:42:10 +08:00
一般公司领导不在于技术追求,反而都是什么方便什么来,更多的的都是原生 APP 套个 H5 的壳子。美名其曰混合式开发。 当然了这种情况更新方便快。
|
4
x77 2023-05-18 13:45:29 +08:00
@x77 从先进程度和发展趋势看,Flutter 这类框架是方向(主观)。补充一下,Flutter 原生 App 效率非常好,和 Kotlin 、Java 写的没啥区别,比一些不理解 App 开发随便写的 Kotlin/Java App 效率更好。
|
5
beisilu 2023-05-18 13:46:29 +08:00
小应用和玩具都无所谓,大的肯定都是混合的。
|
6
blackvv666 2023-05-18 13:48:33 +08:00
没什么值得追求的。
左右不过就是写写那些业务 UI 。 哪个块,哪个方便,哪个挣得多。 用哪个。 太年轻了,还纠结这些最无所谓的东西。 |
7
AreYou0k 2023-05-18 14:00:20 +08:00
flutter
|
8
zoharSoul 2023-05-18 14:05:02 +08:00
目前还是原生为主.
小程序基本都是特别边缘的部门在负责..... |
9
theguagua 2023-05-18 14:19:37 +08:00
混合开发用过 Java+rn 和 Java+Flutter ,业务基本一样的情况下,Flutter+Java 在操作上会更加流畅一些,开发中奇怪的 bug 也会少一些,Dart 也会比 React 心智负担少一些(比如 React 各种 rerender) ,也见过 WebView 套壳的网页+kolin/java ,前端网页部署确实方便,但也有一些局限性
|
10
beimenjun 2023-05-18 14:20:18 +08:00
其实吧,不理解 App 原生开发随便写的 Flutter 也就那样……
有些东西比较的时候会陷入田忌赛马的状态,拿一个中等马去对比别人下等马。 Flutter 终究是第三方,哪怕是 Google 里面团队做的,对于 Android 开发这个领域终究不算亲生的。 |
11
aCodingCat 2023-05-18 14:20:35 +08:00
别想太多
直接上 flutter |
12
ciki 2023-05-18 15:03:10 +08:00
小的东西随便,大项目直接原生
|
13
wobuhuicode 2023-05-18 15:20:50 +08:00
react native 招人最简单。
|
14
deng81416754 2023-05-18 15:39:52 +08:00
如果是在公司角度肯定是低成本的 uniapp 性价比更高,如果是纯粹追求技术 肯定是新出的 compose 、flutter 等技术更具有发展性
|
15
wingkwanli888 2023-05-18 23:25:09 +08:00 via iPhone
@deng81416754 我司最近两年的 app 项目都是 webview 套 vant h5 , 体验上和原生没分别
|
16
coreki 2023-05-19 08:36:22 +08:00
直接上 flutter ,流畅丝滑
|
17
furlxy 2023-05-19 15:09:36 +08:00
大部分都是原生代码,flutter 及一些营销活动是网页代码占比不到 10%,至于小程序,边缘业务才会用到,比如使用说明书这种。
|
19
zhanlanhuizhang 2023-05-23 14:40:50 +08:00
如果一个应用复杂点不在页面,那么就用原生吧,如果业务不复杂,复杂点在页面那就用跨平台。
|
20
zhanlanhuizhang 2023-05-23 14:50:43 +08:00
比如一个 app ,需要本身带服务器( AndServer 这种),需要全局数据库支持,音视频,需要支持蓝牙,NFC ,自己写相机,这个时候,你需要用 C ,C++,java ,lua ,kotlin ,如果是混合协作开发,你还需要考虑和 webview 交互,需要懂 js ,如果需要在各种环境打包,还有怎么自动备份混淆文件,备份打包文件,这个时候你还需要学习 Groovy ,或者 kotlin dsl ,来配合 gradle 打包。如果需要自动生成 doc 文档上传服务器,那么需要了解一下 nginx 等等,然后你发现这样是不是可以使用 Ci/CD ,然后你需要学习一下可持续集成,学习怎么写脚本文件等等技术。妈蛋无穷无尽。
|
21
zhanlanhuizhang 2023-05-23 14:58:07 +08:00
然后,还有,如果你想学习一下,SO 库,内存泄漏,或者怎么监听 SO 造成的闪退,哦豁,这个时候,你还需要学习一下内存 dump 信息等堆栈信息。如果遇到性能优化,这个时候你可能还需要了解一下利用寄存器编程,然后你想搞点黑科技,这个时候你需要学习虚拟化,Hook 等等技术。
|
22
zhanlanhuizhang 2023-05-23 15:05:13 +08:00
以上还只停留在用的层面,如果遇到,特殊问题,比如流式压缩,非对称加密(自己实现椭圆曲线代码),教育机上的手指跟随书写效果,可能几周一个月也没有任何进展,这个时候就发现他妈的,写界面 UI ,动画效果,至少可以慢慢调试,真他妈简单。可是有些东西,不懂,就根本无法下手。
|
23
snowflake007 302 天前
小点的看现有人员的技术栈,反正又不是不能用( dog )
但是大一点的大型 App 还是原生是主流加一些 H5 混合 小公司呢生存都不一定,折腾哪个快用哪个,Flutter ,uniapp ,H5 加壳都行 |