Cordova tips - plugin に .aar を含める方法

phi phi on cordova

オレの Advent Calendar 2015 - Adventar の 21 日目です. Unity Ads の plugin を作っていてちょっと躓いたのでメモ

.aar とは

The 'aar' bundle is the binary distribution of an Android Library Project.

直訳すると, AAR バンドルは Android ライブラリプロジェクトのバイナリディストリビューションです. 的なことが書かれています.

まぁ要は Android のライブラリをまとめたファイルです. 中身はただの zip なので .aar を .zip に変更してダブルクリックすれば解凍して中身を見ることもできます.

.aar を cordova plugin に含めるには?

.aar を自分の Android プロジェクトで使う場合は, Android Studio でインポートすれば良いだけなので簡単です. ただ, cordova の plugin として作る場合はちょっと手間がかかります.

今回は, hoge.aar というファイルを plugin に含める方法を紹介したいと思います.

1. hoge.aar ファイルをプラグイン内に配置

android 専用になると思うので ./src/android/hoge.aar という形で配置します.

2. plugin.xml に <resource-file /> を追加

plugin.xml の <platform name=android">~</platform> を追加します.

<resource-file src="src/android/hoge.aar" target="libs/hoge.aar" />  

これで, このプラグインを追加した際に, プラグイン内の src/android/hoge.aar がプロジェクトの libs/hoge.aar としてコピーされます.

3. hoge.gradle を作る

ただ aar を追加しただけでは何も起きません. これをビルドするためにビルドファイル(.gradle)を作ります. 名前は hoge.gradle とします.

hoge.gradle

repositories{  
  jcenter()
  flatDir{
    dirs 'libs'
  }
}

dependencies {  
  compile(name:'unity-ads', ext:'aar')
}

android {  
  packagingOptions {
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE'
  }
}

flatDir.dirs には aar のあるディレクトリ名を, compile の name には拡張子を取り除いた aar ファイル名, ext には拡張子をそれぞれ記述します.

これで, プロジェクトにプラグインを追加した際にビルドが走るようになります.

Reference