gradle-android-toolkitでライブラリプロジェクト
例えば、アプリプロジェクト・ライブラリプロジェクトの両方を持ちつつActionBarSherlock等のような外部のライブラリプロジェクトを利用する場合のgradle-android-toolkitでのビルドってどうなってるかとか辺りをまだやってなかったのでやってみた (※Android Studioに関してはノータッチで)
※以下のバージョンのgradle-android-toolkitはGradleのバージョンが1.10くらい辺りからじゃないと動かないので(ry
構造
├── app │ ├── build.gradle │ └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ │ └── sample │ │ └── test │ │ └── MainActivity.java │ └── res (drawable-XXX内は省略) │ ├── drawable-hdpi │ ├── drawable-ldpi │ ├── drawable-mdpi │ ├── drawable-xhdpi │ └── drawable-xxhdpi │ ├── libraries │ └── helloworld │ ├── build.gradle │ └── src │ └── main │ ├── AndroidManifest.xml │ └── java │ └── sample │ └── test │ └── HelloWorldTextView.java ├── build.gradle └── settings.gradle
まぁみたいな感じで作れば良い模様げ
build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:0.8.+"
}
}
毎回build.gradleで書くのがめんどくさいので、ルートなbuild.gradleに書いておけば良いっぽい
settings.gradle
include ":libraries:helloworld"
include ":app"
librarires/helloworld/build.gradle
apply plugin: "android-library"
android {
compileSdkVersion 19
buildToolsVersion "19.0.1"
}
特にいう事無いんだが、Android Library Projectな場合はapply pluginがandroidではなくandroid-libraryになる。
app/build.gradle
apply plugin: "android"
repositories {
mavenCentral()
}
dependencies {
compile "com.actionbarsherlock:actionbarsherlock:4.4.0@aar"
compile project(":libraries:helloworld")
}
android {
compileSdkVersion 19
buildToolsVersion "19.0.1"
}
外部なAndroid Library等においてはAAR(Android Archive)な利用をすれば良い模様。AARが提供されいるかどうかはMaven Central Repositoriesとかでもaarが提供されているのかは表示されるようになっている模様なので(ry
app/src/main/java/sample/test/MainActivity.java
package sample.test;
import android.os.Bundle;
import com.actionbarsherlock.app.SherlockActivity;
public class MainActivity extends SherlockActivity {
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
HelloWorldTextView tv = new HelloWorldTextView(this);
setContentView(tv);
}
}
みたいなの書いて、プロジェクトルート(appとlibrariesがあるディレクトリ)で
gradle build
をして問題なくビルド出来ればオッケー
Android Studioで使うとかそういうところ辺りは今回ノータッチなので、正常に使えるかは知りませんが