こんにちは、山本です。

今回は、タイトル通りGo言語で、Androidアプリを作ろうと思います。

選んだ理由としては、何かAndroidアプリを作りたかったのと、触ったことのない言語を使いたかったことと、前からGo言語には興味があったことでしょうか。

また、go mobileがWindows対応されたのも理由の一つだったりします。

そうそう、タイトルにも書いていますが、私はGo言語を全く触ったことがありません。

環境作成

まず、環境の作成から始めます。

goのインストール

https://golang.org/dl/

Windows版のインストーラがあるのでそれをインストールします。

Goのインストールが終わったら,次はgomobileをインストールします。

作業環境を作成して

mkdir D:\works

作業環境にGOPATHを設定します。

setx /M GOPATH "D:\works"

go mobileのインストール

次に、gomobileをインストールします。

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

D:\works>go get golang.org/x/mobile/cmd/gomobile
go: missing Git command. See https://golang.org/s/gogetcmd
package golang.org/x/mobile/cmd/gomobile: exec: “git”: executable file not found in %PATH%

おお、git使っているんですね。

なので、Windows版のgitをインストールします。
https://git-scm.com/download/win

そして、git.exeのあるディレクトリにPATHを通します。

setx /M PATH "%PATH%;C:\Users\user\AppData\Local\Programs\Git\bin;"

再度、gomobileをインストールします。

インストール後、gomobileを使用できるようにPATHを通しておきます。

setx /M PATH "%PATH%;D:\works\bin;"

次に、gomobileのツール群をインストールします。

gomobile init

あと、サンプルを動かすのにライブラリが足りていないので以下もインストールします。

go get golang.org/x/exp/shiny/
go get golang.org/x/sys/windows

早速、サンプルをWindows上で動作させてみます。

cd src\golang.org\x\mobile\example\basic
go run main.go

D:\works\src\golang.org\x\mobile\example\basic>go run main.go
# golang.org/x/mobile/internal/mobileinit
exec: “gcc”: executable file not found in %PATH%

なるほど、コンパイルするのにgccが必要ということですね。

gcc

Windowsでgccを必要としたことってないので、何を入れたものかと思ったのですが「MinGW」でgccが入るようなのでこれをインストールします。

http://www.mingw.org/download/installer

今回はgccが欲しいだけなので、以下のパッケージをインストールします。

mingw32-base
mingw32-gcc-g++

で実行します。

D:\works\src\golang.org\x\mobile\example\basic>go run main.go
golang.org/x/mobile/internal/mobileinit
cc1.exe: sorry, unimplemented: 64-bit mode not compiled in

64bit modeでコンパイル出来ませんよ~と

さて、どうしたものかと調べたところ64bit環境では64bitのMinGWを入れろとのことのようです。

なので、64bit版をダウンロードして、「Architecture」を「x86_64」にしてインストールします。

https://sourceforge.net/projects/mingw-w64/

そして、またまたPATHを通します。

setx /M PATH "%PATH%;C:\Program Files\mingw-w64\x86_64-5.3.0-posix-seh-rt_v4-rev0\mingw64\bin;"

003

まず、Windowsで動きました

次に、Android用にコンパイルします。

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

gomobileでコンパイルすると

D:\works>ls
basic.apk bin pkg src

basic.apkが出来ています。

これをAndroidへインストールすると

a001

Androidでアプリが動くようになりました。

Android Debug Bridge

毎回、手でAndoroidへアプリを移動させるのは面倒なので、ADBをインストールしてみます。

https://developer.android.com/studio/index.html

インストールすると、SDKマネージャーが立ち上がるので、Android SDK ToolsとGoogle USB Driverをインストールします。

004

そして、何度もやっていますが、またPATHを通します。

setx /M PATH "%PATH%;C:\Users\user\AppData\Local\Android\android-sdk\platform-tools;"

Andoroid側の設定

次にUSBデバッグが出来るように、開発者向けオプションを設定します。

ビルド番号を7回タップします。

a002

開発向けオプションが有効になるので、そこでUSBデバッグを有効にします。

a003

ドライバーの更新

Windowsに戻って、ディバイスマネージャーを見ると、ほかのディバイスにAndroidがあるので、そこから「ドライバーソフトウェアの更新」を選びます。

006

更新画面から「コンピューターを参照してドライバーソフトウェアを検索します」をクリックして、「コンピュータ上のディバイス ドライバーの一覧から選択します」をクリックします。
008

一覧から「全てのディバイスを表示」をクリックして
009

コピー元を、先程インストールしたSDKにあるドライバにします。

%PATH% android-sdk\extras\google\usb_driver
010

ドライバの中から、ADB Interfaceを選択して更新します。
011

更新が終わると、ディバイスマネージャーに追加されます。
012

ドライバの更新が終わったので、PCを再起動します。

ADBを使う

準備が整ったので、ADBを使ってみます。

まずは、ディバイスの確認をします。

C:\Users\user>adb devices
List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
HT35RS905311 device

ADBからディバイス認識するようになりました。

認識するようになったので、PCからAndroidアプリをインストールします。

D:\works>adb install -r basic.apk
4356 KB/s (16799898 bytes in 3.765s)
pkg: /data/local/tmp/basic.apk

以降は、コマンド一つでAndroidにアプリインストール出来るようになりました。

まとめ

最初だけとはいえ、必要なアプリケーションが随分多かった印象です。
また、PATHばっか通してましたね。

あと、記事では簡単に書いていますが、ADBは中々ディバイスを認識せず、結構時間がかかっていたりします。

まあでも、これでようやく準備が整ったので、次回からは簡単なアプリを幾つか作っていこうと思います。
というか、複雑なのはとてもじゃないですが、まだ作れそうにはないので。