今更ながらNexus 5をポチりました。
さて、最近はScaloidでAndroidをアプリの作成を行っています。
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!!!はやくきてくれー!!!