gomobile导出android/ios sdk注意事项

导出命令

iOS

gomobile bind -o ./output/xxx.xcframework -target ios ./dir/a  ./dir/b

Android

gomobile bind -o ./output/xxx.aar -target android -androidapi 21 ./dir/a  ./dir/b

gomobile如何编译参考该文章:https://www.jianshu.com/p/c950e3118ac3

注意事项

  • 导出的只能是基本数据类型、error、指针、interface
    • 数组不能导出,如[]string
    • 字典不能导出,如map[string]string
    • []byte 可以导出,但是在部分iOS机器上执行会crash,也不要使用
  • 导出的方法不能两个及以上返回参数,会在gomobile时报错
functions and methods must return either zero or one values, and optionally an error
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x0 pc=0x1023ec5f4]
  • 需要导出的方法/实体首字母大写,同时打包命令里包含该文件或其所在目录
  • 导出方法不能与默认方法名冲突,如 xxx.Wait() 会与 android的wait()冲突。
  • 不支持同时集成两个gomobile编译的framework,会报错 duplicate symbol
  • 针对iOS,当函数有多个参数,需要保证interface和implemention的行参名称一致,因为会拼接oc方法
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容