Androidのライブラリを作ろう

2018/05/20

共通ロジックとか汎用的な画面とかをaarでライブラリ化すると便利そう、ということで、ライブラリの作り方を調べてみました。

手順はAndroid Studio 2.3.3でのものです。3系でもたぶん一緒じゃないかな...

  • ライブラリ名: Awesome
  • パッケージ: com.example.awesome
  • ライブラリ本体とサンプルの2つのモジュール構成

新規プロジェクトの作成

まずは新規プロジェクトを作ります。Android Studioではいきなりライブラリプロジェクトを作ることはできないようです。普通のプロジェクトを作って、そこにライブラリモジュールを追加する、という流れで進めましょう。

Android Studioを起動したら “Start a new Android Studio project” を選んで通常のプロジェクトを作ります。プロジェクト名は"Awesome"で。

Activityはサンプルで使うことを想定してEmpty Activityあたりを選んでおきましょう。

サンプルモジュールの作成

自動で作られるappモジュールをサンプルに転用するため、ライブラリモジュールを作成する前に下準備をいくつかやっておきます。

最初にappモジュールをリネームします。

  1. appを右クリック
  2. Refactor
  3. Rename
  4. “Rename module” を選択してOKボタン押下
  5. モジュール名に “sample” と入力してOKボタン押下

と操作すると、appモジュールがsampleという名前になります。

続いてパッケージのリネーム。Awesomeライブラリ本体を “com.example.awesome” パッケージにしたいので、サンプルは “com.example.awesome.sample” にしましょう。

  1. src\main\javaにある “com.example.awesome"を右クリック
  2. New
  3. Package
  4. “sample"と入力してOKボタン押下

MainActivityをsampleパッケージに移動してからAndroidManifest.xmlを編集します。

  • manifestタグのpackageを"net.backport.simplefeedback"から"net.backport.simplefeedback.sample"に
  • activityタグのandroid:nameを”.sample.MainActivity"から”.MainActivity"に

また、build.gradleのapplicationIdを"net.backport.simplefeedback"から"net.backport.simplefeedback.sample"に修正します。

ここまでできたら一度”Clean Project” → “Rebuild Project"をしておきましょう。設定をミスっていたらgradleがエラーになるはずです。

ルートモジュールの名前を変えておきます。 setting.gradleに以下の1行を追加しましょう。

rootProject.name = ‘Awesome-parent’

ルートモジュールがAwesomeという名前なので、ライブラリにAwesomeという名前が付けられないんですね。なので、ルートモジュールの名前を変えておく、と。

最初からプロジェクト名を"Awesome-parent"にしておく手もありますし、ライブラリを"AwesomeLibrary"とかいう名前にする手もあります。この辺はお好みで。

ライブラリモジュールの作成

File → New → New Moduleと選択し、Create New Moduleウィンドウでは”Android Library”を選択してNextを押下します。

Application/Library Nameに"Awesome"と入力したらFinishを押下。

これで"sample”(サンプルプログラム)と”Awesome”(ライブラリ本体)の2つのモジュールを持ったAndorid Studioのプロジェクトが出来上がります。

実装しましょう

あとは粛々と実装するだけ。

sample側からライブラリを参照するには、build.gradleのdependenciesを定義してあげればOKです。

dependencies {
    ...
    compile project(':awesome')
    ...
}

これでaarなライブラリが作れるようになりました。 共通ロジックを個人的にまとめておくもよし、汎用的に作ってOSSとして公開するもよし、です。

自分の場合は作ってみたライブラリが出来上がってみたらイマイチで、結局お蔵入りしているわけですが...




関連(するかもしれない)記事


おススメ