読者です 読者をやめる 読者になる 読者になる

初老のボケ防止日記

おっさんのひとりごとだから気にしないようにな。

スポンサーリンク

Android Studioでライブラリプロジェクトを作成する(続)



無理くりライブラリだけのプロジェクトを作ってみた。
前回のは結局アプリケーションプロジェクトの中にライブラリモジュールを追加するという方法だったので、どうにかライブラリモジュールだけのプロジェクトが作れないか試してみた。

osa030.hatenablog.com

環境

OS Windows 8.1(x64)
JDK 1.8.0(64bit)
Android Studio 1.2.2
Android Gradle plugin 1.2.3
Gradle 2.2.1

ライブラリプロジェクトを作る

新規プロジェクトの作成

アプリケーションの時と同じように、プロジェクト名を「MyLib」として、Activityのタイプを選択する画面がでるので「Add No Activity」を選択する*1

モジュールをアプリケーションからライブラリにする

デフォルトで生成されるアプリケーションモジュール「app」をライブラリにしてしまおう。

build.gradle
  • MyLib/app/build.gradle
--- build.gradle.org    Fri Jun 12 18:54:32 2015
+++ build.gradle        Fri Jun 12 18:57:48 2015
@@ -1,11 +1,10 @@
-apply plugin: 'com.android.application'
+apply plugin: 'com.android.library'

 android {
     compileSdkVersion 22
     buildToolsVersion "22.0.1"

     defaultConfig {
-        applicationId "osa030.hatenablog.com.mylib"
         minSdkVersion 14
         targetSdkVersion 22
         versionCode 1
@@ -22,4 +21,5 @@
 dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     compile 'com.android.support:appcompat-v7:22.1.1'
+    compile 'com.google.code.gson:gson:2.2.4'
 }

"puligin"のタイプを「com.android.application」から「com.android.library」に変更して、"applicationId "を削除。
あとは前回と同じクラスをつくるのでgsonライブラリを使う設定を追加。

ソースファイル

前回と同じ。パッケージ名がプロジェクト名になってるので前回と違うから注意しよう。

  • MyLib/app/src/main/java/osa030/hatenablog/com/mylibrary/Hoge.java
package osa030.hatenablog.com.mylib;

import android.util.Log;

import com.google.gson.Gson;

public class Hoge {
    private int id;
    private String name;

    public Hoge(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Hoge{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }

    // DEBUG log
    private static void log( String fmt, Object ... args ){
        if( BuildConfig.DEBUG ){
            Log.d("OSA", String.format(fmt, args));
        }
    }

    // Object -> JSON String
    public String encode(){
        Gson gson = new Gson();
        String json = gson.toJson(this);
        Hoge.log("encode Object[%s] -> JSON[%s]", this.toString(), json);
        return json;
    }

    // JSON String -> Hoge Object
    public static Hoge decode( String json ){
        Gson gson = new Gson();
        Hoge obj = gson.fromJson(json, Hoge.class);
        Hoge.log("decode JSON[%s] -> Object[%s]", json, obj.toString());
        return obj;
    }
}

aarファイルを作る

よーしパパ、aarファイル作っちゃうぞ-。

$ ./gradlew assemble
:app:compileLint
:app:copyDebugLint UP-TO-DATE
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
(snip)
:app:assembleRelease
:app:assemble

BUILD SUCCESSFUL

Total time: 16.22 secs
$ ls app/build/outputs/aar/
app-debug.aar
app-release.aar

アッ、aarができたどー。ん?でも

これどうやってデバッグすんの。

というのは、次回にまわすとして、ライブラリなのにモジュールディレクトリ名が「app」になっててしかも生成されたaarファイルも「app-xxx.aar」というのがチョット気持ち悪いね*2

はじめよう Android Studioでアプリ開発

はじめよう Android Studioでアプリ開発

*1:ライブラリ内にActivityとかFragmentとか使う場合は選択するのかな。まだ良くわかってない

*2:リネームしてsetting.gradleを変更すればいいんだと思うけど

スポンサーリンク