mattak's blog

気の向くままに書く

androidでjarライブラリを作成する

AndroidStudioでgraldeビルドになった。 で、ライブラリの作り方がよくわかんないので、まとめた。

jarの作り方

src/main/java 以下にパッケージとコードをおく。

$ tree
.
├── build.gradle
└── src
    └── main
        └── java
            └── me
                └── mattak
                    └── sample_library
                        └── HelloPackage.java

build.gradleは以下の通り

$ cat build.gradle

apply plugin: 'java'
apply plugin: 'maven-publish'

version = '0.0.1'
group   = 'me.mattak.sample_library'

repositories {
    mavenCentral()
}

dependencies {
    compile "com.google.android:android:4.1.1.4"
}

uploadArchives {
    repositories {
        flatDir {
            dirs 'repos'
        }
    }
}

HelloPackage.java

$ cat HelloPackage.java

package me.mattak.sample_library;

import android.content.Context;

public class HelloPackage {
    private Context mContext;

    public HelloPackage (Context context) {
        mContext = context;
    }

    public String getPackageName() {
        return mContext.getPackageName();
    }
}

ビルド

$ gradle uploadArchives

$ tree
.
├── build
│   ├── classes
│   │   └── main
│   │       └── me
│   │           └── mattak
│   │               └── sample_library
│   │                   └── HelloPackage.class
│   ├── dependency-cache
│   ├── ivy.xml
│   ├── libs
│   │   └── SampleLibrary-0.0.1.jar
│   └── tmp
│       └── jar
│           └── MANIFEST.MF
├── build.gradle
├── repos
│   ├── SampleLibrary-0.0.1.jar
│   └── ivy-0.0.1.xml
└── src
    └── main
        └── java
            └── me
                └── mattak
                    └── sample_library
                        └── HelloPackage.java

これで、repos以下に、SampleLibrary-0.0.1.jarができる.

android-libraryの作成

res/以下などもまとめたaarファイルを作成する方法

.
├── build.gradle
└── src
    └── main
        ├── AndroidManifest.xml
        ├── java
        │   └── me
        │       └── mattak
        │           └── sample_android_library
        │               └── HelloLibrary.java
        └── res
            └── values
                └── strings.xml

buil.gradle

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4.2'
    }
}

apply plugin: 'android-library'
apply plugin: 'maven'

version  = '0.0.1'
group    = 'me.mattak.sample_android_library'

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 16
        versionCode 1
        versionName '0.0.1'
    }
}

uploadArchives {
    repositories {
        mavenDeployer {
            repository url: "file://${your_repository_location}"
            pom.version = version
            pom.groupId = 'me.mattak.sample_android_library'
            pom.artifactId = 'sample-android-lib'
        }
    }
}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="me.mattak.sample_android_library"
    android:versionCode="1"
    android:versionName="0.0.1">

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

</manifest>

ビルド

$ gradle uploadArchives

${your_repository_location}にレポジトリができていればOK

aarを利用する

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
apply plugin: 'android'

repositories {
    maven {
        url 'file://${your_repository_location}'
    }
}

dependencies {
    compile 'me.mattak.sample_android_library:sample-android-lib:0.0.1'
    compile files('libs/android-support-v4.jar')
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 17
    }
}

このbuild.gradleがあれば、利用可能。