使用go语言进行android ndk开发

1、安装Go

a. 下载地址为:https://golang.org/dl/
b. 这里下载到的版本为go1.5.2.windows-amd64.zip
c. 然后将压缩包里面的go文件夹解压到D盘根目录
d. 配置环境变量GOROOT和GOPATH
e. GOROOT值为D:/go
f. 新建文件夹D:/GOPATH
g. 设置环境变量GOPATH值为D:/GOPATH
h. 在PATH环境变量中增加 ;%GOROOT%/bin;%GOPATH%/bin

2、安装go mobile

依次运行下列命令
go get golang.org/x/mobile/cmd/gomobile
gomobile init
我这里网络有点问题,gomobile下载失败,需要翻墙
可以开shadowsocks翻墙,运行下面这句命令,然后再运行上面两句就成功了
set http_proxy=http://127.0.0.1:1080

3、设置环境变量ANDROID_HOME

设置环境变量ANDROID_HOME,值为android sdk的路径,我这里把android sdk放在了D:\android-sdk-windows,把ANDROID_HOME值设置为D:\android-sdk-windows就好了

4、编写go程序

我随便写了段

package goTest

func Add(x int, y int) int {
   return x + y
}

Go语言里要注意下,函数必须首字母大写的才能导出,否则无法导出

5、编译Go

命令行里,先cd到你.go文件所在目录,然后执行命令
gomobile bind -target=android
运行完后会生成一个.aar文件

6、打开android studio,新建项目,建好后在左边项目面板中选中你的项目右键new,选择Module,选择导入jar/aar,选中第5步里创建的aar文件。

7、在Project Structure中将导入的Module添加到创建的项目Dependencies中。

8、编写Java代码

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView textView = (TextView) findViewById(R.id.tv);
        int result = (int) go.goTest.GoTest.Add(5,6);
        textView.setText(String.valueOf(result));
    }

}

写完后,编译,run,会输出结果11。

标签: none

已有 5 条评论

  1. 天使漫步 天使漫步

    奇怪了,为嘛我老是提示没有找到ndk呢?android_home已经设置到环境变量中。

    1. @天使漫步
      奇怪,我记得我当时好像压根就没装ndk啊

  2. 天使漫步 天使漫步

    编译成aar的时候卡住了,一直说我的路径不正确。

    1. @天使漫步
      命令行里,先cd到你.go文件所在目录,然后执行命令

  3. NDK要单独设置,不是设置成SDK目录
    gomobile init -ndk

评论已关闭