Androider の皆さんこんにちは。
もう Eclipse から Android Studio への移行は済みましたか?
僕はまだ途中です。
俺々ライブラリが移行できないと Android Studio に移行できないので
今回はそのための手順をご紹介したいと思います。
環境
- OS
- Mac OS X 10.8.5
- Android Studio
- 0.8.9
ライブラリプロジェクト(aar)とは
Android Studio 、というより Android Studio で導入された Gradle というビルドシステムでの
ライブラリプロジェクトの配布用バイナリ形式を aar (Android archive) と呼ぶらしいです。
.aar の拡張子を持つ ZIP ファイルで、以下が入っています。
- /AndroidManifest.xml (必須)
- /classes.jar (必須)
- /res/ (必須)
- /R.txt (必須)
- /assets/ (オプション)
- /libs/*.jar (オプション)
- /jni//*.so (オプション)
- /proguard.txt (オプション)
- /lint.jar (オプション)
参考:
AAR Format - Android Tools Project Site
配布編
まずは Android Studio でライブラリプロジェクトを作成します。詳しい方法については割愛。
試しに aar を作成するためリリースビルドするため、
上の画像の Terminal で
./gradlew assembleRelease を実行します。
以下のコマンドで aar が作成されているか確認します。
find . -name '*.aar'
./library/build/outputs/aar/library.aar
問題ないので build.gradle に Maven プラグインを使用して aar やら何やらを生成するタスクを追記します。
以下のハイライト部分です。
(余談だけど build.gradle って説明された時に初めは root の build.gradle なのか
Modules の build.gradle なのかわからなくて戸惑いました。だいたい Modules の方らしい。)
apply plugin: 'com.android.library'
android {
compileSdkVersion 19
buildToolsVersion "20.0.0"
defaultConfig {
minSdkVersion 10
targetSdkVersion 19
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:20.0.0'
}
def repo = new File(rootDir, "repository")
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
repository url: "file://${repo.absolutePath}"
pom.version = '1.0.0'
pom.groupId = 'at.wada811'
pom.artifactId = 'android-dialog-fragments'
}
}
}
pom.version がライブラリのバージョン、
pom.groupIdが自分用の識別子(Java の package 名の最初の部分で良さそう)、
pom.artifactIdがライブラリの識別子、みたいです。
詳しくは
第52章 Mavenプラグイン を読んで下さい。
追記したら Android Studio の Terminal で
./gradlew uploadArchivesすると
repository ディレクトリに aar が生成されます。
tree repository
repository
└── at
└── wada811
└── android-dialog-fragments
├── 1.0.0
│ ├── android-dialog-fragments-1.0.0.aar
│ ├── android-dialog-fragments-1.0.0.aar.md5
│ ├── android-dialog-fragments-1.0.0.aar.sha1
│ ├── android-dialog-fragments-1.0.0.pom
│ ├── android-dialog-fragments-1.0.0.pom.md5
│ └── android-dialog-fragments-1.0.0.pom.sha1
├── maven-metadata.xml
├── maven-metadata.xml.md5
└── maven-metadata.xml.sha1
この repository を GitHub に Push すれば配布側の手順としては完了です。
利用編
GitHub で配布されているライブラリプロジェクト(aar) を参照することで利用することができます。
プロジェクトは準備出来ているとして、app などの build.gradle に以下を記述します。
repositories {
maven { url 'http://raw.github.com/wada811/Android-DialogFragments/master/repository/' }
}
dependencies {
compile 'at.wada811:android-dialog-fragments:1.0.0'
}
全体は
HelloGradle/build.gradle at master · wada811/HelloGradle を見て下さい。
読み込めると以下のように app/build/intermidiates/exported-aar/ 以下に追加されます。
これで Public な俺々ライブラリが手軽に配布、参照できて便利ですね!
参考
u1aryzの備忘録とか: githubをMavenリポジトリとしてAndroidライブラリプロジェクト(aar)をデプロイして使用する