gomobile是在安卓中使用golang的工程,既可以全部代码用golang,也可以引用部分golang的代码,但是现在还不成熟,还是试验阶段。

配置gomobile的环境

$ go get golang.org/x/mobile/cmd/gomobile

$ gomobile init # it might take a few minutes

最好将目录$GOPATH/bin加到环境变量,不然运行gomobile命令还需要进入到GOPATH/bin目录下。

如果go get不下来gomobile的话,可以将镜像工程:https://github.com/golang/mobileclone到GOPATH/src/golang.org/x目录下

gomobile init之前需要环境变量中配置了ndk环境,或者通过ndk标签指定ndk目录gomobile init -ndk ~/soft-code/android-ndk-r14b,试过经典的android-ndk-r10e会报一个pyton错误。

运行sample测试环境是否成功

使用android studio导入$GOPATH/src/golang.org/x/mobile/example/bind/android项目。

打开hello模块底下的build.gradle填充里面的目录

plugins {

id "org.golang.mobile.bind" version "0.2.13"

}

gobind {

/* The Go package path; must be under one of the GOPATH elements or

a relative to the current directory (e.g. ../../hello) */

pkg = "golang.org/x/mobile/example/bind/hello"

/* GOPATH where the Go package is; check `go env` */

GOPATH = "~/go"

/* Absolute path to the go binary */

GO = "/usr/local/bin/go"

/* Optionally, set the absolute path to the gomobile binary if the

/* gomobile binary is not located in the GOPATH's bin directory. */

// GOMOBILE = "~/go/src/golang.org/x/mobile"

}

需要修改几个变量,一个是GOPATH这个只需要写自己go env里的gopath就可以。

GO目录,其实就是go的安装目录,在mac下可以通过命令which go找到对应的安装路径。

第三个GOMOBILE就是指gomobile可执行文件的路径,一般是在GOPATH/bin目录下。可以不用设置。

接下来编译运行对应的安卓工程应该就ok了,可以看到他在hello的model里有一个aar文件。

还可以直接通过命令生成aar文件

gomobile bind -target=android golang.org/x/mobile/example/bind/hello

会在当前目录底下生成.aar好source.jar文件

可能遇到的问题

Go编译android,在Android中引用golang编译的aar包相关推荐

  1. Android开发:Android studio开发中引用图片资源(图解)

    在使用Android studio开发程序时,是一定要接触怎么引用图片资源的,但是由于eclipse和Android studio 对于图片文件的引用存在差异,所以致使很多刚接触Android stu ...

  2. Android Studio LibraryModule中引用aar

    一.在正常的Module中引用aar步骤是: 1.在Module的build文件中加入如下: repositories {flatDir {dirs 'libs'} } //看网上说这部分,有说加在a ...

  3. 【Android】ADT中使用NDK编译已有的C++实现的库文件

    为自己的工程建立一个新的Builder 点击Project->Properties->Builders->New,新建立一个Builder.在弹出的对话框上面点击Program,点击 ...

  4. Android 11 Frameworks中引用aar包

    MTK vendor(vendor/mediatek/proprietary/frameworks/base/custom)  想在 framework 使用, 在Android.bp mediate ...

  5. android获取当前主题,Android – 从代码中引用当前应用主题中的属性值

    在XML中,它看起来像这样: style="?header_background" 在程序上,这有点棘手.在你的活动中 private static Theme theme = n ...

  6. C语言编译php环境,vscode中C语言编译环境的配置方法(分享)

    本篇文章给大家介绍一下vscode配置C语言编译环境的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. vscode c语言的环境配置 完整教程请查看该教程:https://bl ...

  7. java哪一个可以编译,下列Java命令中,哪一个可以编译HelloWorld.java文件( )

    下列关于业务动因.持续动因和强度动因的表述中,正确的有(). 一辆车从甲站入至乙站,收费员发现该车为黑名单车,经监控员查询属实"该车于某日从丙站上至丁站下时冲岗,未扔下钱和卡".已 ...

  8. Android录音使用LAME转MP3,附aar包

    直接上使用代码 aar包下载地址 MP3Recorder mp3Recorder = new MP3Recorder(); // mp3文件保存位置 File mp3SaveFile = new Fi ...

  9. Android源码分析(十一)-----Android源码中如何引用aar文件

    一:aar文件如何引用 系统Settings中引用bidehelper-1.1.12.aar 文件为例 源码地址:packages/apps/Settings/Android.mk LOCAL_PAT ...

最新文章

  1. 创维 linux内核,Linux2.6内核在创维特jx2410平台上的移植四
  2. iOS js oc相互调用(JavaScriptCore)(二)
  3. 看门狗(独立看门狗)与窗口看门狗的区别!
  4. 基于Java的RDMA高性能通信库(一):IBM jVerbs库
  5. LiveVideoStackCon讲师热身分享第一季
  6. vue slot的使用
  7. SpringBoot+Redis缓存概念介绍
  8. 如何把数据库从sql变成mysql_(转)如何将数据库从SQL Server迁移到MySQL
  9. 追风猎洞只能喝西北风吗?
  10. HTML5 响应式网页设计之页面美化(三.弹性布局)
  11. day21-2 类的派生
  12. 算法:匹配有效的括号20. Valid Parentheses
  13. java根据中文汉字获取拼音——java
  14. 计算机文档调换顺序,word文档页面顺序调换
  15. Photoshop2019 安装破解
  16. java接口文档怎么写_如何写好API接口文档
  17. 不要以为过了技术面就安全了,HR面也会挂人的!!
  18. 微信域名防封的3种方案
  19. 抖音短视频运营员工内容工作计划表方案
  20. linux 时区设置 美国西部,美国西部太平洋时区是几区?

热门文章

  1. 网页性能优化{雅虎[转载]}
  2. C#实现重新启动计算机
  3. 1 Linux系统性能测试与监测工具汇总
  4. chmod 用法示例
  5. Linux运维常见的硬件问题
  6. Eclipse SonarLint 插件 “SonarLint processing file 。。。 lombok/launch/PatchFixesHider“ 解决办法
  7. 文件夹的最小化时,上面的名字。
  8. android自定义透明圆形,Android progressdialog自定义背景透明的圆形进度条类似于Dialog...
  9. 2022-01-28总结 CSS复合选择器
  10. centos7下安装python3 解决openssl等一系列问题