兄弟萌,我这边有个问题想问一下熟悉 h5 和 native 开发安卓应用的大佬。
1.具体情况如下 我们开发、生产、出售自己的安卓设备,这些设备在出厂的时候就预装了一些 APP ,这些应用拥有一些相同的功能,并且是使用 h5 来开发的安卓 APP 。APP 在使用过程中会用到蓝牙、摄像机、本地存储等安卓原生功能。
2.关于技术选型 我自己查了 cordova ,uniapp ,react-native ,flutter 。
3.担心可能出现的问题 我查阅了一下资料,发现 uniapp 可能是最合适的,但是担心使用过程中可能会出现一些无法预料的问题。比如没有足够多的第三方库,使得开发进度很慢
4.求助 想问一下使用过类似这种“跨平台解决方案”的朋友,哪种方案比较适合我们,或者有没有别的更合适的解决方案?这些方案有什么优缺点?
1
chenqi777 2022-04-08 15:39:31 +08:00
react-native 或 flutter, 但是蓝牙、拍照、本地存储这些功能可能会遇到一些问题, 或者现有库无法满足需求,. 纯前端开发应该搞不定, 需要原生开发经验
|
2
lichdkimba 2022-04-08 15:41:09 +08:00
cordova 搞个简单的还行,复杂的太折磨了
|
3
retrocode 2022-04-08 15:41:44 +08:00
首先排除 cordova, 这玩意该埋进土里了.
如果只是做安卓的话, rn 和 flutter 应该是被优先考虑的, 毕竟插件好找 uni-app 的话,可能后面定制化会遇到问题, 他的 api 是为多端兼容准备的,很克制, 后面如果要高度定制某个功能,比如蓝牙他们的 api 不满足需求, 还是需要原生介入自行开发插件, 不过也不难, 用 uni-app 就不要指望第三方了, 尤其这种本地功能 就看你们对原生能力的依赖程度了, 可以先对着原型和 dcloud 官方的 api 看下是否合你们需求,毕竟 uniapp 出活快 |
4
chjieza 2022-04-08 15:44:38 +08:00
4 年前就在用 cordova 确实该埋了,使用所有原生的功能都需要先在外壳层由移动端开发人员先暴露。同意楼上,要看你们对原生功能的依赖程度
|
5
cocoZombie OP @retrocode 非常感谢,我先去看一下 uniapp 的 api ,然后再看 rn 和 flutter 。
|
6
murmur 2022-04-08 15:59:55 +08:00 1
cordova 暴露原生也没那么麻烦,简单的插件大家都有,复杂的都得自己开发,问题是 cordova 坑是最小的,他的坑和 web 浏览器差不多
至于 rn 、flutter ,本身就带来新问题 |
7
murmur 2022-04-08 16:02:21 +08:00
摄像机这部分肯定是 native 了,还不如全 native 开发,你什么桥接到外面一个视频流都出问题
|
8
meteor957 2022-04-08 16:03:21 +08:00
rn
|
9
triptipstop 2022-04-08 17:03:43 +08:00
题外话,为什么 apicloud 没搞赢 dcloud 。
|
10
kytrun 2022-04-08 17:41:14 +08:00
uni-app + 他们家的 html5plus https://www.html5plus.org/doc/zh_cn/bluetooth.html
|
12
kop1989smurf 2022-04-08 17:57:20 +08:00
正常开发 h5 ,然后 webview 套壳。
app 和 js 通讯不管是哪方发起,都有标准 api 。 |
13
constance 2022-04-14 14:58:26 +08:00
|
14
cocoZombie OP 感谢大家的帮助,我们最后选择了 uniapp+自定义安卓基座的方式。我并不直接负责该项目,我只是做前期调研。
经过一年的使用,将结论写下来,让更多的人在遇到相似的问题时有所参考。 # 需求如下: 1. 跨平台 2. 会涉及硬件(蓝牙)调用 3. 业务逻辑较为复杂 结论: # 无法应对如此复杂的场景。 首先是硬件调用,我们需要连接蓝牙外设,uniapp 的蓝牙 API 非常不好用。 蓝牙状态的回调会重复进行,搜寻广播信息会失败,断开后无法重连等问题。 虽然有些问题不致命,但是这会让开发者对框架产生不信任的感觉,起码我们在开发中经常产生“这框架是不是有问题?”、“卧槽蓝牙掉了?咋肥四啊?硬件组你们固件更新了啥?”,诸如此类的浪费时间的行为。 ——————我是分割线—————— 在进行了大半年的 uniapp+原始基座开发后,我们将蓝牙的连接全部放到了自定义安卓基座上面,即调用硬件的代码交由原生安卓编写,uniapp 端负责业务逻辑的实现。 目前情况就是这样,在此向所有回复的朋友道一声感谢,也向未来遇到技术选型的朋友建议,尽量选择原生框架进行开发,或者跨平台框架选择中,尽量选择可以加入原生代码的框架。 |