はじめに
Androidのアプリを作った当初、以下を参考にして、オープンソースライセンスの管理・表示を行っていました。(バージョンは 0.9.1
)
com.google.gms:oss-licenses を使ってオープンソースライセンスを表示する
久しぶりに 公式サイト を見たら、 バージョンが 0.9.3
と上がっていたので、そのアップデートをしようとしたところで少しつまずいたので、つまずいた点とそれを解消した方法を書いていきます。
新規で導入される方は 公式サイト の通りに記述すれば問題ありません。
バージョン 0.9.1 のとき
こう記述していました。
buildscript {
dependencies {
classpath 'com.google.gms:oss-licenses:0.9.1'
}
}
apply plugin: 'com.google.gms.oss.licenses.plugin'
dependencies {
implementation 'com.google.android.gms:play-services-oss-licenses:16.0.0'
}
Gradleのsyncでエラー
buildscript {
dependencies {
classpath 'com.google.gms:oss-licenses:0.9.3'
}
}
上記のように 0.9.1
を 0.9.3
に変えたところ、こんなエラーが出ます。
Gradle sync failed: Could not find com.google.gms:oss-licenses:0.9.3.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/com/google/gms/oss-licenses/0.9.3/oss-licenses-0.9.3.pom
- ...
クラスパス自体が変わっていることに気づきませんでした。。。
正しくは、こう書きます。
buildscript {
dependencies {
// ---------------- Before ----------------
// classpath 'com.google.gms:oss-licenses:0.9.3'
// ---------------- After -----------------
classpath 'com.google.android.gms:oss-licenses-plugin:0.9.3'
}
}
同様に、プラグインの指定も変わっています。
// ---------------- Before ----------------
// apply plugin: 'com.google.gms.oss.licenses.plugin'
// ---------------- After -----------------
apply plugin: 'com.google.android.gms.oss-licenses-plugin'
ビルド時にエラー Error: Duplicate resources
Gradleのsyncは解消ができ、そのままビルドをすると以下のエラーが起きました。
[raw/third_party_license_metadata] /Users/<name>/AndroidProject/<project>/app/src/main/res/raw/third_party_license_metadata [raw/third_party_license_metadata] /Users/<name>/AndroidProject/<project>/app/build/generated/third_party_licenses/res/raw/third_party_license_metadata: Error: Duplicate resources
[raw/third_party_licenses] /Users/<name>/AndroidProject/<project>/app/src/main/res/raw/third_party_licenses [raw/third_party_licenses] /Users/<name>/AndroidProject/<project>/app/build/generated/third_party_licenses/res/raw/third_party_licenses: Error: Duplicate resources
これは、プラグインが変わったことで、 third_party_license_metadata
とthird_party_licenses
のファイルが保存される場所が変わったために、重複エラーが起きています。
旧バージョン
- /Users/<name>/AndroidProject/<project>/app/src/main/res/raw/third_party_license_metadata
- /Users/<name>/AndroidProject/<project>/app/src/main/res/raw/third_party_licenses
新バージョン
- /Users/<name>/AndroidProject/<project>/app/build/generated/third_party_licenses/res/raw/third_party_license_metadata
- /Users/<name>/AndroidProject/<project>/app/build/generated/third_party_licenses/res/raw/third_party_licenses
旧バージョンのファイルは不要となるので、これら2ファイルを削除すれば直りました。
思ったこと
third_party_license_metadata
とthird_party_licenses
ともにビルド時に自動生成されるファイルですが、旧バージョンの場合は /app/src/main/res/raw 配下にあったため、他のrawファイルと混在して邪魔だと感じていました。
しかし、新バージョンでは app/build の配下に置かれたことで、 /app/src/main/res/raw に混在することなく、見通しが良くなったと思います。