如果重新写一个 app ,该选择哪个?
有经验的人聊聊。
请不要说喜欢哪个用哪个这种没有价值的话。毕竟都没用过。对比是为了选择。
1
111111111111 2022-06-26 22:11:48 +08:00
先把 uniapp 划掉。。。体验真的不好
目前在用 Kotlin ,感觉一般般,说不上好说不上坏 观望 fluter |
2
buxudashi OP @111111111111 看网上说 flutter 能同时写 ios 和安卓。
几年前 google 都说要弄个新系统。fuchsia 也好久没动静了。因为不太喜欢又臭又长的 java ,不想搞安卓,不知道新系统啥时候出 |
3
cheng6563 2022-06-26 23:45:01 +08:00
Android 原生开发现在是真的恶心,编译速度快点 5 分钟慢点半小时。
|
4
hs0000t 2022-06-27 03:10:16 +08:00 via Android
主要按完善程度( demo 级别还是上线级别),跨平台程度,熟练程度等来判断
都没用过的话就只看完善程度和跨平台程度,完善程度越高越建议每个平台用各自官方推荐的语言,越低越推荐用跨平台语言 |
5
murmur 2022-06-27 08:26:55 +08:00
第一个就是 uniapp 。现在是 app 减量市场,都是从小程序开始做起,所以 uniapp 做小程序不错,等你抢占到市场,拿到了投资,再考虑 native 的事情。
|
6
murmur 2022-06-27 08:27:57 +08:00
有一个很现实的事情就是,上架小程序基本=国内 ios+android 全覆盖,安卓的上架光一个渠道就要你死
|
7
beisilu 2022-06-27 09:00:31 +08:00
月经提问。
java 算是被抛弃了,kotlin 是大势所趋。 自己玩写 flutter 。 |
9
debuggeeker 2022-06-27 09:24:01 +08:00 5
双端开发者来了,java ,kt 开发原生应用,你熟悉那个用哪个,混合也没问题。原生优势在于性能,注重体验的,优先考虑原生。flutter 嘛,纯 UI 显示无底层交互(无蓝牙,无相册相机,传感器,WiFi 等等),毕竟 flutter 只是 UI 框架,和本地硬件对接的还是依赖插件,现在大部分插件都有了,但是一些项目配置,报错等等你该熟悉的还是熟悉,甚至有些需要原生支持的你得会。体验,看开发能力,上限高,下限低。如果遇到一些奇奇怪怪的 bug ,要有能力解决。
uni 就是 webview 加载东西,体验一般。场景:快速成型交付客户,如果遇到打磨体验的时候估计还得走原生 路线。 先写这么多。 |
10
buxudashi OP @debuggeeker kotlin 能调用硬件能力吗?如 gps ,nfc ,重力感应?
|
11
cnhongwei 2022-06-27 09:59:27 +08:00 1
我选的话,选 React native 。iOS Android web 都可以,因为我没有做小程序,所以 react native 转小程序没有看过,好像有作品,但成熟度如何没有试过。不用 flutter 主要是热更新功能官方还是没有支持,而 RN 就成熟多了。使用 Expo 感觉和开发 web 差不多。
|
13
magicdu 2022-06-27 10:02:55 +08:00
我们现在是混合开发,h5+原生,h5 搞不了的再用原生写接口
|
15
xcsoft 2022-06-27 10:05:02 +08:00 via iPhone
flutter 还行
|
16
ifdef 2022-06-27 10:07:29 +08:00
html+css 写 ui 界面很快,如果 app 大部分是纯展示的页面,用原生(kotlin+xml / java+xml)写太慢了。不过可以试试 jet pack compose 。
|
17
marcong95 2022-06-27 10:08:41 +08:00
uniapp 确实坑多,举个栗子,DOM/Canvas 操作极奇葩,算是照着微信小程序重复造的轮子,而且还是比较旧版的小程序 API 。如果你不在意性能,想用回 Web API 的话,那个所谓 renderjs 文档极少,API 也各种奇葩。而且据说还会内存泄漏。
你要考虑各种奇奇怪怪的小程序可以上,如果不需要,建议别。 |
18
runningman 2022-06-27 10:11:53 +08:00
flutter ,
|
19
fredli 2022-06-27 10:18:39 +08:00
必须干掉 java 选 kotlin 啊,compose 唯一
|
20
fernandoxu 2022-06-27 10:29:24 +08:00
jetpack compose
|
21
pdog18 2022-06-27 10:35:42 +08:00
@buxudashi 这个完全不是问题,这个是 framework 提供的能力,java / kotlin 并无区别,因为 kotlin 是完全可以调用 java 写的 framework 的
|
22
buxudashi OP @pdog18 只选择一种语言适应全局功能。不能因为学了 Kotlin,发现又要调用 java 的框架,又把 Java 学了,那就坑大了。
双份劳动拿一份工资。不明智呀。 |
23
z42514 2022-06-27 10:38:18 +08:00 1
|
24
z42514 2022-06-27 10:41:23 +08:00
@z42514 #23 kotlin 调用原生方便,是因为用 kotlin 的话基本上就代表使用的是原生开发,而不是 kotlin 本身支持调用硬件
|
25
Leviathann 2022-06-27 10:50:54 +08:00
@buxudashi 什么意思
kotlin 的标准库都是直接用的 java 的 |
26
sakuraSou 2022-06-27 10:52:47 +08:00 1
用 uni-app 会让人生变得不行
|
27
pdog18 2022-06-27 10:58:33 +08:00
@buxudashi 。。。有那么夸张嘛?那换一个角度,如果你只学 Java 以后只用 Java 写 app 用的时间是 1000 个小时,但是你同时会 java 和 kotlin ,后面因为用 kotlin 加快了开发效率,使用的时间是 800 小时,那又怎么算?
|
28
pdog18 2022-06-27 11:00:44 +08:00
这种例子我可以举很多,如果你只会 java ,那么同理 kotlin 的一些第一方库,第三方库你都不用,不是因咽废食嘛?这两者不是对立的,不是非 Java 即 Kotlin ,而是两者可以同时学,同时用。
|
29
yazinnnn 2022-06-27 11:04:54 +08:00
学 kotlin 需要 java 基础, kotlin 是更好的 java
|
30
xmt328 2022-06-27 11:30:49 +08:00
如果是刚学那肯定是从 java 或者 kotlin 入手
不管做哪个,都得会原生开发 |
31
seakingii 2022-06-27 11:39:50 +08:00
c# : ??? 怎么没人说我
|
32
yor1g 2022-06-27 11:44:29 +08:00
用 fluter 大多数库会涉及到 dart kotlin java
用 kotlin 大多数库会涉及到 java 用 java 有些库会涉及到 kotlin 但是 kotlin 可以反编译成 java |
33
kennir 2022-06-27 11:48:41 +08:00
不考虑跨 iOS 的话 kotlin 配合 jetpack , 写起来很舒服,新项目可以考虑符合干净架构
需要跨平台又没有太多的 native 体验需求的话那就 flutter |
35
fox0001 2022-06-27 12:47:30 +08:00 via Android
flutter +1
|
36
zpxshl 2022-06-27 12:56:47 +08:00 via Android 1
想得太多而动得太少
|
37
tianxin12138 2022-06-27 13:35:37 +08:00
我是一个游戏客户端,站在外行的角度来说,我个人更倾向于 flutter 。从上手难度来说,我觉得 flutter 比 uniapp 上手快多了,CSS 各种属性看着真的头大。再一个渲染显示方面,flutter 基本上写成啥样就啥样了,uniapp 我按照小程序上的表现去写,Android/IOS 打包出来的效果可能会有差异。还有个性能就不说了,大家都说的太多了,但是据小道消息说 chrome 后期可能会直接支持 dart ,潜力巨大
|
38
xiaogui 2022-06-27 13:46:12 +08:00
我们这边已经是 kotlin 。uniapp 算是前期试错的选择。
|
39
murmur 2022-06-27 14:04:21 +08:00
@tianxin12138 css 的属性其实跟 flutter 的布局差不多,那么多乱七八糟的是给 ie 用的,新的直接用 flex 模型开始学就可以
|
43
ciki 2022-06-27 14:42:43 +08:00
@buxudashi #40 Java 和 kotlin 都是 Android 的原生开发语言,最初是 Java ,后来 kotlin 上位成为第一语言,开发 Android 来说,Java 能干的 kotlin 都能干,但是因为 Java 作为第一语言这么多年,留下的影响在那里。很多库啊,API 离不开。所以 Java 是基础,只要做原生开发,就必须学。
|
44
stoluoyu 2022-06-27 14:47:28 +08:00
很现实的问题,如果你不会原生,flutter 、uniapp 出了问题你不一定解决的了。
|
47
WebKit 2022-06-27 14:55:21 +08:00
楼上说用 flutter 的,如果是公司开发,应该是各有一个 iOS 、Android 原生开发的。说 uniapp 的大概值用 uniapp 做过小程序吧。uniapp 生成原生真的很多坑
|
48
honmaple 2022-06-27 15:28:11 +08:00
flutter, 但 flutter 的嵌套布局真的很恶心,一点都不直观,要是有大佬写个工具能内嵌 html/css 或者能把 html/css 转成 flutter 布局就好了
|
49
murmur 2022-06-27 16:19:15 +08:00
@WebKit 说的很明确了,现在是 app 减量年代,你想出一个 app ,除非有内容上的绝对优势,比如周杰伦的新歌,热播电影,当红小说,或者是那种巨优惠的折扣,大概率是没市场的,所以小程序探路是个很好的选择
|
51
equationl 2022-06-27 16:45:53 +08:00
@ciki 这个我认为你恰恰说反了,kotlin 是完全兼容 java 的,不管是你说的遗留库还是遗留 API 。相反,现在谷歌的很多第一方库只支持 kotlin 不支持 java 或者对 java 的支持没有 kotlin 好。
|
52
xinleicoder111 2022-06-27 16:58:59 +08:00
优先考虑 Kotlin ,java 写起来很难受,也可用 flutter 开发,开发双端难免要写一些原生的代码,如果没有原生开发的底子,直接去用 flutter 开发商业项目,会折磨的你想吐
|
54
zapper 2022-06-27 17:40:06 +08:00
我觉得分情况吧,你写个 TODO 、或者页面更新快的活动界面,Uniapp 肯定可以写;如果 JNI ( live555 ,ffmpeg 等)、那就 java ,重原生 API 交互(语音、陀螺仪等),那就 java 或 Kotlin ;想写得爽,Kotlin 。记住软件开发没有银弹
|
55
geeksammao 2022-06-27 18:04:06 +08:00 via iPhone 1
@murmur 小程序探路也看业务类型的。有些业务在小程序生态里就没法尝试,比如社交类,而且小程序买量限制也很大,app 在信息流、短视频、商店渠道能起量的方法对小程序完全不适用。结果就是,做小程序看起来成本低但也基本起不来,有些东西还得拿 app 试。
|
56
leili 2022-06-27 18:49:10 +08:00
为啥没有 RN ?? 它不香么? 它具备完整的生态和社区,纯前端即可。较 uniapp 优势还是蛮大的。
|
57
lzgshsj 2022-06-27 19:53:47 +08:00
我倒是觉得从 html/css 换到嵌套式声明布局没啥,不用看见 css 我真的太谢谢 flutter 了,布局可以说完全可控,没有什么正交问题。
|
58
seakingii 2022-06-27 20:08:24 +08:00
@ShareDuck 以前叫 xamarin ,现在叫 MAUI ,不过还没有完善, 和 flutter 一样的野心(跨平台 ,还可以开发 PC 程序和手机 APP)
|
59
Buges 2022-06-27 20:52:52 +08:00
除此之外还有一个 dotnet MAUI (微软出的 UI 库警告⚠)
总的来说,不需要跨平台就直接原生,没必要关心那些额外的复杂度。 uni 小程序这种 💩就别碰了。 |
60
hst001 2022-06-27 22:03:51 +08:00
如果只是 Android 平台的话,建议选择 Kotlin ,涉及到原生交互的问题会很好解决;
如果有多平台的需求而你只有一个人,那么跨平台是首先要考虑的事情,这个时候可以考虑 Flutter 。 |
61
tanranran 2022-06-27 23:47:15 +08:00 5
马德,楼上各种说方案的,有多少人都写过,都实际写过成熟商业项目过的?
作为一个都写过的人而且都上架过多款 APP 说明一下 1 、如果没写过原生,又想支持小程序,建议直接上 uniapp ,楼上不服的来辩, 2 、如果没写过原生,又想不想支持小程序,建议直接上 React Native 2 、如果写过原生,而又想跨平台,直接 flutter 3 、如果写过原生,又不想跨平台,Android 用 Kotlin 和 Java 都可以,iOS 用 Objective-C 和 Swift 都可以,哪个熟用哪个 ps: 1 、有说 k2 compiler 的,你用 k2 compiler 编译过 android ? 2 、有说原生能力的,你用 uniapp 开发过蓝牙,相机,wifi 、等硬件交互过的吗? 3 、有说 compose 的,你用 compose 写过成熟的商业项目? |
62
James369 2022-06-27 23:56:08 +08:00
唉,flutter 好是好,但是要接受 dart
|
63
b1ncer 2022-06-28 02:11:47 +08:00 via iPhone
我这目前日活 5 万的项目,用的 RN ,写业务非常舒适,但是在对接国内各种平台 sdk 时麻烦很多。
另有一个日活千级的用的 flutter 。业务上效率略输,因为生态不如 rn 。但神奇的是国内厂商的 sdk 支持度,flutter 相比 rn 略好一些。 |
64
FightPig 2022-06-28 02:32:49 +08:00 1
@tanranran 我来说,uni 我们公司用的多,不过我们公司的大多会写原生,所以各种问题还好,我们公司合作的几个公司,好多用 uni 不会原生的,甲方给的 sdk 是个 jar 包,他们直接不知道怎么搞了,好多用 uni 的只会个云打包。你让自定义基座试试,有多少人会?而且官方文档写的就什么一样,要不是我们公司的人会写原生,估计后面直接嗝屁。而且这东西各种莫名的 bug ,最后还是要用原生的来处理。不过如果只是用来写写简单的业务不涉及到原生 sdk 啥的,还是可以一用。另外,写小程序也尽量原生,uni 的好处是插件多,你不会的,随便找个插件几乎都有,但如果有坑,你自身底子不行,那不好意思,你还是重写吧,因为你找遍全网,发现好多人有这个 bug ,但可能都好几年了,官方也没人说怎么解决。
|
65
debuggeeker 2022-06-28 09:09:18 +08:00
@buxudashi kt 和 java 使用 SDK 的 api 一样的,只是语法上有一点点不统一而,java 能做 kt 也能
|
66
debuggeeker 2022-06-28 09:13:51 +08:00
@buxudashi 不要想着只学一种东西,因为很多开源库其他问题,很多解决方案都不一定是你熟悉的语言。不然人家写的代码你都看不懂,就谈不上解决问题了。作为双端开发,其实我会的不只是双端的知识,还有后端,前端,flutter ,java ,kt ,py ,swift ,oc ,mysql ,nginx===。遇到问题干就是了,不要排斥某个语言,吹某个语言,他们都是你的工具罢了。我们目的是解决问题。
|
67
coolmint 2022-06-28 09:21:25 +08:00 via iPhone
只做过海外项目,不了解小程序,前公司做 Android ,用 Kotlin 和一部分 Compose 。现公司单兵 Android + iOS 。
推荐 flutter ,确实是一套代码一把梭了,很方便。 |
68
waltcow 2022-06-28 09:41:51 +08:00
KMP?
|
69
tanranran 2022-06-28 09:49:23 +08:00
@FightPig #64 技术选型是多方面考虑和业务场景的,任何技术都有技术曲线,
1 、答:而是在好多用 uni 不会原生的 [前期 uni ,后期需要原生那么,就得原生上,这点你换任何跨平台的框架都得遇到这个问题] 2 、答:uni 的好处是插件多,你不会的,随便找个插件几乎都有 [随便找个插件都有问题?这个怪 uni ?] 3 、答:但如果有坑,你自身底子不行 [底子不行,换任何框架都不行] 我们得目的是快速解决问题,快速迭代 |
70
fiypig 2022-06-28 09:51:24 +08:00
现在很多 sdk 都支持 fluter , 但不一定支持 uniapp ,很恶心的, uniapp 如果是简单基础开发还好 ,如果功能多了,真的去掉
|
71
FightPig 2022-06-28 09:57:11 +08:00
@tanranran 2 、我感觉你没看清楚,我说那是 uni 的好处,3 、uni 的坑你要会前端 和原生两种,不是所有人都会这个,有时候原生更方便。uni 好处是快速出原型,但真不适合写 app 来用来正式商用上,当然了,可能你把 uni 吃的透透的,那我们比不了。
|
72
iXInbo 2022-06-28 10:20:10 +08:00
其实用什么,看公司而不是群友说的;
如果你是刚入门,准备做安卓;你要做的第一步就是看你当地的招聘 看看要求,如果 kotlin 多,就学 kotlin ;如果 flutter 多学 flutter ; java 多学 java (学这个总没错) 因为你要靠这个吃饭的找工作的 况且都会也没坏处,程序员就是不断的学学学。。。 但是如果你只是学着自己玩自己搞,那就试试新的,flutter 、kotlin ,甚至 RN 都可以。就如你标题写在,喜欢什么学什么。 |
73
superchijinpeng 2022-06-28 11:12:02 +08:00
kt
|
74
Vaspike 2022-06-28 13:12:09 +08:00
kotlin yes! Jetpack Compose yes!
|
75
zoharSoul 2022-06-28 13:22:09 +08:00
首先排除 uniapp
其次 kotlin/java 还是 flutter 都 ok |
76
huobazi 2022-06-28 16:31:08 +08:00
flutter 大法好!
|
77
chrisia 2022-06-28 16:40:19 +08:00
公司项目我用的 Jetpack Compose ,有一些坑,最大的问题是第三方库都是基于 View ,有时候调用 View 会有 bug 。建议 xml + compose ,在 view 视图中嵌套 compose ,应该是最佳方案。以后趋势的话肯定是 Jetpack Compose 了。
|
78
chrisia 2022-06-28 16:41:25 +08:00
我只能用两个字来形容 Jetpack Compose ,“优雅”
|
81
HAYWAEL 2022-06-28 17:55:14 +08:00
我最近刚开发了一个 APP 。不知道怎么想的用的 Taro 。 其实就是 RN ,一路踩坑过去的
|
82
buxudashi OP @HAYWAEL 兄弟你怎么想的?要学也要学原生啊。java 多好。不过我不太喜欢 java ,所以才想着选个别的。
|
83
zerofancy 2022-06-28 18:40:23 +08:00
@buxudashi 原生开发还是离不开 java 。虽然你自己写的代码可以完全用 Kotlin ,但总需要 debug ,研究系统组件源码,而安卓的 framework 目前整个都是 java 。
|
84
neutrino 2022-06-28 18:42:36 +08:00 via Android
uniapp 的 IDE 很不错
|
85
zerofancy 2022-06-28 18:43:33 +08:00
有朋友说的 Compose ,只能说,目前还是不太敢用。首先 minSdk 要求 21 ,有低版本兼容的就不行。其次自己折腾时确实遇到一些 bug ,比如 MIUI 上启动白屏,只有点一下才触发重组。去年就有人向小米反馈,但至今没有解决。
|
86
xiaoriri666 2022-06-28 20:05:56 +08:00
uniapp
|
87
seliote 2022-06-28 21:45:06 +08:00 1
毫无疑问 Flutter ,已经上线了几个应用,涉及到的一些特殊需求例如音视频通话或者其他的,Flutter 不要太方便,而且同时支持 Web Win Mac Linux ,有什么理由不用
|
88
exploreexe 2022-06-29 00:30:04 +08:00 1
讲个笑话:开发原生 APP 用 uniapp ,哈哈哈
没用 uniapp 开发过原生的可以试一下,按个酸爽,谁用谁知道。遇到问题,只能翻官方论坛,几年前的问题至今没解决,嗯,uniapp👍🏻👍🏻👍🏻 |
89
keymao 2022-06-29 09:33:07 +08:00
dcloud 目前纯粹是个无情的广告推广机器了。uniapp 目前真的不太推荐使用, 如果实在没时间学原生,推荐先用 react native 搞一下,成熟商用项目多,资料多,出现问题能找到方案。
flutter 目前是不推荐用的,虽然 dart 可能不是很难,但是要花时间去了解的。 最后的最后才是原生, 原生的话 ui 没要求可以考虑 ,有要求的话就很难受了。 |
90
xz410236056 2022-06-29 10:08:11 +08:00
@buxudashi #2 flutter 只有不做这行的人再吹。。只有 UI 层能共用代码,而且代价是一套风格,你要符合各个平台的风格你要写两套 UI ,底层功能需要具体平台以插件形式提供。反正我不喜欢
|
91
xz410236056 2022-06-29 10:10:38 +08:00
@seakingii #31 xamarin 还有人用吗
|
92
xz410236056 2022-06-29 10:13:00 +08:00
@seliote #87 丑。在 iOS/mac 平台用 Material widgets 风格那 app 还能看吗。要用 Cupertino 你就得写两套 UI
|
93
lisongeee 2022-06-29 10:34:49 +08:00 1
@zerofancy #85
那个问题需要用协程延迟渲染解决,lifescope.lauch{dealy(50);setContent{}} 不过 miui 确实在某些地方垃圾,比如无线调试,我在下拉通知栏里长按无线调试的图标,之前是能够直接跳转无线调试的界面,现在直接闪退了,还有无线调试配对的设备,那个实际上是存在有效时间的,过了时间配对设备就被自动删除了,我不知道这是 android12 的问题还是 miui 的问题 |
94
hb1988 2022-06-29 10:38:29 +08:00
我再推荐一个 ionic
|
95
seakingii 2022-06-29 11:50:51 +08:00
@xz410236056 国内基本没有,国外还有一些.MAUI 是 xamarin 将来的替代品,如果 MAUI 做得够好,应该会占有一小点市场.
|
97
yuhuazhu 2022-06-30 14:39:05 +08:00 1
java+kotlin ,两个都要
java 当作饭,kotlin 当作菜,光吃饭饿不死,有菜会更香 |
98
HAYWAEL 2022-06-30 14:43:27 +08:00
@buxudashi 因为我本来就是前端。这些哪个顺手就拿起来用了。 本来在我这就三个选项。uniApp RN flutter 。uni 用过,上线过应用,感觉一般,不喜欢 。Flutter 之前封装 webview 没处理好,Dart 写起来挺烦的,后来也不太想接触。RN 没用过 所以这次就试一试
|
100
seliote 2022-07-05 22:11:32 +08:00
@xz410236056 哈哈哈哈,用过的表示真香,人和人不一样吧,问题要对比来看
|