intellijでv7 appcompatを使う
最近はintellij + scala + sbtでandroidアプリを書いたりしているのですがハマるところ多すぎじゃね?という感じです。
で、タイトルの通りandroid support libraryのv7 appcompat libraryをintellij ideaで使う方法なんですが、scalaとかsbtとかあんまり関係ない話です。
試した環境
手順
v7 appcompat libraryのインストール
Android SDK ManagerでAndroid Support Libraryをダウンロードしてくる。
v7 appcompat libraryを依存関係に追加
build.sbt
に以下のように追加する。
resolvers += "Local android extras" at s"file:///${System.getenv("ANDROID_HOME")}/extras/android/m2repository" libraryDependencies ++= Seq( "com.android.support" % "appcompat-v7" % "21.0.3" )
v7 appcompat libraryのモジュール化
v7に含まれているリソースを利用するためにこの作業が必要。 同じsupport libraryでも、リソースがないv4などではこの作業は不要。
File
メニュー > Import Module...
を選択し、出てきたダイアログに$ANDROID_HOME/extras/android/support/v7/appcompat
のパスを入れる。
あとはメインのAndroidモジュールの方に、モジュール化したv7 appcompat libraryを依存関係に追加する。
自分の環境ではこれだけで動いた……と思うけど、他にもproguardの設定とかなんかあるかも。
エラーが出るとき
API Levelに合わせて正しいSDKを設定していないとエラーが出てビルドできません。例えばAndroid 4.4.2のSDK(API Level 19)でAndroid 5.0.1のライブラリ(API Level 21)を利用しようとすると以下のようなエラーが大量に出ました。
Error:(75, -1) android-apt-compiler: [android-support-v7-appcompat] /usr/local/opt/android-sdk/extras/android/support/v7/appcompat/res/values-v21/styles_base.xml:75: error: Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.ActionButton'.
project.properties
のtarget=android-**
は変えても変えなくても動くっぽいけど、念のため合わせておいたほうが良さそう。