老项目, Android Java 、iOS OC,想封装一个前端中的后端,用 Rust 还是 go? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SilentOrFight
V2EX    移动开发

老项目, Android Java 、iOS OC,想封装一个前端中的后端,用 Rust 还是 go?

  •  
  •   SilentOrFight 2024-07-03 14:35:25 +08:00 1862 次点击
    这是一个创建于 511 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前提: 有一个项目,Android 客户端使用 Java 开发,iOS 客户端使用 OC 开发,目前这个项目想打包成系统提供给多个不同客户使用,同时根据客户需求定制开发一些个性化功能,由我们来维护。API 层面对接后端系统基本一致,但是 UI 层面根据客户需求可能有所不同。 目前我的想法是:客户端分离成 UI 层 + API 数据层,API 数据层可以封装成一个库,不管维护多少个客户、多少套系统都可以统一维护,减少维护成本。 有考虑过使用 Rust 、Go 等开发成 so 库,可以同时给到 Android 、iOS 两端使用,有没有人有过类似经验可以分享? Rust 好些还是 Go 好些?

    4 条回复    2024-07-03 16:38:57 +08:00
    yanheR
        1
    yanheR  
       2024-07-03 16:29:32 +08:00
    感觉 c++比较多,或者 Kotlin Multiplatform?
    bruce0
        2
    bruce0  
       2024-07-03 16:31:40 +08:00
    之前看过高德分享的一篇文章, 他们好像用 C++写的底层公用库, 然后在不同的平台编译成.so, 然后让上层调用
    SilentOrFight
        3
    SilentOrFight  
    OP
       2024-07-03 16:36:29 +08:00
    @yanheR #1 确实是 C++多一些,但是 C++要求也高一些,所以想找个好上手的语言。
    KMM 的问题是 java 老项目兼容性可能不太好,我已经调研尝试过了,用了 kmm+ktor 请求库,java 调用协程的一些转化类又需要 Android 7.0 以上,目前项目是 Android 5.0 打底。
    KMM 很适合用在 kotlin 、swift 的新项目上去做数据层的跨平台库。
    SilentOrFight
        4
    SilentOrFight  
    OP
       2024-07-03 16:38:57 +08:00
    @bruce0 #2 目前也是考虑 rust 、go 编译成 so 库,性能强,维护一个 Api 库也简单些,也正在看 goMobile ,可以直接编译成 Android AAR 、iOS framework 。
    goMobile 相当于帮你多做了一层胶水层对接 so 库。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     902 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 21:13 PVG 05:13 LAX 13:13 JFK 16:13
    Do have faith in what you're doing.
    ubao msn 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