关于 hybrid APP 的技术选型问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cocoZombie
V2EX    移动开发

关于 hybrid APP 的技术选型问题

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

    兄弟萌,我这边有个问题想问一下熟悉 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 搞个简单的还行,复杂的太折磨了
    cvooc
        3
    cvooc  
       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  
      &nsp;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
       2023-09-14 10:40:56 +08:00   2
    感谢大家的帮助,我们最后选择了 uniapp+自定义安卓基座的方式。我并不直接负责该项目,我只是做前期调研。
    经过一年的使用,将结论写下来,让更多的人在遇到相似的问题时有所参考。
    # 需求如下:
    1. 跨平台
    2. 会涉及硬件(蓝牙)调用
    3. 业务逻辑较为复杂

    结论:
    # 无法应对如此复杂的场景。
    首先是硬件调用,我们需要连接蓝牙外设,uniapp 的蓝牙 API 非常不好用。
    蓝牙状态的回调会重复进行,搜寻广播信息会失败,断开后无法重连等问题。
    虽然有些问题不致命,但是这会让开发者对框架产生不信任的感觉,起码我们在开发中经常产生“这框架是不是有问题?”、“卧槽蓝牙掉了?咋肥四啊?硬件组你们固件更新了啥?”,诸如此类的浪费时间的行为。
    我是分割线
    在进行了大半年的 uniapp+原始基座开发后,我们将蓝牙的连接全部放到了自定义安卓基座上面,即调用硬件的代码交由原生安卓编写,uniapp 端负责业务逻辑的实现。
    目前情况就是这样,在此向所有回复的朋友道一声感谢,也向未来遇到技术选型的朋友建议,尽量选择原生框架进行开发,或者跨平台框架选择中,尽量选择可以加入原生代码的框架。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2477 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 01:47 PVG 09:47 LAX 18:47 JFK 21:47
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86