V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ihgoo
V2EX  ›  程序员

开发 app 技术选型问题,各位见多识广的 V2er 来指点指点我吧

  •  
  •   ihgoo · 2020-12-22 20:36:06 +08:00 · 2767 次点击
    这是一个创建于 1435 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小弟我的 APP 技术栈目前是这样的:

    Android:java 和 kotlin (开发了很久,比较熟练)

    移动端网页:会 Vue (入手不难,开发了一年多,比较熟练)

    Flutter:只是前年体验过一次,开发了个很小的 app 上架了苹果 AppStore

    iOS:oc 和 swift 0 经验

    缘由:

    老板今天把我叫过去说计划准备开发 iOS 的 app 我们公司以前只有 Android 端, 并没有 iOS 端,我在想是去自学下 oc 或者 swift 还是直接上 Flutter 两端统一算了,小弟在前年开发 Flutter 的时候感觉很不成熟,就连 webview 都有坑,上架了 AppStore 后我就没再关注它了。

    前年开发的时候感觉如果不遇到什么坑 Flutter 倒是比较简单,如果遇到坑,就怕是爬不出来啊。

    oc 和 swift 我倒是是完全没接触过。不知道现学的话,能不能 hold 住。

    无论最后到底用啥,估计就只是我自己一人来维护。还有一个比较关注的点是我们目前的 app 对接蓝牙协议比较多,有一些硬件蓝牙设备需要 ble 连接。。。

    真的挺纠结的,拿不准主意了,各位见多识广的 V2er 来指点指点我吧!

    20 条回复    2020-12-24 09:16:31 +08:00
    Bijiabo
        1
    Bijiabo  
       2020-12-22 21:00:30 +08:00
    针对你的需求,OC 必须学。为了避坑,建议直接 OC 或者 OC+Swift 来开发。
    个人维护和团队一群人踩坑共同承担不一样,尽量减少不确定性吧。
    tydl
        2
    tydl  
       2020-12-22 21:06:01 +08:00 via Android
    php 是最好的语言(嚎)
    ihgoo
        3
    ihgoo  
    OP
       2020-12-22 21:19:12 +08:00
    @Bijiabo 其实上 OC 的话,从个人角度来看,我的工作量会加倍,如果用 flutter,可能会省事儿一些呢?

    flutter+OC 呢,大部分功能用 flutter,flutter 实现不了的,就用 OC,这种呢?
    janxin
        4
    janxin  
       2020-12-22 21:23:37 +08:00 via iPhone
    没有原生开发又重度依赖系统特性功能的谨慎入坑 flutter,BLE 在 Android 还有一些问题。如果轻业务服务有依赖 webview 也不是不可以,新版本的 webview 还是更新了很多,比如不再是技术预览版本了。

    原生肯定是最稳的,反正 android 很熟,双端原生很 Ok,而且我看很多 flutter 的 BLE 多多少少都有问题也是醉了
    stardust21
        5
    stardust21  
       2020-12-22 21:31:05 +08:00
    flutter 解决 UI 层的复用比较方便,你这还要开发 BLE,不如直接用原生。
    可以尝试下 kotlin native,编译成两端原生代码
    ginjedoad
        6
    ginjedoad  
       2020-12-22 21:41:54 +08:00
    兄弟,前端就用 flutter, 后端用 rust , 就是一阵猛撸就是了。坑不坑的,陷进去再说。
    ihgoo
        7
    ihgoo  
    OP
       2020-12-22 21:43:55 +08:00
    @stardust21 kotlin native 还真是第一次听说。。。去 google 了下,用的人很少哎
    HongJay
        8
    HongJay  
       2020-12-22 21:45:10 +08:00
    flutter 就是 ui 啊兄弟
    ihgoo
        9
    ihgoo  
    OP
       2020-12-22 21:49:24 +08:00
    @stardust21 主要是没接触过原生开发 iOS,有点打怵。心里没底。。。
    janus77
        10
    janus77  
       2020-12-22 21:58:00 +08:00   ❤️ 1
    无论你搞不搞跨端,oc 肯定要学的,因为有些原生功能是跨平台框架没法支持的,比如蓝牙啊 播放器啊 文件选择啊 拍照啊 等等
    然后根据你的项目复杂程度选择跨平台的框架,其实最成熟的还是 RN,我也并不是喜欢 RN,只是很多时候他是经历充分调研以后的最佳选择。
    flutter 你也可以稍微看下,如果你项目不算复杂的话也可以上
    duqing1230123
        11
    duqing1230123  
       2020-12-22 22:24:31 +08:00
    简单页面用 flutter,加快开发效率。
    复杂业务场景页面,如直播等音视频,那就还是原生的体验最好。
    Bijiabo
        12
    Bijiabo  
       2020-12-22 22:25:40 +08:00
    @janus77 @ihgoo 跨端开发我也推荐 RN,至少成熟。
    如果是蓝牙相关的开发比较多的话,OC 你是避不开的,只会 Swift 都不够用,iOS 和硬件通讯相关的接口会比较低层,如果追求效率需要多线程优化甚至用 C 来实现一些基础功能,比如数据转换之类。
    nicevar
        13
    nicevar  
       2020-12-23 04:41:57 +08:00 via Android
    事实就是不管你用 swift 还是 flutter 你都要会 oc,逃不掉的
    jones2000
        14
    jones2000  
       2020-12-23 06:39:30 +08:00
    oc 做壳, 内部 webview, 直接用 vue 做页面
    ihgoo
        15
    ihgoo  
    OP
       2020-12-23 08:19:15 +08:00
    @janus77 我感觉 flutter 可以。。。做不了的地方就用原生
    sometime
        16
    sometime  
       2020-12-23 10:11:24 +08:00
    学过 kotlin 还是推荐 Swift 上手理解快些,Swift 也有 CoreBluetooth 可以用,但大多数 demo 资料都是 OC 的
    treblex
        17
    treblex  
       2020-12-23 10:48:57 +08:00
    flutter + 原生插件 应该就行了吧 ,ps:oc 有点难学,swiftui 还挺舒适的
    a62527776a
        18
    a62527776a  
       2020-12-23 13:59:10 +08:00
    flutter 一把嗦 封装好 channel 就行 业务和 UI 全放 flutter 上
    admin003
        19
    admin003  
       2020-12-23 17:59:02 +08:00
    有蓝牙硬件相关的功能,别用 flutter
    loginbygoogle
        20
    loginbygoogle  
       2020-12-24 09:16:31 +08:00 via iPhone
    明显 flutter 嘛,蓝牙相关的功能,如果找不到合适插件,那只能自己写原生代码,之前在 pub 上看到货一个蓝牙插件,你可以搜一搜看看用不用得上
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3273 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:11 · PVG 20:11 · LAX 04:11 · JFK 07:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.