gradle-android-toolkitでライブラリプロジェクト

2014-02-11T00:00:00+00:00 Android gradle Java

例えば、アプリプロジェクト・ライブラリプロジェクトの両方を持ちつつ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で使うとかそういうところ辺りは今回ノータッチなので、正常に使えるかは知りませんが

Spring WebMVCをやってみる (19) - UriComponentsBuilder -