LoginSignup
35
36

More than 5 years have passed since last update.

私もGo 1.4でAndroidアプリを動かしてみた!(自分用メモ)

Last updated at Posted at 2014-12-28

はじめに

久々にパッケージのサイトを見ると、Dockerfileが用意されたようですが...(^^;)

以下の記事を参考にして、自分でもGo 1.4にmobileパッケージを追加してmobileパッケージ内のAndroidサンプルアプリケーションを動作させてみました。

注意事項

mobileパッケージのサンプルアプリケーションはAndroid 4.4 (API 19)以上が対象のようです。

抜粋:$GOPATH/src/golang.org/x/mobile/example/*/build.xml
<property name="target" value="android-19" />

Nexus 5 + Android 5.0の環境で動作させてエラーになる場合は、以下の記事を参考にして「$GOROOT/src/runtime/malloc.c」ファイルを修正して下さい。

Go on Android Lollipop crashes with ENOMEM - Google グループ

環境情報

今回使用した私の環境情報は以下の通りです。

開発環境

Android Studio

  • Android Studio 1.0.1
    • Java SE Development Kit 7u71

エミュレーター

  • android-sdk_r24.0.2
    • Android 4.4 (API 19)

実機

  • Nexus 7 (2013)
    • Android 4.4.4

セットアップ

Android NDK

Downloads」から該当するファイルを選択してダウンロードします。

今回は「android-ndk-r10d-darwin-x86_64.bin」です。

Installing the SDK」を参考にしてダウンロードしたファイルを展開します。

$ cd $HOME/Downloads
$ chmod a+x android-ndk-r10d-darwin-x86_64.bin
$ ./android-ndk-r10d-darwin-x86_64.bin

展開された「android-ndk-r10d」ディレクトリーを任意の場所に移動します。

$ mv android-ndk-r10d/ $HOME/app/

移動先を環境変数「NDK_ROOT」として設定します。

$ export NDK_ROOT=$HOME/app/android-ndk-r10d

展開されたディレクトリー内の「make-standalone-toolchain.sh」を実行してツールチェーンを作成します。バージョンr10dから「--toolchain=arm-linux-androideabi-4.6」オプションの指定が必要になっているようです。

$ cd $NDK_ROOT/build/tools/
$ ./make-standalone-toolchain.sh --platform=android-9 --install-dir=$NDK_ROOT --toolchain=arm-linux-androideabi-4.6 --ndk-dir=$NDK_ROOT --system=darwin-x86_64

mobileパッケージ

go getコマンドにてmobileパッケージをインストールします。

$ cd $GOPATH/src
$ go get -d golang.org/x/mobile/...

Goのリコンパイル

ARM版Androidに対応させるためにGoをリコンパイルします。

$ cd $GOROOT/src
$ CC_FOR_TARGET=$NDK_ROOT/bin/arm-linux-androideabi-gcc-4.6 GOOS=android GOARCH=arm GOARM=7 ./make.bash

Android端末の準備

実機で動作させる方法とエミュレーターで動作させる方法があります。

実機で動作させる場合

パソコンと実機をUSBケーブルで接続した後、実機にて「設定」-「開発者向けオプション」-「USBデバッグ」を有効にします。

エミュレーターで動作させる場合

SDK Toolsを使う方法とAndroid Studioを使う方法があります。

Stand-alone SDK Toolsの場合

インストール

Other Download Options」-「SDK Tools Only」にて、SDK Toolsをダウンロードします。

今回は「android-sdk_r24.0.2-macosx.zip」です。

ダウンロードしたzipファイルを展開します。

$ cd $HOME/Downloads
$ unzip android-sdk_r24.0.2-macosx.zip

展開した「android-sdk-macosx」ディレクトリーを任意の場所に移動します。

$ mv android-sdk-macosx/ $HOME/app/

移動先を環境変数「ANDROID_HOME」として設定します。

$ export ANDROID_HOME=$HOME/app/android-sdk-macosx/

SDKパッケージの追加

Adding SDK Packages」に従って、SDKパッケージを追加インストールします。

Android SDK Managerを起動します。

$ cd $ANDROID_HOME/tools
$ ./android sdk

一覧にて、以下の4項目のみを選択した状態(右下のボタン名が「Install 4 Packages…」になっている状態)にしてインストールします。

  • Tools
    • Android SDK Platform-tools
    • Android SDK Build-tools (最新バージョン)
  • Android 4.4.2 (API 19)
    • SDK Platform
    • ARM EABI v7a System Image

必要に応じて、以下の2項目をインストールします。

  • Extras
    • Android Support Repository
    • Android Support Library

Android Studioの場合

インストール

Other Download Options」-「All Android Studio Packages」にて、Android Studioをダウンロードします。

今回は「android-studio-ide-1641136.dmg」です。

ダウンロードしたdmgファイルをダブルクリックすると、デスクトップ上に「Android Studio 1.0.1」がマウントされて中身のディレクトリーが表示されます。

表示されたディレクトリー内にて、「Android Studio」アイコンを隣の「Applications」アイコンにドラッグ&ドロップしてインストールします。

環境変数「ANDROID_HOME」を設定します。

$ export ANDROID_HOME=$HOME/Library/Android/sdk

SDKパッケージの追加

Adding SDK Packages」に従って、SDKパッケージを追加インストールします。

Android SDK Managerを起動します。

$ cd $ANDROID_HOME/tools
$ ./android sdk

一覧にて、以下の2項目のみを選択した状態(右下のボタン名が「Install 2 Packages…」になっている状態)にしてインストールします。

  • Android 4.4.2 (API 19)
    • SDK Platform
    • ARM EABI v7a System Image

必要に応じて、以下の1項目をインストールします。

  • Extras
    • Android Support Library

Android AVD

Android Virtual Deviceを起動します。

$ cd $ANDROID_HOME/tools
$ ./android avd

「Create…」ボタンをクリックした後、仮想デバイスを作成します。

表は「Nexus 7」を想定した設定例です。「AVD Name」は各自で好きな名称を入力して下さい。

項目名 設定値
AVD Name Nexus_7
Device Nexus 7 (7.02", 1200 x 1920: xhdpi)
Target Android 4.4.2 - API Level 19
CPU/ABI ARM (armeabi-v7a)
Keybord ■ Hardware keyboard present
Skin No skin
Front Camera Emulated
Back Camera Emulated
Memory Options RAM: 2048 VM Heap: 64
Internal Storage 200 MiB
SD Card ● Size: 200 MiB
Emulation Options □ Snapshot ■ Use Host GPU

一覧から作成した仮想デバイスを選択した後、「Start…」ボタンをクリックして起動します。

サンプルアプリケーションの実行

adbコマンドを使用するため、パスを設定します。

$ export PATH=$PATH:$ANDROID_HOME/platform-tools

example/libhelloアプリケーション

アプリケーションを実行します。

$ cd $GOPATH/src/golang.org/x/mobile/example/libhello
$ ./all.bash 

example/basicアプリケーション

FreeTypeをGoで使うためのパッケージをインストールします。

$ cd $GOPATH/src
$ go get code.google.com/p/freetype-go/freetype

ndk-buildコマンドを使用するため、パスを設定します。

$ export PATH=$PATH:$NDK_ROOT

アプリケーションを実行します。

$ cd $GOPATH/src/golang.org/x/mobile/example/basic
$ ./all.bash

さいごに

Goの活躍場所に「モバイル」という新しいジャンルが加わったのは嬉しいですね!q@w@p

「私もGoでAndroidしよう!」という方は、一度、David Crawshawさんの資料に目を通しておくことをオススメします。


[2015.02.14]

  • make-standalone-toolchain.shの引数を追加
  • golang.org/x/mobile/の指定を修正
35
36
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
36