EclipseからAndroid Studioに移行する事になったのですが、ライブラリプロジェクトをどう管理するのか分からなかったので、調べてみました。
1:Androidプロジェクトを作成する(例としてHelloWorldプロジェクトを作成)
2:以下がオリジナルプロジェクト(HelloWorldプロジェクト)の構造
HelloWorld/ app/ - build.gradle // ローカル設定(HelloWorldプロジェクトのみに有効) ... - build.gradle // グローバル設定(全体のプロジェクトに有効) - settings.gradle - gradle.properties ...
3:ルートディレクトリ(HelloWorld/)配下に、external librariesを置くためのlibフォルダを作成する(任意)
例としてPagerSlidingTabStrip library( https://github.com/astuetz/PagerSlidingTabStrip )を使用する。
4:libフォルダを作ったら、そこにexternal librariesを置く。
ここまででHelloWorldプロジェクトの構造は以下のようになる
HelloWorld/ app/ - build.gradle ... libs/ PagerSlidingTabStrip/ - build.gradle // ローカル設定(PagerSlidingTabStripプロジェクトのみに有効) - build.gradle - settings.gradle - gradle.properties ...
5:setting.gradleファイルに、追加したライブラリをincludeする。
もし、任意のフォルダなどを作っていたら、以下のようにしてパスを設定する必要がある。
include ':app', ':PagerSlidingTabStrip' project(':PagerSlidingTabStrip').projectDir = new File('libs/PagerSlidingTabStrip')
6:app/build.gradleにライブラリプロジェクトを追加
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.3' compile project(":PagerSlidingTabStrip") }
7:追加したライブラリプロジェクトに、build.gradleがなければ、以下の例のように手動で作成する
apply plugin: 'com.android.library' dependencies { compile 'com.android.support:support-v4:21.0.3' } android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { minSdkVersion 14 targetSdkVersion 21 } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] res.srcDirs = ['res'] } } }
8:gradle.propertiesファイルに、全てのモジュールで使用するSDKバージョン、ビルドツールバージョンを加え、設定値の一元化を行う。
ANDROID_BUILD_MIN_SDK_VERSION=14 ANDROID_BUILD_TARGET_SDK_VERSION=21 ANDROID_BUILD_TOOLS_VERSION=21.1.3 ANDROID_BUILD_SDK_VERSION=21
これで、appと、libs/{ライブラリ}配下のbuild.gradleで上記設定値を使用する事が出来るようになる。
//... android { compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION) buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION defaultConfig { minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION) targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION) } } //...
9:gradleアイコンをクリックして完了
actionbarsherlock - How do I add a library project to the Android Studio? - Stack Overflow
ちなみに、ライブラリプロジェクトと、jarの違いは、Resourceを保持出来るか、出来ないか。
という事が、根本的な違いのようです。