yan's Handicraft

作成したフリーソフトを公開
Home » PC/システム開発 » android » sbtを使ってscalaプロジェクトをandroidにデプロイする手順

sbtを使ってscalaプロジェクトをandroidにデプロイする手順

7月 2nd, 2011 Posted in android, sbt, scala

プロジェクトの作成と準備

Windowsで作業した内容です。Java、Scala、Android_SDKはインストール済みでかつ、
エミュレータが”SDK Manager”などで作成されている状態のの前提で書きます。

sbt (simple-build-tool) の準備

  1. sbt の準備
    sbtはhttp://code.google.com/p/simple-build-tool/からダウンロードする。
    2011-6-30時点の最新は sbt-launch-0.7.7.jar 今回はこれを使用
    sbt-launch-0.7.7.jar を適当なディレクトリに配する。(このディレクトリを[SBT_HOME]と呼ぶ)
  2. sbt の WIKI の http://code.google.com/p/simple-build-tool/wiki/Setup で説明されているとおりに、 [SBT_HOME] に sbt.bat を作成する。

    set SCRIPT_DIR=%~dp0
    java -Xmx512M -jar “%SCRIPT_DIR%sbt-launch-0.7.7.jar” %*

  3. [SBT_HOME]を、環境変数 PATH に追加しておく

sbt でScalaアンドロイドプロジェクトを作成する

  1. sbt-android-pluginサイトから、create_project シェルを入手する。
    https://github.com/jberkel/android-plugin/tree/master/script
    create_project は、シェルから、Scalaコマンドを実行する内容だが、Windows では動かない。
    ただし、create_project をコンパイルできるScalaソースに修正して実行することで使える。
    ( (jp.武田ソフト.ブログ._)[http://blog.takeda-soft.jp/blog/show/383] さんが説明されています。
    今回は、jp.武田ソフト がScalaファイルに変換された、 https://gist.github.com/486306
    をコンパイルして使わせていただきました。)
  2. “[SBT_HOME]/createProject” に、create_project.scala を配置する。
    このディレクトリは[CREATE_PROJECT_HOME]と呼ぶことにする。
    [CREATE_PROJECT_HOME]で、create_project.scala をコンパイルする。
    [CREATE_PROJECT_HOME]以下に10ファイル強のclassファイルができる。

    scalac create_project

  3. プロジェクトを作成するワークスペースディレクトリに移動する。このディレクトリを[WK_SP]と呼ぶことにする。

  4. [WK_SP]に、Scalaアンドロイドプロジェクトを作成するためのバッチファイル”createProject.bat”を作成する。

    cd %~dp0
    set API_LEVEL=8
    set PROJECT_NAME=SampleProject
    set PACKAGE_NAME=sample.a.b
    set SCALA_VERSION=2.9.0
    set ACTIVITY_NAME=SampleActivity

    set CREATE_PROJECT_DIR=[CREATE_PROJECT_HOME]を指定する

    cmd scala -cp .;%CREATE_PROJECT_DIR% CreateProject ^
    %PROJECT_NAME% %PACKAGE_NAME% ^
    –api-level %API_LEVEL% ^
    –scala-version %SCALA_VERSION% ^
    –activity %ACTIVITY_NAME%

    • 2行目からのsetで環境変数を指定している部分は、作成したいプロジェクトに応じて値を変更する。
    • API_LEVEL=9(Android 2.3 に対応したAPI)ではプロジェクトは作れたがうまく動作しなかった
  5. PROJECT_NAMEで指定したディレクトリができている。
    (上の例では、”[WK_SP]/SampleProject”。以後[PROJECT_ROOT]と呼ぶ)
    [PROJECT_ROOT] に移動してsbtコマンドを発行する。

    sbt

    update

    package-debug

    • これで、[PROJECT_ROOT]以下に、依存しているリソースがダウンロードされる。

プロジェクトをビルドする

  1. Android SDKをインストールしたディレクトリを、環境変数”ANDROID_SDK_HOME”に設定する。
  2. 最新の Android SDK では、”adb.exe” の格納ディレクトリが、
    “[ANDROID_SDK_HOME]/tools” から “[ANDROID_SDK_HOME]/platform-tools” に変更されている。
    自動生成された。インストールされている”[Android SDK]/tools” に “adb.exe”がなければ、
    “[PROJECT_ROOT]/project/build/プロジェクト名.scala”(上の例では”SampleProject.scala”)
    中の”MainProject”クラスと”TestProject”の関数”adbPath”を以下のようにオーバーライドする。
    (現時点のsbt-android-pluginは、”[ANDROID_SDK_HOME]/tools/adb.exe”を使おうとしてしまう)

    class MainProject(info: ProjectInfo) extends AndroidProject(info) with Defaults with MarketPublish {
    val keyalias = “change-me”
    val scalatest = “org.scalatest” % “scalatest” % “1.0” % “test”

    override def adbPath = androidSdkPath / “platform-tools” / adbName

    }

    class TestProject(info: ProjectInfo) extends AndroidTestProject(info) with Defaults{
    override def adbPath = androidSdkPath / “platform-tools” / adbName
    }

  3. 書き換えが終わったら。sbt コマンド reload を実行する。

    reload

  4. コンパイルする

    compile

  5. Androidエミュレータを起動する

    start %ANDROID_SDK_HOME%\tools\emulator -avd %EMULATOR_NAME%

  6. Androidエミュレータにデプロイする
    sbtコマンド install-emulator を実行する

    install-emulator

    1. “[PROJECT_ROOT]/target/scala_[scalaバージョン番号]” に”プロジェクト名.apk” ができる。
  7. Androidエミュレータからアンデプロイする

    uninstall-emulator

  8. デバイスへのインストール
    以下のコマンドで実施できる模様。実機を持っていないので未確認。

    install-device

Leave a Reply

*