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

メモ2ブログ

メモtoウェブログ。旧ブログはこちら。 http://sakebook.blogspot.jp/

Android Studioでライブラリを取り込む3つの方法

android Gradle git

以下の3種類があります。

A. libs配下にjarを配置
B. ライブラリのprojectフォルダを読み込む
C. 外部のリポジトリからローカルに取り込む

それぞれの具体的な手順と、長所と短所を上げていきます。

A. libs配下にjarを配置

  • 広告のSDKなどを組み込む際によく用いる。

手順

jarのファイル名はandroid-support-v4.jarとする。

  • ${module}/libsフォルダを作成する
    • moduleは適宜変更してください。
  • jarファイルを${module}/libsフォルダに配置する
  • ${module}/build.gradleにjarのパスを指定するため以下のように追記
dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile files('libs/android-support-v4.jar')
}

長所

  • どこにもアップロードされていないライブラリを使うことが出来る

短所

  • aarファイルは取り込めない

B. ライブラリのprojectフォルダを読み込む

  • facebook sdkなどを組み込むときに用いる。
  • 今回はGit Submoduleを利用して、ライブラリを取り込む。
    • 取り込むライブラリはJohnPersano/SuperToastsを使わせてもらいました。
    • ライブラリプロジェクトが手元にある場合は、dependenciesの追加からでOKです。

手順

  • submoduleの設定
    • プロジェクトルートで、次のようにコマンドを入力すると、.gitmodulesというファイルが作られます。
$ git submodule add https://github.com/JohnPersano/SuperToasts SuperToasts
  • submoduleの初期化
    • 参照しているリポジトリのソースをローカルに落とします。
    • 今回はSuperToastsというフォルダが生成され、そこにソースが取り込まれます。
$ git submodule init
$ git submodule update
  • ${module}/build.gradleにプロジェクトのパスを指定するため以下のように追記
dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile files('libs/android-support-v4.jar')
    compile project(':SuperToasts:supertoasts')
}
  • Gradleのビルド対象にするためsettings.gradleに、以下のように追記
include ':app', ':SuperToasts:supertoasts'
  • ':SuperToasts:supertoasts'は、Supertoasts/supertoastsを見るという意味です。
    取り込むライブラリプロジェクトや、既存のプロジェクトの構成によって異なります。

長所

  • プロジェクトごと取り込むので、ライブラリの内容の変更が可能である。

短所

  • 依存関係の解決はしてくれない
    • ビルド時にAndroidManifest.xmlなどが競合する場合があります。

C. 外部のリポジトリからローカルに取り込む

  • Maven Centralなどにjarやaarが公開されている場合に用いることが出来る。

手順

  • ${module}/build.gradleリポジトリを指定する記述を追記する。
dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile files('libs/android-support-v4.jar')
    compile project(':SuperToasts:supertoasts')
    compile 'com.github.sakebook:DialogHelper:0.1.1@aar'
}
  • com.github.sakebookはGroupId
  • DialogHelperはArtifactId
  • 0.1.1はVersion
    • aarファイルの場合は@aarをつける。

長所

  • 簡単!
  • バージョンの指定が出来る
  • 依存関係の解決をしてくれる

短所

  • 公開されていなければ使えない
  • カスタマイズできない

まとめ

それぞれ使えるときと使えないときがあります。
今後はaarのライブラリが増えていくと思うので、Cの方法が簡単かつ無難です。
しかし、ライブラリを少しカスタムしたいときなどは、Bの方法を取るのが良いです。
その場合は、他のライブラリ等と競合する場合があるので、excludeの指定が必要です。

サンプルコードは以下にあるので、ご自由にお試しください。
sakebook/android-sample-libraries

参考

JohnPersano/SuperToasts / GitHub

Git submodule の基礎 / Qiita

第55章 ビルドのライフサイクル / Gradle 日本語ドキュメント

githubをMavenリポジトリとしてAndroidライブラリプロジェクト(aar)をデプロイして使用する / u1aryzの備忘録とか