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
であってほしいと思うのは私だけじゃないと信じたい。