巨大な aar を分割し、ビルド時に復元する
こんなときに
- Android アプリ開発で、aar 形式で提供されるライブラリーを使用しているが、aar ファイルが巨大すぎてそのまま commit & push すると GitHub に怒られるとき
どうする
- aar ファイルを分割した状態で Git にコミットし、gradle でアプリをビルドする時に自動的に元の aar ファイルが復元される様にする
くわしく
普通に aar ファイルをライブラリーとしてインポートすると、build.gradle ファイルは以下の様になってるはずです。
configurations.maybeCreate("default")
artifacts.add("default", file('foo.aar'))
これを、以下の様に変更します。(ファイル名 foo.aar
は適宜調整のこと)
plugins {
id "base"
}
task archiveAar(type: Zip) {
group = "Build"
description = "Creates the aar archive."
archiveFileName = "foo.aar"
destinationDirectory = project.projectDir
inputs.files {
fileTree(".") {
include "foo.aar.*"
}
}
inputs.files.each {
from zipTree(it)
}
}
configurations.maybeCreate("default")
artifacts.add("default", archiveAar.archiveFile)
さらに、aar ファイルを一旦 unzip し、出てきたファイル群を適当な複数の部分集合に分割したあと、それぞれを zip ファイルとして圧縮し直します。
圧縮後のファイル名は include "foo.aar.*"
のところにマッチする様に foo.aar.1
, foo.aar.2
, ... とかそんな感じにしておきます。
元の aar ファイル内のディレクトリー構成が新しい zip ファイル内でも保たれる様に気を付けてください。
最後に、分割後のファイルと build.gradle を Git にコミットして完了です。(GitHub に push した時に怒られない様にするには、分割 zip 後の各ファイルが 50 MB 未満となる様にすべきです。)
あとは普通にアプリをビルドすれば OK です。
(初回ビルド時のみ、まだ aar ファイルが復元されてないためにビルドが失敗することがあります。その場合は先に gradle archiveAar
を単体で実行すると aar ファイルが生成されます)
筆者環境は Gradle バージョン 6.3 です。他のバージョンの Gradle では結果が異なる可能性があります。
Author And Source
この問題について(巨大な aar を分割し、ビルド時に復元する), 我々は、より多くの情報をここで見つけました https://qiita.com/magicant/items/88edd2880a5ef3797217著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .