Android - INSTALL_FAILED_CONFLICTING_PROVIDER 及 AppMeasurementContentProvider 問題

摘要:Android - INSTALL_FAILED_CONFLICTING_PROVIDER 及 AppMeasurementContentProvider 問題

這個問題在於,我們Mainfest並沒有任何的ContentProvider 

但卻在安裝時出現了INSTALL_FAILED_CONFLICTING_PROVIDER的問題。

而且這個問題,就在於自己有兩份Android App ,都用同樣的google play service 而且這google play service 還要是compile 'com.google.android.gms:play-services-gcm:8.1.0'

才有可能有這種見鬼的問題。

為什麼,砍掉另一個app,另一個app就能安裝,

在google play service ,在build後,會偷偷幫你加上 AppMeasurementContentProvider  的 mainfest 宣告。

結果兩隻app就有相同的content provider了。

但google沒這麼笨吧(但我覺得有點笨)

不然這東西要怎麼給大眾使用呢?

一定有哪邊設定沒設好。

後來靈感一來。

https://github.com/googlesamples/google-services/blob/master/android/gcm/app/build.gradle

為什麼他就可以,我們就不行呢?

他也用一樣的google play service,

我看到一個關鍵點。

android {
    ...
 
    defaultConfig {
        applicationId "gcm.play.android.samples.com.gcmquickstart"
        ....
    }
    ...
}
 
就在那個

applicationId "gcm.play.android.samples.com.gcmquickstart"

這個加上去之後,google就會幫你偷偷的加在mainfest加上 applicationId

        <provider
            android:name="com.google.android.gms.measurement.AppMeasurementContentProvider"
            android:authorities="{your applicationId}.google_measurement_service"
            android:exported="false" />
 
這樣provider就不會衝突了。
真是一個很難很難處理的問題。