goandroidの説明とGoAndroidでʕ ◔ϖ◔ʔGo~を参考にさせていただき、goandroidの環境をDockerで作ってみました。
Repository
Docker HubでAutomated Buildしてあります。
ksoichiro/goandroid Repository
goandroidビルド時の注意点
躓いたポイントについて、
上記イメージを使う場合は関係ありませんが、
Docker以外でビルドする場合に参考になるかもしれないのでメモしておきます。
普通に手順通りに進めると、patch適用後にgolangをソースコードからビルドする際、以下のようにrelease
のタグを選ぶようになっています。
$ hg clone -u release https://code.google.com/p/go
しかし、2014/6/24現在ではこれではうまくいきませんでした。
patchの適用に失敗します。
patching file src/pkg/runtime/proc.c
Hunk #1 succeeded at 75 with fuzz 2 (offset 7 lines).
Hunk #2 succeeded at 196 with fuzz 2 (offset 24 lines).
release
タグは最新版につけられているようで、変動していくと思われます。
そこで、patchに含まれるチェンジセットの値を参考に過去のコミットを選択してみましたが、今度はbuild.c
で除外ファイルのチェックに引っ掛かり、失敗しました。
go tool dist: /usr/local/src/go/src/cmd/prof should not exist in release build
最終的に、タグgo1.2
を選ぶことでこれを回避し、ビルド成功しました。
使い方
goandroid
に付属のサンプルhello-gl2
をビルドする例です。
$ cd goandroid/hello-gl2
$ docker run -t -i -v `pwd`:/workspace ksoichiro/goandroid ./build.sh
runtime/cgo
hellogl2
上記ではコンテナの/workspace
というパスをローカルのカレントディレクトリに割り当てています。
サンプルではこの配下のandroid
ディレクトリにbuild.xml
が含まれていますので、これをAntでビルドできれば成功です。
$ cd android
$ ant debug