V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cocoZombie
V2EX  ›  移动开发

关于 hybrid APP 的技术选型问题

  •  
  •   cocoZombie · 2022-04-08 15:31:51 +08:00 · 1372 次点击
    这是一个创建于 720 天前的主题,其中的信息可能已经有所发展或是发生改变。

    兄弟萌,我这边有个问题想问一下熟悉 h5 和 native 开发安卓应用的大佬。

    1.具体情况如下 我们开发、生产、出售自己的安卓设备,这些设备在出厂的时候就预装了一些 APP ,这些应用拥有一些相同的功能,并且是使用 h5 来开发的安卓 APP 。APP 在使用过程中会用到蓝牙、摄像机、本地存储等安卓原生功能。

    2.关于技术选型 我自己查了 cordova ,uniapp ,react-native ,flutter 。

    3.担心可能出现的问题 我查阅了一下资料,发现 uniapp 可能是最合适的,但是担心使用过程中可能会出现一些无法预料的问题。比如没有足够多的第三方库,使得开发进度很慢

    4.求助 想问一下使用过类似这种“跨平台解决方案”的朋友,哪种方案比较适合我们,或者有没有别的更合适的解决方案?这些方案有什么优缺点?

    14 条回复    2023-09-14 10:40:56 +08:00
    chenqi777
        1
    chenqi777  
       2022-04-08 15:39:31 +08:00
    react-native 或 flutter, 但是蓝牙、拍照、本地存储这些功能可能会遇到一些问题, 或者现有库无法满足需求,. 纯前端开发应该搞不定, 需要原生开发经验
    lichdkimba
        2
    lichdkimba  
       2022-04-08 15:41:09 +08:00
    cordova 搞个简单的还行,复杂的太折磨了
    retrocode
        3
    retrocode  
       2022-04-08 15:41:44 +08:00
    首先排除 cordova, 这玩意该埋进土里了.

    如果只是做安卓的话, rn 和 flutter 应该是被优先考虑的, 毕竟插件好找

    uni-app 的话,可能后面定制化会遇到问题, 他的 api 是为多端兼容准备的,很克制, 后面如果要高度定制某个功能,比如蓝牙他们的 api 不满足需求, 还是需要原生介入自行开发插件, 不过也不难, 用 uni-app 就不要指望第三方了, 尤其这种本地功能

    就看你们对原生能力的依赖程度了, 可以先对着原型和 dcloud 官方的 api 看下是否合你们需求,毕竟 uniapp 出活快
    chjieza
        4
    chjieza  
       2022-04-08 15:44:38 +08:00
    4 年前就在用 cordova 确实该埋了,使用所有原生的功能都需要先在外壳层由移动端开发人员先暴露。同意楼上,要看你们对原生功能的依赖程度
    cocoZombie
        5
    cocoZombie  
    OP
       2022-04-08 15:45:14 +08:00
    @retrocode 非常感谢,我先去看一下 uniapp 的 api ,然后再看 rn 和 flutter 。
    murmur
        6
    murmur  
       2022-04-08 15:59:55 +08:00   ❤️ 1
    cordova 暴露原生也没那么麻烦,简单的插件大家都有,复杂的都得自己开发,问题是 cordova 坑是最小的,他的坑和 web 浏览器差不多

    至于 rn 、flutter ,本身就带来新问题
    murmur
        7
    murmur  
       2022-04-08 16:02:21 +08:00
    摄像机这部分肯定是 native 了,还不如全 native 开发,你什么桥接到外面一个视频流都出问题
    meteor957
        8
    meteor957  
       2022-04-08 16:03:21 +08:00
    rn
    triptipstop
        9
    triptipstop  
       2022-04-08 17:03:43 +08:00
    题外话,为什么 apicloud 没搞赢 dcloud 。
    kytrun
        10
    kytrun  
       2022-04-08 17:41:14 +08:00
    murmur
        11
    murmur  
       2022-04-08 17:55:06 +08:00
    @kytrun h5plus 也停更了,现在只更 uniapp
    kop1989smurf
        12
    kop1989smurf  
       2022-04-08 17:57:20 +08:00
    正常开发 h5 ,然后 webview 套壳。
    app 和 js 通讯不管是哪方发起,都有标准 api 。
    constance
        13
    constance  
       2022-04-14 14:58:26 +08:00
    用 cordova 的话,安卓端可以整一个 crosswalk 进去,webview 的兼容性问题应该就少了。

    https://github.com/ks32/CrosswalkNative
    cocoZombie
        14
    cocoZombie  
    OP
       196 天前   ❤️ 2
    感谢大家的帮助,我们最后选择了 uniapp+自定义安卓基座的方式。我并不直接负责该项目,我只是做前期调研。
    经过一年的使用,将结论写下来,让更多的人在遇到相似的问题时有所参考。
    # 需求如下:
    1. 跨平台
    2. 会涉及硬件(蓝牙)调用
    3. 业务逻辑较为复杂

    结论:
    # 无法应对如此复杂的场景。
    首先是硬件调用,我们需要连接蓝牙外设,uniapp 的蓝牙 API 非常不好用。
    蓝牙状态的回调会重复进行,搜寻广播信息会失败,断开后无法重连等问题。
    虽然有些问题不致命,但是这会让开发者对框架产生不信任的感觉,起码我们在开发中经常产生“这框架是不是有问题?”、“卧槽蓝牙掉了?咋肥四啊?硬件组你们固件更新了啥?”,诸如此类的浪费时间的行为。
    ——————我是分割线——————
    在进行了大半年的 uniapp+原始基座开发后,我们将蓝牙的连接全部放到了自定义安卓基座上面,即调用硬件的代码交由原生安卓编写,uniapp 端负责业务逻辑的实现。
    目前情况就是这样,在此向所有回复的朋友道一声感谢,也向未来遇到技术选型的朋友建议,尽量选择原生框架进行开发,或者跨平台框架选择中,尽量选择可以加入原生代码的框架。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   957 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:41 · PVG 04:41 · LAX 13:41 · JFK 16:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.