Android
Go
golang

入門: golangでAndroid用のライブラリ(aar)を書く

golangでAndroid用のライブラリ(aar)を書く

golangでAndroid用のライブラリ(aar)が作れるのですが、公式サイト( https://github.com/golang/go/wiki/Mobile )じゃいまいちわからなかったのでざっくりとまとめます。

gomobileは現時点でexperimental(実験的)です。自己責任で手を出しましょう。

やった環境

Ubuntu 16.04 Server
ほかは知らない。大体一緒だと思う。

必要なもの

  • Android SDK
  • Android NDK
  • golang 1.7以上

これらのインストール方法がわからない人はこの先を見ても分からないと思います。あなたには他に知らなければならないことがあるはずです。

ざっくりとしたやり方(本編)

環境変数はこれくらい

GOROOT=/path/to/goroot
GOPATH=~/go
PATH=$PATH:~/go/bin
ANDROID_HOME=~/android-sdk-linux

まず、gomobileをインストールしましょう。

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

gomobileの初期化をします。私の環境ではここが公式サイトと違うところでした。-ndkでNDKへのパスを指定しないとダメだった。

gomobile init -ndk /path/to/android/ndk

あとは適当にgolangでライブラリを作って、ビルドするだけ。

  • $GOPATH/src/github.com/foo/libhello/hello.go
package hello

func HelloWorld() string {
  return "Hello World"
}

ポイントはパッケージ名。mainパッケージではダメです。
複数ファイルを作ってもいいけど、package名は同じにしないとダメです。

ライブラリを書いたらビルドしましょう。

gomobile bind -target android

これでhello.aarが生成されました。あとは適当にandroid側でつかうと良いでしょう。

使うときはこんな感じになるっぽいよ。

import hello.hello;

class Foo {
    void Bar() {
        String text = hello.helloWorld();
    }
}

hello.helloはせめてlibhello.helloであってほしいと思うのは私だけじゃないと信じたい。