V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
gramyang
V2EX  ›  Go 编程语言

如何在 Android 上使用 golang 写的网络库呢??

  •  
  •   gramyang · 2019-05-27 17:27:15 +08:00 · 4442 次点击
    这是一个创建于 1795 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在网上查到的方案:用 gomobile 吧 golang 代码编译生成 aar 包,然后在 Android 上使用。

    还有人说,上面的方案出错了之后没法调试,Android 直接用 Java 写 socket 连接(毕竟 golang 没有 NIO )。

    请教一下

    21 条回复    2019-05-28 06:35:18 +08:00
    behanga
        1
    behanga  
       2019-05-27 17:51:01 +08:00
    golang 在 android 上有啥优势?
    pmispig
        2
    pmispig  
       2019-05-27 17:53:34 +08:00
    我还以为就我一个人有这种骚操作,我是用 golang 生成了一个 c 的静态链接库.a,用 oc 调用,哈哈
    gramyang
        3
    gramyang  
    OP
       2019-05-27 18:04:55 +08:00
    @behanga 要调用 api,这和有没有优势没关系
    gramyang
        4
    gramyang  
    OP
       2019-05-27 18:05:39 +08:00
    @pmispig 这种方法效率如何,是不是不方便用 log ?
    pmispig
        5
    pmispig  
       2019-05-27 18:07:31 +08:00
    @gramyang 就是玩儿,正规用还是不建议,log 好像没啥问题.我用的是 IOS 不是安卓
    lihongjie0209
        6
    lihongjie0209  
       2019-05-27 18:12:48 +08:00
    完全没看懂你的需求?
    gramyang
        7
    gramyang  
    OP
       2019-05-27 18:18:43 +08:00
    @lihongjie0209 需求就是怎么在 Android 上连接 go 写的服务端,因为人家有封装好了的 go 前端 sdk,所以想直接用。自己写 socket 连接还要处理协议很麻烦
    kuyuzhiqi
        8
    kuyuzhiqi  
       2019-05-27 18:25:01 +08:00
    @gramyang 不就是 http 的那些协议吗?有你链接编译的时间,原生都写完了
    gramyang
        9
    gramyang  
    OP
       2019-05-27 18:28:49 +08:00
    @kuyuzhiqi 当然不是 http 了
    lihongjie0209
        10
    lihongjie0209  
       2019-05-27 18:38:10 +08:00
    @gramyang
    你自己在服务端再封装一次, 前端直接用 http 就好了
    acehow
        11
    acehow  
       2019-05-27 18:40:40 +08:00 via Android
    很简单。安卓上用 java 写。
    hmhm7442
        12
    hmhm7442  
       2019-05-27 18:46:36 +08:00
    gomobile
    janxin
        13
    janxin  
       2019-05-27 18:46:55 +08:00
    如果没有什么特殊需求,不建议嵌 Go 进去,主要是你可能并不熟悉,出问题根本不会怎么解决

    如果你比较熟悉 Go,那就用 gomobile 方案就行了
    hmhm7442
        14
    hmhm7442  
       2019-05-27 18:49:51 +08:00
    感觉像是 QUIC
    funCoder
        15
    funCoder  
       2019-05-27 18:53:50 +08:00
    参考 golang.org/x/mobile 的 example
    cheng6563
        16
    cheng6563  
       2019-05-27 19:07:32 +08:00 via iPhone
    生成 c 的接口用 jni 调用?反正调试是别想了。只能靠日志
    gramyang
        17
    gramyang  
    OP
       2019-05-27 19:17:42 +08:00
    @cheng6563。。。现在应该没人写 Android 用调试的吧?都是 printStackTrace 吧?调试的话那么多调用层,调到下辈子去了都
    Muninn
        18
    Muninn  
       2019-05-27 19:29:16 +08:00
    写--编译成静态链接库--用
    Otho
        19
    Otho  
       2019-05-27 21:46:13 +08:00
    生成静态库和 gomobile 都用过,确实不是很方便,报错和崩溃都不好查,我是在 iOS/macOS 上使用的,玩玩可以,生产还是算了吧。
    blless
        20
    blless  
       2019-05-27 22:29:14 +08:00 via Android
    rust 可能稳一点?我之前也想这么干来着 最终还是放弃了
    zwh2698
        21
    zwh2698  
       2019-05-28 06:35:18 +08:00 via Android
    使用 gomobile 除了内存稍微占用大一点,简单方便。比你写 c++或 c 强。不过真的要求高,c 反而也不错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3250 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 354ms · UTC 13:40 · PVG 21:40 · LAX 06:40 · JFK 09:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.