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
いいのかな。。