·

Flutter、Tauri、React Native、Android原生的四次开发经历,为何最后我选择了React Native?

Published at 2025-03-21 12:39:24Viewed 167 times
Please reprint with source link

Flutter、Tauri、React Native都是目前移动端流行的跨平台开发框架,并且他们还能胜任全平台开发。React Native是最早开源的跨平台框架,而Flutter紧跟其后,并且Flutter最近几年超越React Native成为当前世界上最流行的跨平台框架。Tauri则是最近几年诞生的新跨平台框架,跟其他框架显著不同的一点是,它允许你使用任何前端框架,即你能够自由使用整个Web生态进行跨平台开发。

Flutter、Tauri、React Native、Android原生我都尝试过,接下来我说一下我分别使用他们的开发经历。

首先,我第一个使用的跨平台框架是Tauri,当时Tauri V2.0已经发布,我看它能够使用Nuxt.js或者Next.js进行开发,觉得蛮不错的。毕竟我有两个网站,一个是Nuxt写的,另一个是Next写的,这样我就只需要在原有代码基础上修改一下就行了。于是很快我就栽跟头了,首先是Nuxt的桌面端应用,我在dev模式下,没有发现任何问题,$fetch请求也能正常发送。结果build以后,发现所有的请求都废了,全是404,将url改为完整url,结果就是跨域问题。

之后我才明白,Tauri其实是一个Rust GUI框架,HTML、CSS、JavaScript都只是用来渲染画面罢了,想要发送HTTP请求还得通过Rust。于是,在Tauri官方文档中,我找到了HTTP请求的插件,最后才解决了这个问题。

这还只是个小问题,最后真正劝退我的还是写移动端的时候。之后我找到了一个Web端的手机端UI库,于是打算从零开始写一个手机端APP。刚开始一切都没问题,开发起来就跟Web端我适配手机端时一样。直到写登录功能时,我才遇到一个新问题。在Web端我们可以直接使用cookie来实现登录功能,而在Tauri似乎并没有cookie这个概念,我得使用OAuth2实现登录功能,并将access tokenrefresh token存放到安全的地方。

而这就是一切问题的起因,我查看了Tauri官方提供的插件,最后找到了两个能用来存储数据的插件——Store和Stronghold,而Stronghold就是专门用于存储敏感数据的。

于是,我直接根据官网的步骤开始使用,结果最后运行的时候rust build报错了,怎么样都修复不了。谷歌上也找不到什么有用的信息,最后我不得已去GitHub提了一下issue,没人答复。于是我只能放弃Tauri,毕竟这么简单的功能都解决不了,谁知道后面有没有更难的。

后来我也知道这是为什么了,就是Stronghold的一个依赖过时了,但没人替换掉,总之这个问题短期内是无法解决的。具体见Stronghold doesn't work

在放弃Tauri后,接着,我使用了React Native来开发。React Native虽然使用的语言是React的,但是开发体验完全不一样。并且我刚开始使用了错误的UI库Tamagui上手(具体见React Native UI库介绍与对比),加上创建项目使用的template不同,总之刚开始用了不多久,我就放弃React Native了,转而尝试安卓原生和Flutter。

说到安卓原生,我的开发时间很短,因为一开始用了没多久就把我劝退了😅。首先是很奇葩的需要将所有的string都写进一个xml文件里,这跟Web开发这么久所形成的习惯格格不入。接着就是布局组件这些,都得在xml文件里写,而函数调用那些就得在kt文件里写。接着就是实现一个ListView想不到也这么麻烦,最后根据网上找的资料,我才勉勉强强实现一个。

最后把我劝退的,是在安卓原生发送HTTP请求,我对Java或者Kotlin本身就不熟悉,结果我发现想要发送一个简单的请求居然如此麻烦,对比React Native直接一个fetch搞定,安卓原生哪怕下了OkHttp也还是那么复杂。总之,最后我觉得按这个情况下去,开发完一个APP得猴年马月。

于是,这时我第一次使用Flutter进行开发,虽然Flutter用的是dart语言,对熟悉JavaScript的Web开发者来说有些反人类设计,但其写法跟Java相似,并且跟安卓原生相比,已经简化很多了,接着还有一点就是它的官方文档十分齐全,还附有视频。

刚开始用Flutter开发也没啥大问题,基本上都克服了。Flutter的状态管理相比于React Native能够使用Zustand还是复杂很多,不过发送HTTP请求还算简单跟fetch有得一比,比安卓原生简单不知道多少倍。而Authentication的实现比React native navigation的实现过程复杂一些,但最后也是顺利实现。目前看来,我应该可以使用Flutter一直开发下去。最后是什么劝退我使用Flutter呢?答案很简单,因为我无法使用Android emulator进行测试。

前面我使用flutter都是直接用浏览器来测试的,也就是说我测试的是Web端,而Web端想要实现跨域很麻烦,反正我一直实现不了。毕竟我要开发的只是手机端,于是我直接打开安卓版,结果要么是报错,要么好不容易报错没了,结果Android emulator崩了。最后我花了不少时间,都解决不了Android emulator崩溃的问题,GitHub上也有不少人遇到这个问题,于是我只好放弃Flutter。

最后我重新使用React Native进行开发,并且弃用Tamagui,改用React native paper以后,基本上也没遇到什么大问题。一路顺利推进下去,而偶尔也会遇到一些问题,需要花很多时间来解决。就这样前前后后花了三个月,弦圈APP终于在3月1号开发完成。

0 人喜欢

Comments

There is no comment, let's add the first one.

弦圈热门内容

一文读懂量子计算:现已进入“实用阶段”,“量子时代”即将到来

划重点:量子计算首次出现于20世纪80年代初,主要依靠量子力学来解决复杂的、以前不太可能解决的计算问题。IBM于2019年推出了首个IBM Q System One量子计算系统,谷歌也声称其实现了“量子霸权”。尽管量子计算行业的实际同比增长率仅为1%,但该领域初创企业2022年获得的总投资达到23.5亿美元。多数首席信息官和IT领袖认为量子计算并未被过分炒作,他们希望更多地关注这项技术,以了解即将到来的颠覆。十年内具有主动纠错功能的大型量子计算机有望诞生,21世纪也将因此被视为“量子时代”。腾讯科技讯 量子计算是一个新兴的科学领域,由于它在许多行业拥有着巨大的应用潜力,已经引起了许多国家和公司的兴趣。随着更多资源和资金的投入,量子计算技术正以极快的速度向前飞跃。有科学家预言,量子计算机正进入“实用”阶段,十年内具有主动纠错功能的大型量子计算机有望诞生,“量子时代的黎明”即将到来。01 量子计算将成改变人类历史进程的新里程碑量子计算这种变革性技术虽然仍处于起步阶段,但它将成为改变全球技术进程的科学趋势之一。量子计算首次出现于20世纪80年代初,是一种变革性的技术趋势,旨在通过快速有效地解 ...

理论深度高的数学分支(如代数几何,代数拓扑)的新一代一流数学家(如恽之玮)做研究之前一般学了多久呀?

知乎提问:感觉所需的预备知识太多,代数几何和代数数论目前只学了半年多一点。要不是我不够聪明,要不是从事这些方向的研究的预备学习时间过高。Peter Scholze倒16岁就能搞明白不少费马大定理的证明,估计他当时的学习速度比我现在的高好几倍。因此,我在学习这些过程中稍微产生了点消极感。我的回答(已删):扯淡,又在这里造谣,都说过了不要神化Peter Scholze,这是对人家的羞辱。建议看看我之前的回答,里面已经把具体的情况解释得很清楚了。求证:关于菲尔兹奖得主舒尔茨的这个非常特殊的说法,是否属实?Peter Scholze确实16岁的时候看费马大定理的证明了,但他什么都看不懂。在我看来,文献看不懂没关系,最重要的是你看不懂还能继续看下去,发现motivation,这最考验一个人的数学成熟度。数学家在做一个问题的时候,也不是全部知识都懂的,往往都是一边做问题一边学的,需要什么就学什么,这样才是效率最高的。我其实不是很明白为什么总要比多少岁看什么什么,好像这真的能完全反应一个人数学的科研能力、创造能力一样。不同的数学家风格截然不同,数学发展的路径也完全不同,很多都是非线性的。只能说有的大 ...

🇩🇪12.25 科隆

专门奔着科隆大教堂来的,只为一睹比圣家堂还牛逼,盖了600多年才交楼的烂尾楼。在里面休息的时候发现游客突然都不见了,然后发现刚好被困在了弥撒时间,来都来了于是硬着头皮速成天主教徒()管风琴的悠扬,唱诗班的吟唱,加上科隆大教堂内部本身就高大宽敞,现场气氛顿时圣洁了起来,亲身体验过真的非常震撼人心。下面的信徒们也纷纷起立捧着唱词本跟着吟唱,我只能强行跟着站起来aiueo了几句然后划十字阿门(毕生所学)神父念念有词了十来分钟只听懂了哈利路亚(悲)本来还想跟完事去讨块圣体尝尝,不知道为什么这次没有领用圣体的环节。不过也算是达成成就参加了一场天主教法事,还是在大名鼎鼎的科隆大教堂()

怎么学好代数结构?

知乎提问:怎么学好代数结构?我的回答(已删):其实抽象代数确实不太好学,抽象代数顾名思义很抽象。我刚开始学抽象代数的时候,也啃得非常吃力。对此,我建议先坚持学下去,不要停,实在不懂的话先跳过,因为后面的内容说不定能帮助你前面内容的理解。在学习的过程中,多积累一些trivial的例子,不需要太复杂的例子。学习是一个积累的过程,尤其是数学,不应心态过于急躁,对于自己弄不懂的概念要多次仔细揣摩,第一次不行就隔段时间再来一次,多学几遍是没有错的,同时可以尝试看多几本抽象代数的书,看看是不是因为不适合自己口味所以觉得很吃力,找到一本最合自己胃口的书。我个人觉得吧,抽象代数其实也只是非常基础的课程,只要有足够的时间,坚持下去,总能弄懂学会的。加油!原文发布于 2020-08-15 22:492020年8月,应该是高三高考完的那段时间,那个时间也是我数学水平、数学知识飞速提升的时间段,但我也遇到了更多的挑战。大一的时候,我一边想做望月新一的远阿贝尔几何,一边也想做Peter Scholze的算术几何。最后在导师的建议下,我选择了专注做Peter Scholze的算术几何。这个时间段,导师对我来说还是 ...

学习成绩差是一种罪吗?

知乎提问:学习成绩差是一种罪吗?我的回答(已删):能问出这种问题,证明如今社会上很多人被这种唯分数论洗脑的太严重了。学习成绩差怎么了,得罪谁了?学习成绩差本身没啥大不了的,但在zg的教育体制下,却有学习成绩差=坏孩子这种荒谬的事情。就好像在如今社会躺平就会被骂懒惰、不进取,被披上各种不友好的标签。这些都只不过是资本主义社会的产物,因为你懒惰不工作,就不能使资本发生增值,然后资本家就会跳出来给人们洗脑说这样做是不对的。况且学习成绩也跟一个人的实力没必然关系。就数学而言,数学成绩多少跟你数学的研究水平没有半毛钱关系。今年的fields奖得主Hub据说连Gre考试都做不完卷子,反应很慢,学习成绩很差,但这不影响他拿fields奖。本来考试这东西就是在有限的时间内考你教材里的内容,跟创新能力啥没有一点关系。原文发布于 2022-10-21 22:152022年当时应该大二吧,当时的菲尔兹奖得主对我还是挺鼓舞的,可以说是进一步鼓舞了我。之前我一直拿Witten、Bott等半路出家人的事例鼓舞自己,因为我就一普通得不能再普通的学生,在社会上毫无任何优势,唯一的优势或许就是早了解了那么点数学吧。

数学中的「分析」是什么意思?

知乎提问:数学中许多分支名字中带有「分析」二字,如数学分析、实分析、复分析、泛函分析、调和分析、数值分析……牠们的共同点是什么(也就是,「分析」二字是什么意思)?我的回答(原文已删):我感觉分析有研究某个数学对象局部性质的意思。比如说,几何分析就是通过PDE将流形上的局部性质跟整体的拓扑性质联系起来。又比如说,任意形式的波都可以分解成傅立叶级数的形式。这些都是研究局部性质的例子吧。我不是做分析的,这只是我的粗浅理解。。原文发布于 2021-05-24 18:48我看回知乎曾经的回答,我发现2021年前的时间,回答都普遍比较简单。2021年,那时候我应该刚读大一吧,没怎么写过notes,更别提后面写多篇论文了,因此写作能力一般,也懒得长篇大论。

学高数有什么技巧么?

知乎提问:学高数有什么技巧么?我的回答(已删):学高等数学首先不能去想需要什么技巧,因为学高等数学最需要的是你对其的理解,技巧什么的其实是次要的。因为,理解决定了你数学的高度,如果你遇到某些概念理解不了的话,靠技巧是解决不了的。技巧大多是应用于证明上面的。想要对数学有足够深入的理解,在多看书的同时,对于同一样东西需要反复揣摩,反复与其它相关的概念对比,正如Grothendieck所说,通过构建不同数学对象之间的联系来理解数学。当你通过多次反复学习,对数学的理解到了足够高的程度,其实很多东西就变得trivial了,也并不需要太多的技巧。当然技巧还是有一些的,比如对于一些抽象的概念多看一些例子帮助理解;如果遇到某些东西理解不了,想了很久还是没有想到,可以先跳过,过段时间再去想;可以适当做些习题,但不需要做太多重复的题目,etc.原文发布于 2020-08-15 22:31这又是一篇高考后写的回答,甚是感慨。说实话那个时间段写的回答,比我现在写的会更加真实,也更加有效果,因为那个时间段我就是初学阶段。不像我现在早已过了初学阶段,进入Research做数学的阶段,过去的一些做法和细节已经遗忘了 ...

求证:关于菲尔兹奖得主舒尔茨的这个非常特殊的说法,是否属实?

知乎提问:这是我在一篇自媒体文章里看到的关于舒尔茨的学习、科研方式的说法:令人非常吃惊的是,舒尔茨对代数几何产生兴趣竟然是因为看了怀尔斯关于费马大定理的证明。与常人不同的是,舒尔茨几乎不会花时间去学基础知识,比如线性代数,抽象代数这种,他都是直接去看一些论文,当遇到一些不懂的问题时,才会去查阅相关资料,并且他还可以立即学会这些知识,例如他通过研究费马大定理的证明,学会了模形式和椭圆曲线的相关知识。这个说法和我以前理解的学习、科研方式大相径庭,所以我觉得有必要来求证一下是否属实。谢谢!我的回答(已删):你看到的这个中文翻译的采访非常有问题,严重歪曲了Peter Scholze的真实情况。首先这个采访原文的地址是The Oracle of Arithmetic | Quanta Magazine。原文中说到Peter Scholze中学的时候得知Wiles证明了费马大定理,因此去看费马大定理的证明,结果是understood nothing!At 16, Scholze learned that a decade earlier Andrew Wiles had proved the fa ...

读基础数学如何解决经济问题?

知乎提问:读基础数学如何解决经济问题?我的回答(已删):读基础数学还想着赚钱干嘛,想赚钱就别读纯数了。因为如果想赚钱,这难度系数指数级上升,你做纯数可能做得已经很不错了还不如那些IT行业人士赚个月入过万。因此,如果你想靠纯数赚钱,你会觉得很不公平,而且在这浮躁的社会环境里,你怀着这种心态也很难沉得下心来做研究。对于经济问题,正如刘宇航前辈所说,降低需求是最好的办法。原文发布于 2021-05-24 19:06下面引用一下lyh的回答,话说我以前刚开始学数学的时候,知乎还是挺多数学大佬的,这种是真的专业的,不像现在一些数学大v压根没啥数学水平。目前来看,绝大多数数学大v都退乎了,有不少还注销账号了,回答一个也没留下来。lyh算是少数几个还坚持在知乎发言,并且还是持续性更新的,别的哪怕还留在知乎基本也很少发言了。

想做朗兰兹纲领方向,请问如何安排学习进度?

知乎提问:最近对朗兰兹纲领感兴趣,主要是向往大一统的理论,但因为这个领域很庞大,不知道从哪里入手,希望能提供学习顺序,推荐一些书目,越详细越好。另外,想知道哪些院校这方面做的比较好我的回答(已删):我并不是做Langlands programs方向的,但是也对其有所兴趣,因为算术几何跟Langlands programs也有所联系。个人觉得可以从Shimura varieties作为学习的切入点,具体的references可以看Milne的note,直接百度就有了。同时,可以看看欧阳毅的Galois representation,Scholze关于local Langlands的文章,还有Harris和Taylor的The Geometry and Cohomology of Some Simple Shimura Varieties。在看的过程中,看不懂就往下补知识,并且不要忘记了解相应知识的诞生背景,这样做效率是最高的。不过,这些东西都特别难读,反正我也很多看不懂,还是找个该方向的专家带最好。原文编辑于 2022-05-02 22:30原文评论区Milne的course notes ...