homebrewでsbtとscalaは入れてある前提。
> brew install android-sdk
> android
SDKマネージャーが立ち上がるので適当なバージョンをインストール
> android list targets
Available Android targets:
----------
id: 1 or "android-16"
Name: Android 4.1
Type: Platform
API level: 16
Revision: 2
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
ABIs : armeabi-v7a
----------
id: 2 or "Google Inc.:Google APIs:16"
Name: Google APIs
Type: Add-On
Vendor: Google Inc.
Revision: 2
Description: Android + Google APIs
Based on Android 4.1 (API level 16)
Libraries:
* com.google.android.media.effects (effects.jar)
Collection of video effects
* com.android.future.usb.accessory (usb.jar)
API for USB Accessories
* com.google.android.maps (maps.jar)
API for Google Maps
Skins: WVGA854, WQVGA400, WSVGA, WXGA800-7in, WXGA720, HVGA, WQVGA432, WVGA800 (default), QVGA, WXGA800
ABIs : armeabi-v7a
> android create avd -n android_test -t 1
Auto-selecting single ABI armeabi-v7a
Android 4.1 is a basic Android platform.
Do you wish to create a custom hardware profile [no]
Created AVD 'android_test' based on Android 4.1, ARM (armeabi-v7a) processor,
with the following hardware config:
hw.lcd.density=240
vm.heapSize=48
hw.ramSize=512
プロジェクト作成
> android create project -t 1 -k com.example.testapps -a HelloTest -p hello_test
ビルド
> ant debug
リリース用ならant releaseなのかな。
エミュレータ転送
> adb install bin/HelloTest-debug.apk
ここからscalaで開発するための準備。
> curl https://raw.github.com/n8han/conscript/master/setup.sh | sh
> cs n8han/giter8
$HOME/binにファイルがある
> mkdir scala-test
> cd scala-test
> g8 jberkel/android-app
api_level [10]: 16
androidコマンドで起動するSDKマネージャーでインストールしているものが
Android 4.1 (API 16)
だったので16を指定した。
> git clone git://github.com/jberkel/android-plugin.git
> cd android-plugin
> sbt update
> sbt publish-local
0.6.3-SNAPSHOTだった
> cd test-scala #g8でつくったプロジェクトのディレクトリ
> vi projects/plugins.sbt
0.6.3-SNAPSHOTに書き換える。
> sbt
> compile
OutOfMemoryErrorが出る時がある。が何度かやればいける。*1
デバッグ
> android:package-debug
エミュレータ起動してデプロイ
> android:emulator-start scala_android_test
> PANIC: Could not open: /usr/local/Cellar/android-sdk/r20.0.1/.android/avd/scala_android_test.ini
ここからPANIC: 部分の修正ログ。
> export ANDROID_SDK_HOME=/usr/local/Cellar/android-sdk/r20.0.1
してから
> android create avd -n scala_android_test -t 1
> sbt
> android:package-debug
> android:emulator-start scala_android_test
[error] Expected 'scala_android_test'
[error] android:emulator-start scala_android_test
~/.androidと$ANDROID_SDK_HOMEの両方にavdがあって、ごちゃってきたのでシンボリックリンクすることにした(強引)
> cd /usr/local/Cellar/android-sdk/r20.0.1
> ln -s ~/.android .android
> sbt
> android:emulator-start scala_android_test
> android:start-emulator
android:emulator-start scala_android_testでエミュレータが起動した時に画面にロックがかかっていたらandroid:start-emulatorする前にロックを外してホーム画面にしておく。
android:install-emulatorでもいい。
実機なら、
android:install-device
android:start-device
スクリーンショットも取れた。
> android:screenshot-emulator
sbtでandroid:のあとにタブ打てば色々とコマンドがでます。
[追記]
*1
sbtのファイルをみてみたら、
> cat /usr/local/bin/sbt
#!/bin/sh
test -f ~/.sbtconfig && . ~/.sbtconfig
exec java -Xmx512M ${SBT_OPTS} -jar /usr/local/Cellar/sbt/0.12.0/libexec/sbt-launch.jar "$@"
となっているので、
vi ~/.sbtconfig
SBT_OPTS=-Xmx1024M
としてみたらとりあえずOutOfMemoryErrorが出なくなった(いまのところ)
psみたら、
/usr/bin/java -Xmx512M -Xmx1024M -jar /usr/local/Cellar/sbt/0.12.0/libexec/sbt-launch.jar
いいのかな。。