@numa08 猫耳帽子の女の子

明日目が覚めたら俺達の業界が夢のような世界になっているとイイナ。

Android Support LibraryをSbtから使う

f:id:numanuma08:20140124022155p:plain

今更ながらNexus 5をポチりました。

さて、最近はScaloidAndroidをアプリの作成を行っています。

Scalaなので、ビルドツールにsbtを利用でき、そのお陰で依存関係をファイルに記述するだけで勝手に解決してくれるようになります。

しかし、やっかいなのがAndroid Support Libraryです。古いバージョンのOSでも新しいバージョンのAPIを利用可能にするこのライブラリなのですが、

など、一部のAPIはSupport Libraryで宣言されているので、古いOSから新しいAPIを利用する以外にも、特定のUIや機能を実装するために必要なライブラリになってます。

Android SDKのインストールを行うとJarファイルなども付属してくるので、プロジェクトのクラスパスに追加してあげてもいいのですが、ちょっとそれはダサい(主観)のでbuild.sbtにチョチョっと記述して依存関係の解決を図ります。

前提

build.sbt

resolvers += "Local android extras" at "file:///" + System.getenv("ANDROID_HOME") + "/extras/android/m2repository"

libraryDependencies += "com.android.support" % "support-v13" % "19.0.1"

説明

Android SDK ManagerからAndroid Support Repositoryのインストールをを行うと、${ANDROID_HOME}/extras/android/m2repository以下にSupport Library用のMaven Repositoryが生成されます。

そのリポジトリを参照しているわけです。

中の人のコメントもあって、どうやらGradleでビルドする用に用意されたリポジトリのようですが、Mavenなのでsbtでも利用できます、ということです。

色々と思った

Androidとビルドツールの関係性、Googleの人も色々考えてるんだなーって最近バーコードリーダーで有名なzxingを見ていて思いました。

このプロジェクトもMavenを使ってCore Libraryをビルド、Androidのlibsディレクトリに配置するってやってます。

antだけだとやっぱりパワー不足を感じますね・・・。で、xmlを書くのが嫌なので、Rakefileを使うとか変なことやったり。

Gradle!!!はやくきてくれー!!!