なんじゃくにっき

プログラミングの話題中心。

ScalaでAndroid開発 sbt 0.11.2版

一年ぶりくらいにScalaAndroid開発をしてみることにした。
 
sbtのバージョンとかも上がってるのでプロジェクト生成の仕方なんかも大分変わってるのでそのへんを書こうかと。
 
開発環境は
CentOS 6.2 64bit
jdk 1.6.0.30
scala 2.9.0.1
sbt 0.11.2
  
Android SDKインストール
ここ
http://developer.android.com/sdk/index.html
からアーカイブ持ってきて好きな場所に解凍。
(例:/usr/local/src/android-sdk-linux
 
パスを通す
vi /etc/profile
末尾に以下追加


export ANDROID_SDK_HOME=/usr/local/src/android-sdk-linux
export PATH=$PATH:$ANDROID_SDK_HOME/tools
 
設定反映

source /etc/profile

SDKアップデート


android
GUIが立ち上がる。
自分に必要なパッケージだけチェックを入れてダウンロード。
(全部ダウンロードするには時間がかかる)
Toolsと自分の開発ターゲットバージョンだけ選べばOK。
 
virtual deviceの設定もしておく
ここでは
名前はavd1
targetは1.6(API ver4)
 
■テンプレートからプロジェクト生成
giter8がインストールされてることが必要

g8 jberkel/android-app
 
■sbt-android-pluginの設定
sbt-android-pluginはmavenリポジトリがないので、
ローカルにリポジトリを自分で作ってあげる必要がある。

git clone git://github.com/jberkel/android-plugin.git
cd android-plugin
sbt publish-local
※ローカルにリポジトリ作らなくてもいける方法を@xuwei_k様から教えていただきました。
 コメント欄読んでください。
 
コンパイル&実行
プロジェクトのディレクトリに戻ってsbt実行。

sbt compile
sbt android:package-debug
sbt android:emulator-start avd1
sbt android:install-emulator

これでホーム画面にアプリが追加されるので、
実行してHello, Worldが表示されたら成功
 
■ハマりどころ
jdk 1.7だとProguardでコケる
・sbt 0.11.1以前だとsbt-android pluginが動かない
・Main Activityのパッケージが1階層だと実行エラー
 hoge.piyoみたいに2階層以上にしましょう(って1年前にもこれひっかかったような)
・OSが64ビットだと.apkファイルが出来ない


yum install xulrunner.i686
で32ビット用ライブラリを入れて解決