🎃
既にあるAARにJARを追加で含めたいときの build.gradle
仕事でちょっと作ってみたけど、秒でお役御免になったのでZennで供養します 🪦
どこかから拾ってきたAARパッケージにJARパッケージを追加したいときってありますよね(通常、ないです)
そんなときはこうします、というのを紹介します。
まずファイル構成としてはこんな感じにしておきます。
root/
├─ build.gradle
├─ aar-bridge/
│ ├─ build.gradle
│ ├─ foo-sdk.aar
│ ├─ bar-lib.jar // ←
│ ├─ baz-lib.jar // ←
├─ app/
│ ├─ settings.gradle
│ ├─ build.gradle
以下のような ./aar-bridge/build.gradle
を組みます。
plugins {
id "base"
}
def archiveSourceName = "foo-sdk.aar"
def archiveDestName = "foo-sdk_repacked.aar"
task archiveAar(type: Zip) {
group = "Build"
description = "Creates the aar archive."
archiveFileName = archiveDestName
destinationDirectory = project.projectDir
from zipTree(archiveSourceName)
into("libs") {
from fileTree(".").include("*.jar")
}
}
configurations.maybeCreate("default")
artifacts.add("default", archiveAar.archiveFile)
この解説のキモは↑のコードですが、AARの libs
フォルダに対して、追加したいjarを含んだ状態で再度zipしなおしています。
その後、 ./settings.gradle
では aar-bridge を参照させます。
include ':app'
include ':aar-bridge'
./app/build.gradle
の dependencies に書き足すような話もあるんですが、僕の環境では不要でした。
Discussion