2012年8月18日土曜日

pfn/android-sdk-pluginでAndroidのScala開発環境を構築(2)

pfn/android-sdk-pluginでAndroidのScala開発環境を構築(2) Android, Eclipse, Scala, Ubuntu,

概要は pfn/android-sdk-pluginでAndroidのScala開発環境を構築 を参照。

プロジェクトの作成

$ android create project --target android-16 --path ./chokinbo --package net.itsuha.chokinbo --activity MainActivity

pfn/android-sdk-plugin の設定

$ mkdir project
$ cat << END > project/plugin.sbt
resolvers += Resolver.url("scala-sbt releases", new URL(
    "http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases/"))(
    Resolver.ivyStylePatterns)

addSbtPlugin("com.hanhuy.sbt" % "android-sdk-plugin" % "0.3.6")
END
$ cat << END > project/build.properties
sbt.version=0.11.2
END
$ cat << END > build.sbt
name := "Chokinbo"

seq(androidBuildSettings: _*)
END

build.sbtはprojectディレクトリではなく、プロジェクトルート直下なので注意。

Javaソースのみでsbtを実行し、実機にインストールできることを確認

$ sbt
> android:run

Scalaソースの追加、実行

$ rm src/net/itsuha/chokinbo/MainActivity.java
$ cat << END > src/net/itsuha/chokinbo/MainActivity.scala
package net.itsuha.chokinbo

import _root_.android.app.Activity
import _root_.android.os.Bundle

class MainActivity extends Activity {
  override def onCreate(bundle: Bundle) {
    super.onCreate(bundle)
    setContentView(R.layout.main)
  }
}
END

$ sbt
> android:run

Javaの場合と異なり、自動でProguardが実行される。

2012年8月17日金曜日

pfn/android-sdk-pluginでAndroidのScala開発環境を構築

pfn/android-sdk-plugin とは

jberkel/android-plugin のfork。以下にREADMEの和訳と試してみた時に引っかかった点などを書いてみる。

jberkel/android-plugin との違い

  • jberkel/android-plugin は使うのが非常に難しいようだ
  • 設定のしやすさが pfn/android-sdk-plugin の主な目的
  • 4行の設定と、あとはAndroid標準のプロジェクトレイアウト
コマンド 説明
android:devices デバイス一覧を表示
android:device 以後のコマンドの対象デバイスを選択 選択されない場合、リストの最初のデバイスが対象になる
android:install apkのビルドとインストール
android:run apkのビルドとインストール、実行
  • Eclipseや android create project で作成されたプロジェクトレイアウト を利用
  • 既存の .properties をすべて読み込む
  • jberkel/android-plugin にはあった TR は pfn/android-plugin には存在しない
  • apklib サポートはなし

詳細は New android sbt plugin (works with stock android projects and basic scala projects) - Google Groups および pfn/android-sdk-plugin を参照。

使い方

  1. sbt をインストール
  2. android create project またはEclipseで新しいプロジェクトを作成。
  3. project/plugin.sbt を作成し、以下の内容を記載する
resolvers += Resolver.url("scala-sbt releases", new URL(
    "http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases/"))(
    Resolver.ivyStylePatterns)
  
addSbtPlugin("com.hanhuy.sbt" % "android-sdk-plugin" % "0.3.6") 
  1. build.sbt を作成し、以下の内容を記載する
name := YOUR-PROJECT-NAME

seq(androidBuildSettings: _*)
  1. sbtを実行。利用できるコマンドには例えば次のものがある
コマンド 説明
compile JavaとScalaの全ソースをコンパイル Scalaの場合は自動でProguardにより処理され、そうでなければ手動で有効にできる
android:package-release apkをビルドしてリリースキーで署名(設定済みならば)
android:package-debug apkをビルドしてデバッグキーで署名
android:package package-release または package-debug のどちらか。デフォルトはdebug
  1. package-release で署名をしたい場合は、次の各設定を local.properties などに記述する
key.alias: YOUR-KEY-ALIAS
key.store: /path/to/your/.keystore
key.store.password: YOUR-KEY-PASSWORD
key.store.type: pkcs12 (optional, defaults to jks)

使ってみた感想

  • project.properties, local.properties他を読み込んでくれるので、設定作業が楽
  • jberkel/android-plugin では、 android.support.v4.app.Fragment を継承したクラスがProguardの設定をしてもkeepされず、ClassNotFoundException を吐き続けていつまでも実行できなかったのに対し、pfn/android-sdk-plugin では簡単に通過
  • これから実際に開発で使ってみる

続編: pfn/android-sdk-pluginでAndroidのScala開発環境を構築(2)