WindowsでのAndroidはVM Playerでやっていたけど、最近調子が悪くなってきているようだったので、この機会にChefでAndroid環境構築できるようにしてみた。今回はUbuntu 13.04で構築した。
コマンド書かれてるところはコマンドプロンプト上で実行する。
Vagrantの準備
Vagrantのインストール
- 公式サイトから最新版のVagrantをインストールする
- 再起動した後にコマンドプロンプトからVagrantが認識されているか確認する
C:\> vagrant -v
Vagrant 1.4.1
VirtualBoxのインストール
公式サイトから最新版のVirtualBoxをインストールする
Vagrantfileの準備
- 任意のフォルダに\移動してVagrantfileを作成する
vagrant init
- Vagrantfileに必要な設定を書く
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu-13.04"
config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/raring/current/raring-server-cloudimg-amd64-vagrant-disk1.box"
config.vm.provider :virtualbox do |vb|
vb.gui = true
vb.name = "ubuntu"
vb.customize ["modifyvm", :id, "--memory", "4096"]
vb.customize ["modifyvm", :id, "--cpus", 4]
end
end
- Vagrantfileのあるディレクトリにいる状態で仮想OSを起動する
vagrant up
- config.vm.box_urlにboxのURLを書いておくと、vagrant upした時にboxをダウンロードしてきてくれる
Chefの準備
Rubyのインストール
- インストーラーから 入れる
- Rubyが認識されているかコマンドプロンプトから確認する
C:\> ruby -v
ruby 2.0.0p353 (2013-11-22) [x64-mingw32]
Development Kitのインストール
-
http://rubyinstaller.org/downloads/
- 自分の環境ではFor use with Ruby 2.0 (x64 – 64bits only)をインストールする
- インストール先のディレクトリに移動してコマンドを実行する
C:\ruby-develoment-kit> ruby dk.rb init
Initialization complete! Please review and modify the auto-generated
'config.yml' file to ensure it contains the root directories to all
of the installed Rubies you want enhanced by the DevKit.
C:\ruby-develoment-kit> ruby dk.rb install
[INFO] Updating convenience notice gem override for '{rubyのインストール場所}'
[INFO] Installing '{rubyのインストール場所}/lib/ruby/site_ruby/devkit.rb'
- うまくいかなかった場合はconfig.ymlを書き換えてもう一度
ruby dk.rb install
を実行
config.yml
---
- {rubyのインストール場所}
Chefのインストール
gemからインストール
- Chefを入れる
gem install chef --no-ri --no-rdoc
- knife soloを入れる
gem install knife-solo --no-ri --no-rdoc
- win32-processを入れる
gem install win32-process --no-ri --no-rdoc
- windows-prを入れる
gem install windows-pr --no-ri --no-rdoc
Chefが認識されているか確認する
C:\> knife -v
Chef: 11.8.2
cwRsyncのインストール
- インストーラーから入れる
- {cwRsyncのインストールディレクトリ}/binを環境変数のPathに追加する
Chefで料理する
Chefで使うレポジトリはあらかじめ作っておいたものを使用する
Gitのインストール
Gitからインストールするのも良いけど、個人的にはGithub for windowsに入ってるGit Shellが使いやすいのでGithub for windowsをインストールする
Git Shellを起動してGitが認識されているか確認する
C:\>git --version
git version 1.8.4.msysgit.0
料理前の準備
Git Shellを起動して以下のコマンドを実行する
あらかじめVagrantfileのあるディレクトリに移動してvagrant up
しておくこと
c:\>git clone https://github.com/chuross/chef-android-repository.git
c:\>cd chef-android-repository
c:\>git submodule init
C:\>git submodule update
C:\>knife solo prepare vagrant@127.0.0.1 -p 2222
※Git ShellからだとChefがうまく動かなかったのでGitのインストールとこの前準備の項目だけGit Shellで実行した
chef-android-repositoryがやってくれること
- Git
- java
- Oracle JDK 7u45
- maven
- 3.1.1
- eclipse
- kepler
- m2e
- m2e-android
- android SDK plugin
- android NDK plugin
- eclipseの日本語化
- Android SDK
- GUI(日本語化)
料理開始
ここまできたら後はコマンド一個実行したあと放置。known_hostsに追加するかどうか聞かれた場合はyesで進める。
- cloneしてきたchef-android-repositoryのディレクトリに移動する
-
knife solo prepare -i {.vagrand.dがあるディレクトリ}/insecure_private_key vagrant@127.0.0.1 -p 2222
- .vagrant.dは多分ここらへんにあるはず
C:\Users\インストールしたユーザ\.vagrand.d
- .vagrant.dは多分ここらへんにあるはず
終わったら
あとはvagrant halt
した後に、vagrant up
もしくはVirtual Boxから直接起動して使うだけ
補足
chef-android-repositoryの今後
- 現状だとユーザの追加に関するレシピを書いてないので、手動で追加する必要があるので自動化する
- eclipseのプラグインは今後も追加していくかも
- Android NDKも自動化する
日本語化しない方法
- eclipseを英語のままで使いたい場合
- この行を
recipe[eclipse]
に変える - https://github.com/chuross/chef-android-repository/blob/master/roles/default.json#L59
- この行を
- Ubuntuを英語のまま使いたい場合
- この行を
recipe[chef-gui]
に変える - https://github.com/chuross/chef-android-repository/blob/master/roles/default.json#L61
- この行を