
Gradleのバージョンを上げたらManifest merger failedエラーになったろきの解決方法
GradleおよびAGP(Android Gradle Plugin)のバージョンアップ発生したadservices関連の「Manifest merger failed」エラーを解決する方法

はじめに
久しぶりにアプリのアップデートが必要になったため、しばらく放置していたソースコードを触るとともに、Gradleのバージョンも 8.2 から 8.6 へアップデートしました。
gradle-wrapper.propertiesは以下のとおりです。
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip
また、サードパーティーのライブラリも合わせてアップデートしました。
app/build.gradleのdependencies内の関係しそうなライブラリは以下のとおりです。
- implementation 'com.google.android.gms:play-services-ads:23.0.0'
+ implementation 'com.google.android.gms:play-services-ads:23.2.0'
問題点
ビルドしたところ以下のエラーが発生しました。
Manifest merger failed : Attribute property#android.adservices.AD_SERVICES_CONFIG@resource value=(@xml/gma_ad_services_config) from [com.google.android.gms:play-services-ads-lite:23.2.0] AndroidManifest.xml:92:13-59
is also present at [com.google.android.gms:play-services-measurement-api:22.0.2] AndroidManifest.xml:32:13-58 value=(@xml/ga_ad_services_config).
Suggestion: add 'tools:replace="android:resource"' to <property> element at AndroidManifest.xml to override.
アプリで使用している広告(AdMob)に関するエラーです。
AndroidManifest.xmlファイルにおいて、AdMobとGoogleサービスに関するエラーだということはわかります。
Suggestionとして、<property>タグに'tools:replace="android:resource"'を追加してオーバーライドすれば解決できるということですが、具体的な記述方法がわかりません。
これらの項目において、打ち消し線が引かれていることがわかります。
対処方法
これは、AdMobとGoogle Servicesライブラリの既知のバグのようです。
修正されるまでの対処法が以下のGoogle IssueTrackerページで書かれています。
https://issuetracker.google.com/issues/327696048
修正内容は以下のとおりです。
AndroidManifest.xmlファイルの<application>タグ内に、<property>タグを追加します。
<manifest ...>
...
<application ...>
...
<!-- 以下追加 -->
<property
android:name="android.adservices.AD_SERVICES_CONFIG"
android:resource="@xml/gma_ad_services_config"
tools:replace="android:resource" />
...
</application>
</manifest>
問題の解説によると、以下ということでした。
AdMobとGoogleサービスのマニフェストの競合に関連しているように見えるため、この問題をどこで報告できるかわかりません。しかし、この問題は、Android Studio IguanaとAGPを8.2.2から8.3、Gradleを8.2から8.4に更新した後に現れます。
再現する手順:
Android Studio Iguana | 2023.2.1 を使う
AGP 8.3を使用する
AdMob 22.6.0を使用する
Googleサービス4.4.1を使用する
私の環境では以下のとおりで再現しました。
Android Studio Jellyfish | 2023.3.1 を使う
AGP 8.4.2を使用する
AdMob 23.2.0を使用する
Googleサービス4.4.2を使用する
この環境においても、記載のとおりの修正方法で解決することができました。
AndroidManifest.xmlファイルの<application>タグ内に、以下<property>タグを追加
<property
android:name="android.adservices.AD_SERVICES_CONFIG"
android:resource="@xml/gma_ad_services_config"
tools:replace="android:resource" />