go.mobileアプリのビルド環境をfreshなubuntu14.04の上につくる
go.mobileアプリのビルド環境はDockerイメージで配布されている。
Windows 7(64bit)でVirtualboxにUbuntuを入れてビルド環境を作った。その手順をメモっておく。
ホストOS上で仮想マシンを作る
ホストOS(Win7)上でhttp://vagrantbox.esからdocker readyなboxを取ってくる。
vagrant box add ubuntu14.04 https://github.com/jose-lpa/packer-ubuntu_14.04/releases/download/v2.0/ubuntu-14.04.box mkdir ubuntu1404 cd ubutu1404 vagrant init ubuntu14.04 vagrant up vagrant ssh
仮想マシン上でGoの実行環境とビルド環境を作る
ここからは仮想マシン(Ubuntu14.04 on virtualbox)。とりあえずやっておく。
sudo apt-get update sudo apt-get upgrade
go.mobile取ってくるときにhg
がないって怒られたのでこのタイミングでやるのがよい。
sudo apt-get install mercurial
現時点ではapt-get install golang
すると1.2.1のが入るので公式から取ってきて展開、インストール。
GOPATHは$HOME/gopathにした。
wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.4.2.linux-amd64.tar.gz mkdir $HOME/gopath export PATH=$PATH:/usr/local/go/bin export GOPATH=$HOME/gopath
正直なところ、hg
入れるところからここまでをやる必要があるかどうかよくわからない。
ここから2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会と同じ。
go get -d golang.org/x/mobile/... sudo docker build -t mobile $GOPATH/src/golang.org/x/mobile
公式では2行目をdocker pull golang/mobile
にしている。こうするとdocker run
の時のイメージ名の指定にはgolang/mobile
にする*1。
どうでもいいことだけどJava6のインストールが始まったとき文字が真っ赤になったので何事かと思った。
インストール作業はここまで。うまく行ったかどうかを確かめるためにサンプルプロジェクトをビルドしてみる。
sudo docker run -v $GOPATH/src:/src /bin/bash -c 'cd /src/golang.org/x/mobile/example/libhello && ./make.bash'
うまく行けばlibhello/bin/Hello-debug.apk
とかができているはず。
ホストOS上で書いたコードを仮想環境でビルドするにはどうしたらよいのだろうか
コードを書く環境はWindows上にある。そこで書いたものを仮想マシン上でビルドするにはどうすればよいのか。どうするのが良いのかわからないが、仮想マシンへscp
とかして中に置き、さっきのビルドコマンドを実行する線で考えてみる。
ホストOS上でvagrantで立ち上げた仮想マシンに直接sshするには、
vagrant ssh-config >> ~/.ssh/config ssh (Host名)
Host名
はvagrant ssh-config
で取れるもの。ssh-configの設定はupごとに変わりそうな気がするのであんまり良くないやり方かもしれない。とりあえず、これでsshでログインできるようになったとして、scp
して任意の場所にビルドしたいプロジェクトをおけばいいかなって。
さっき仮想マシン上で実行したビルドコマンドをゲストOSから実行してみる。
ssh (Host名) docker run -v '$GOPATH'/src:/src mobile /bin/bash -c "'cd /src/golang.org/x/mobile/example/libhello && ./make.bash'" scp (Host名) :'$GOPATH'/src/golang.org/x/mobile/example/libhello/bin/Hello-debug.apk .
ビルドが成功していれば、Hello-debug.apk
を取り出せる。
Dockerイメージを取ってくるところまでをスクリプトにしておきたいが何を使うのがよいのかわからない。ここまで書いててわからないことだらけなのがやばい。いつかわかるようになったら追記するかもしれない。
とりあえず環境はできた。自分のアプリをビルドできたかどうかはまたいつか書く。
*1:pullした後にbuildする?よくわからない。