Golang Go语言中如何在 Android 上使用写的网络库
Golang Go语言中如何在 Android 上使用写的网络库
在网上查到的方案:用 gomobile 吧 golang 代码编译生成 aar 包,然后在 Android 上使用。
还有人说,上面的方案出错了之后没法调试,Android 直接用 Java 写 socket 连接(毕竟 golang 没有 NIO )。
请教一下
要调用 api,这和有没有优势没关系
这种方法效率如何,是不是不方便用 log ?
就是玩儿,正规用还是不建议,log 好像没啥问题.我用的是 IOS 不是安卓
完全没看懂你的需求?
需求就是怎么在 Android 上连接 go 写的服务端,因为人家有封装好了的 go 前端 sdk,所以想直接用。自己写 socket 连接还要处理协议很麻烦
不就是 http 的那些协议吗?有你链接编译的时间,原生都写完了
当然不是 http 了
你自己在服务端再封装一次, 前端直接用 http 就好了
很简单。安卓上用 java 写。
gomobile
如果没有什么特殊需求,不建议嵌 Go 进去,主要是你可能并不熟悉,出问题根本不会怎么解决
如果你比较熟悉 Go,那就用 gomobile 方案就行了
感觉像是 QUIC
参考 golang.org/x/mobile 的 example
生成 c 的接口用 jni 调用?反正调试是别想了。只能靠日志
。。。现在应该没人写 Android 用调试的吧?都是 printStackTrace 吧?调试的话那么多调用层,调到下辈子去了都
写–编译成静态链接库–用
生成静态库和 gomobile 都用过,确实不是很方便,报错和崩溃都不好查,我是在 iOS/macOS 上使用的,玩玩可以,生产还是算了吧。
rust 可能稳一点?我之前也想这么干来着 最终还是放弃了
使用 gomobile 除了内存稍微占用大一点,简单方便。比你写 c++或 c 强。不过真的要求高,c 反而也不错
在Android上使用Go语言编写的网络库,通常需要结合一些工具和框架来实现跨平台调用。以下是一个基本的实现思路:
-
编写Go网络库:首先,在Go中编写你的网络库。确保这个库可以在独立的Go应用程序中正常运行,并包含必要的网络功能,如TCP/UDP套接字通信、HTTP请求处理等。
-
编译为共享库:使用Go的跨编译功能,将你的网络库编译为适用于Android平台的共享库(如
.so
文件)。这通常需要使用Go的CGO
功能,并配置适当的编译参数来指定目标平台和架构。 -
在Android项目中集成:在你的Android项目中,创建一个JNI(Java Native Interface)接口来调用Go共享库中的函数。这通常涉及编写一些Java代码来加载共享库,并声明本地方法。
-
实现JNI调用:在Java代码中,使用
System.loadLibrary
来加载Go共享库,并通过JNI接口调用Go库中实现的网络功能。这可能需要处理一些数据类型转换和内存管理问题。 -
测试和优化:在Android设备上测试你的应用程序,确保网络库能够正常工作。根据需要,对性能进行优化,并解决可能出现的兼容性问题。
需要注意的是,由于Android平台的限制和Go语言的特性,这种跨平台调用可能会涉及一些复杂的技术细节。因此,在实际开发中,建议参考相关的官方文档和社区资源,以获得更详细和具体的指导。