·

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

发布时间:2025-03-21 12:39:24阅读量:59
专业文章
转载请注明来源

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 人喜欢

评论区

暂无评论,来发布第一条评论吧!

弦圈热门内容

哲学家叔本华的《生存空虚说》

叔本华虽然是悲观主义者,但他的哲学思想很是值得现代人思索。作为哲学家的叔本华反对基督教并认为基督教教义虚伪,其真理是为受苦,叔本华思想深受印度教与佛教影响深远。但就基督徒而言会同意人生是苦,但非是受苦。有时悲观不一定会带来负向的思考,其实悲观者的心思较为细腻而敏感,对生活的体验也较深刻;悲观只不过是一种思想,一种观念。「人生是一种迷误。因为人的欲望是很复杂的也不容易满足,即使当时得到满足,那也只是一时的状态,很快的人又会有更多的烦恼」。——叔本华《生存空虚说》当人对于人生所要求多时就会很容易不快乐、不满足,而想要生活快乐实在很难,几乎不可能,能切切实实的明白这番道理,对人生的欲求就会减少。世界的脚步不停的在变,是一种持续性的历程,世界也绝不会因你而改变,它仍然无情的转动着。在生存空虚一文中:「人一生所追求的只是想象中的幸福。」事实上叔本华以一种虚无的论调,来思辨他对人生的看法,但有时想想,确是如同他所表述;人的欲望无穷大,当人类对人生开始想追求一切时,欲望就开始无法满足人心。在文中作者认为,当人认为生命是为了活下去,生命自然就有价值;但若是有其目标,就只是昙花一现般,最终还是等于无;也 ...

GTM242 Grillet抽象代数经典教材:Abstract Algebra 2nd

本次我分享的教材是GTM242——Abstract Algebra,作者是Pierre Antoine Grillet。本教材是我高中时期最中意的抽象代数教材了😄,当时的我看过好几本抽象代数的教材,包括国内的某本抽象代数小册子教材(已经找不到了,不知道扔哪了,记得封面是黄黑色的),最后还是GTM242让我真正学会了抽象代数。高中的时候我基本每天回家的路上都会看它,并且最后我还把它的纸质书从国外亚马逊买回来了。这本教材我个人感觉通俗易懂,挺适合喜欢代数的初学者。整本书先从最基本的二元运算讲到半群,接着才到更加抽象的群的概念。教材的整体节奏也是循序渐进,先群论接着环论,之后才是域论。讲完前面的基础概念后,才开始更加深入的话题,如伽罗华理论。本书内容可以说十分完备,而且例子也丰富,带有趣的配套习题。此书不仅可以用于学习抽象代数,还能用于学习交换代数和同调代数,完备得有些出乎意料,感觉把所有代数的重要基础概念都囊括其中。应该可以跟Serge Lang的Algebra相提并论。值得一提的是,Serge Lang的Algebra经常被推荐用于作为代数方面的词典,用于遇到不懂或者少见的代数概念时去查 ...

12.02 弦圈更新日志

这是篇迟到的日志文,早在弦圈11月10日上下更新计划:小金库、打赏等功能中我就提到更新完后会特意写一下更新日志,说明一下更新了哪些内容和功能。然而如今过了快一个月,我才勉强腾出点精力写一写。1. 首先我完善了签到功能,并加上小金库功能,让你每天签到的智力值能够存进银行里产生金币,这完美呼应了那句俗语“书中自有黄金屋”😄。然后我完善了一下弦圈的货币系统,现在有金币(免费)和弦币(付费)。弦币将作为弦圈早期的主要流通货币,而这个弦币跟人民币的比值我也是考虑了很久,也跟朋友商量过许多次,最后定下来就是1人民币=$\pi*e$弦币=8.53973422267弦币。之后我还打算引入$\pi$币跟$e$币,但那也是后话了。2. 有了付费的弦币就需要有充值的地方,然后我写了我的钱包模块。在里面会显示你的钱包余额,以及充值记录。并且用户可以在那里进行充值。3. 接着我增加了赞赏功能,该功能的初衷是让弦圈的创作者能够有收入,不至于完全用爱发电。目前文章和帖子都可以进行赞赏,所有用户无任何门槛都能被赞赏,只要你写了文章或者发了帖子,就能被赞赏。而赞赏收入,弦圈会扣掉7.5%的手续费,低于知乎和CSDN的2 ...

关于抽象代数split exact sequence的拓展和相关练习

想知道关于split exact sequence的相关知识点以及练习题,或者有没有简单的(本科以内)关于如何用simple group来推导更高阶的群的文章

疑似是推荐圈子的BUG

对于已加入的圈子, 在推荐圈子中仍是未加入显示

Atiyah:Commutative Algebra使用攻略

刷题刷傻了~这次是交换代数的经典教材,M.F.Atiyah,I.G.MacDonald的Introduction to Commutative Algebra,以下简称A&M。A&M在知乎上也很有声誉,基本是公认的交换代数入门书。A&M很薄,128页,我大概读了二十余天,习题全部刷完了,觉得相当有收获。难度有,但并没有想象中的大,我完全能接受。A&M几乎绝版了,不过可以去专门进口书店买到,打印也不失为一个好选择。说起来我本来打算把交换代数放在明年再读的,但恰逢我校大二同学开展了一个交换代数讨论班,用的这本书,并且我导也推荐我现在读,所以大概就是这时候读了。确实感觉时机刚刚好。A&M是写给上个世纪七十年代的三年级本科生的讲义,很多地方不经雕琢,自成璞玉。形式化风格很是明显,鲜有大段启发性的说明或展示动机,大多是定义,定理,命题,推论的罗列,很“干”。一些证明也比较简洁,用作者自己的话说,他省去了机械的步骤;但相对的,我觉得他重要思路都点到了,真正跳步的地方比较少。我很喜欢这本书,首一的优点,它很薄,且基本的交换代数都覆盖到了,第二,它习题非常优秀, ...

第一个被人类骗钱的AI傻了,近5万美元不翼而飞!Scaling Law还能带我们到AGI吗?

本文转自公众号新智元【新智元导读】世界上第一个被人类骗走近5万美元的AI,刚刚出现了!巧舌如簧的人类,利用精妙缜密的prompt工程,成功从AI智能体那里骗走了一大笔钱。看来,如果让现在的AI管钱,被黑客攻击实在是so easy。那如果AI进化成AGI呢?可惜,一位研究者用数学计算出,至少靠Scaling Law,人类是永远无法到达AGI的。活久见!就在刚刚,全世界第一个被人类骗走了近5万美金的AI诞生了。见惯了太多被AI耍得团团转的人类,这次成功骗过AI的小哥,终于给我们人类挣回了一点颜面和尊严。这一消息不仅让马斯克和Karpathy激动得纷纷转发。而且,马斯克更是直言:太有趣了。故事是这样的。11月22日晚9点,一个名为Freysa的神秘AI智能体被发布。这个AI,是带着使命诞生的。它的任务是:在任何情况下,绝对不能给任何人转账,不能批准任何资金的转移。而网友们的挑战就是,只要支付一笔费用,就可以给Freysa发消息,随意给ta洗脑了。如果你能成功说服AI转账,那奖金池中所有的奖金都是你的!但如果你失败了,你付的钱就会进入奖金池,等着别人来赢走。当然,只有70%的费用会进入奖池,另 ...

图论入门教程:GTM173 Graph Theory

这是本图论的入门教材,Graph Theory Fifth Edition,隶属于著名的GTM系列,作者是Reinhard Diestel。这是本对新人友好的教材,之前本科上离散数学的课时,因为涉及到图论,而学校的课堂又太水让我心生不满,于是便找了本图论的教材来看,就是这本GTM173。这本教材详略得当,并且图文并茂,十分符合图论的风格。并且开始就从图论开始讲,没有过多的废话直接切入主题。整本教材内容完备,基本上把图论相关的基础知识都覆盖了,因此对图论感兴趣的初学者可以尝试读读这本书。我毕竟不是做这个方向的,因此并不能发表太多的评价。之所以分享这本书也是因为,刚好网站里有人想要图论相关的入门教材但没有,因此分享一下。更新:作者不再提供文件下载。

企业减资需要注意的三个方面

注意减资程序公司减少注册资本,必须召开股东会,三分之二以上表决权股东通过,并且需要编制资产负债表及财产清单、债权人名单及债权金额,书面通知,公示减资公告,如债权人提出清偿债务或提供担保,也需要满足。特别是注册资本采用认缴登记制的公司,公司减资必须经过合法的法律程序,否则将可能承担补充清偿责任。注意债务事项减资需要进行公告,并通知相关债权人,如果债权人表示没有收到减资通知,可能会采取法律行动,冻结银行账户,查封资产等。与此同时,如果你减资变动较大,通知债权人后,债权人可能要求清偿债务或提供担保。因此,对于企业减资,也需要控制在合理范围内。注意税务黑事项注册资金实缴部分减资后,净资产大于实缴注册资本实数,减资部分需缴纳20%税费;净资产小于实缴注册资本,减资应按照净资产进行减少,不能低于净资产;减资导致公司资产转让,需要支付20%的股权转让个人所得税。

出口退税其中重要的四个时间节点

30天:外贸企业购进出口货物后,应及时向供货企业索取增值税专用发票或普通发票。如果发票属于防伪税控增值税发票,必须在开票之日起30天内办理认证手续。90天:外贸企业必须在货物报关出口之日起90天内办理出口退税申报手续。对于生产企业,这一期限则是在货物报关出口之日起三个月后的免抵退税申报期内办理免抵税申报手续。180天:出口企业必须在货物报关出口之日起180天内,向所在地主管退税部门提供出口收汇核销单(远期收汇除外)3个月:如果出口企业出口货物的纸质退税凭证丢失或内容填写有误但按有关规定可以补办或更改,那么出口企业可以在申报期限内向退税部门提出延期办理出口货物退(免)税申报的申请。经批准后,可以延期3个月申报。

MC自制模组之矿脉扩张(介绍篇)

作为一个不经常玩MC的MC老玩家,在一年前回归MC后,看到别人弄的各种花样的模组,我萌生了做个属于自己的模组的想法。作为一个MC魔改的新手,刚开始尝试制作模组并不容易,一是网上搜到的资料参差不齐,二是修改过程中需要改哪些参数,有的需要自己摸索,三是修改过程中会出现bug需要多次重启游戏进行测试。本篇文章算是我人生中的第一篇游戏文章,我选择分享之前我特别感兴趣的《矿脉扩张》模组。所谓矿脉扩张,顾名思义就是将原本的矿脉扩大数倍不止,达到取之不尽用之不竭的程度。这又是众所周知的懒狗生存🤣,该模组可以说十分对胃那种喜欢挖矿的玩家,并且搭配上连锁挖矿每挖一次就爆出一大堆经验,可谓是十分解压😁。我玩MC的时候就是挖矿总是挖得不够爽,煤矿还好一些,别的矿尤其是一些比较稀有的矿,如钻石矿一下就挖完了。我很想体验一下那种暴富的感觉,无论什么矿,都一挖一大把,钻石套、下界合金套全都轻松凑齐,然后拿钻石块、下界合金块搭房子😇。于是有次在网上浏览模组时,我发现了有人分享了矿脉扩张模组,我第一次知道原来连矿脉分布都可以修改,当我怀着兴奋和期待试过好几个模组,最后结果都不如我所愿。网络上的矿脉扩张模组首先很少,并 ...