【Android】Gradleのバージョンを上げたら広告関連のManifest merger failedが出たときの対処法
スポンサーリンク

Gradleのバージョンを上げたらManifest merger failedエラーになったろきの解決方法

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

ヒーラー
Gradleのバージョンを上げたら、com.google.android.gms:play-services-ads-liteに関するエラーが発生した

はじめに

AndroidStudioのバージョンアップに伴い、Gradleもバージョンアップ

久しぶりにアプリのアップデートが必要になったため、しばらく放置していたソースコードを触るとともに、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" />


スポンサーリンク

Twitterでフォローしよう

おすすめの記事