#事象
開発時は問題なくビルドできたのだけど、APKを作成しようとしたら以下のようなエラーがでてしまい困った。
"Program type already present: com.google.gson.ExclusionStrategy"
#理由
そのプログラムはすでにある:gson
gsonは使っている。好きな方だし、build.gradle にも記載している。これが重複しているのが問題らしい。開発時は問題ないのになんでだろう?
#探査
下記コマンドを実行し、使用ライブラリの依存関係をみる。
./gradlew :app:dependencies
gsonで検索すると、retrofit, glide, chuck… 様々なライブラリで使われている。みんなも好きなんだな。
さまざまなバージョンが指定されてしまっており、このあたりが問題になっているのではないかと推測してみる。
#対処
とりあえず不要なライブラリの整理をしてビルドしてみたがだめだった。
次にretrofitやほかのライブラリ内でつかわれているgsonをexcludeしてみた
implementation('com.squareup.retrofit2:converter-gson:2.4.0') {
exclude group: 'com.google.code.gson', module: 'gson'
}
それでもだめだった…
#解決
なかばやけ気味にgson本体のimplementationも削除してみたらビルドできた。
念の為動作も確認してみたが問題はなさそう。まだだれかが依存しているのだろうか…。
とりあえず解決したし、いそいでいたこともあり今回はこれ以上は深掘りはしなかった。しかし依存関係を解消してくれるはずであるgradleに依存関係で転がされてしまった。機械め… という気持ちになりつつまだAIに仕事を奪われるような時代は遠いなとうっすら適当に思った。
以上でございます。