go 1.5でgomobile(android)

GoだけでAndroidアプリを作る その1 〜インストール編〜 : KLabGames Tech Blogに刺激を受けてgomobileのサンプルandroidアプリを動かしてみました。

android端末上で実際に動くところを見ると楽しいです。

go 1.5インストール

githubからソースを取得してビルドする。go 1.4が必要です。あるいはDownloadsから1.5のベータ版をダウンロードします。

gomobileインストール

$ go get golang.org/x/mobile/cmd/gomobile
$ gomobile -v init

android ndkなどがダウンロードされます。

ls -l ${GOPATH}/pkg/gomobile
total 8
drwxr-xr-x+  4 unokun  staff   136  8  1 13:10 android-ndk-r10e
drwxr-xr-x+  4 unokun  staff   136  7 31 17:23 dl
drwxr-xr-x+ 57 unokun  staff  1938  8  1 13:11 pkg__
drwxr-xr-x+ 57 unokun  staff  1938  8  1 13:10 pkg_android_arm
-rw-r--r--+  1 unokun  staff    70  8  1 13:11 version

サンプルプログラムの実行(PC)

$ cd $GOPATH/src/golang.org/x/mobile/example/basic/
$ go run main.go

サンプルプログラムの実行(android)

1. アプリをビルドする。

$ gomobile build golang.org/x/mobile/example/basic

ビルドに成功するカレントディレクトリにbasic.apkができる。

2. 端末が接続していることを確認する。

$adb devices

端末が一覧に表示されない場合は、以下の二つの方法を試してみる。

  • adbを再起動する
  • $ adb kill-server
    $ adb start-server
    
  • ケーブルを変える

3. アプリをインストールする

$ adb install basic.apk

4. アプリを実行する(android)

android端末でアプリを実行する。

audio
画像が動き、壁に当たった時に音がでます。
basic
△を指でドラッグできます。
sprite
画像が動く。
network
使い方がよく分かりませんでした。

gomobile修正

最初、gomobile buildでapkを作成できませんでした。 src/golang.org/x/mobile/cmd/gomobile/env.goを修正したところ、apkが作成できるようになりました。

$ gomobile build golang.org/x/mobile/example/basic
gomobile: xcrun --show-sdk-path: exit status 1

修正箇所

91 func envInit() (err error) {
      ...
ここから
122     clang, cflags, err := envClang("iphoneos")
123     if err != nil {
124        return err
125     }
      ...
167        "CGO_ENABLED=1",
168     }
ここまでをコメントアウトする

170   return nil
171 }

おまけ(android端末で画面録画する方法)

Android 4.4 Kitkat以降だと、システムで画面録画をサポートしています。この方法で動画を撮ったのですが、はてなブログ(無料版だけ?)は動画は未サポートでした。

adb shell screenrecord /sdcard/sprite.mp4

参考資料