OE_uia Tech Blog

ScalaMatsuri / Scala / Android / Bioinfomatics

Androidプロジェクト(pfn)のgiter8テンプレート

| Comments

ScalaでAndroidアプリを作るためのsbtプラグイン、pfn/android-sdk-pluginの紹介を前回のブログでしました。

が、このREADMEの通りにプロジェクトを作るのが面倒なので、giter8テンプレートも作ってみました。

プロジェクト作成

1
 g8 taisukeoe/android-pfn-app.g8

からプロジェクトの雛形が作れます。 giter8が入っていない人はbrew install giter8とかで。

ディレクトリ構造

こんな感じです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
MyAndroidProject
├── .gitignore
├── AndroidManifest.xml
├── build.sbt
├── local.properties
├── proguard-project.txt
├── project/
│   ├── build.properties
│   └── plugins.sbt
├── project.properties
├── res/
│   ├── layout/
│   └── values/
├── src/.../MainActivity.scala
└── tests/
    └── src/.../MainActivityInstrumentationTest.scala

簡単な説明。

  • AndroidManifest.xml …ActivityやApplicationのもろもろの設定。
  • build.sbt …sbtのビルド定義
  • local.propeties …AndroidSDKのpathを記入。また、keyStoreの情報を記入すると、android:package-releaseで簡単にrelease buildできる。
  • proguard-project.txt …proguardオプションを記入。-dontwarn, -keep, -keepclassmembers, -libraryjarsあたりのオプションが頻出。詳しくはProGuard Usageを参照。
  • project/ …sbtのバージョンやpluginなどを記入。
  • project.properties… 利用するAndroid APIのバージョン(target api)や、(unmanagedの)libraryプロジェクトのpathを記入。
  • res/ …レイアウトやテキスト、画像などのリソースファイル置き場。
  • src/ …ソース。

local.properties, project.propertiesを修正したときは、ちゃんとsbt reloadしましょう。

proguard-project.textを修正したときは、sbt reload cleanしてclassファイルのキャッシュを消しましょう。

各種コマンド

pfn/android-sdk-pluginより。

インストール

1
2
sbt
> android:run

テスト

1
2
sbt
> android:test

ちなみにScalaTestやspec2を入れようとすると、ScalaTestはサイズが大きすぎてmethod数64k問題に引っかかり端末にインストールできず、spec2は実行時にDalvikVMのOutOfMemoryErrorを引きおこしてしまいます。

まあ結局、端末上で行うテストはAndroidInstrumentationTestCase2とかを継承せざるをえませんし、Scalaで書けるだけ良しとしましょう。

Comments