6

Buduję aplikację na Androida z wieloma numerami productFlavors i za pomocą Facebooka SDK v4.1 do logowania i udostępniania zawartości. Problem polega na tym, że gdy próbuję zainstalować aplikację na urządzeniu, które ma już zainstalowaną tę samą aplikację (ale inny smak), powoduje to błąd. Nie pozwala mi zainstalować drugiej aplikacji, chyba że odinstaluję istniejącą.INSTALL_FAILED_CONFLICTING_PROVIDER z zestawem SDK Facebooka, gdy buduję wiele produktów Smaki

<provider android:authorities="com.facebook.app.FacebookContentProvider{my_app_id}" 
     android:name="com.facebook.FacebookContentProvider" 
     android:exported="true"/> 

Według tego document The android:authorities powinna być unikalna i muszę mieć wiele AUTHS aby osiągnąć to, co chcę robić. Jednak nie mogę mieć wielu AppIdów na Facebooku i zastanawiałem się, czy istnieje lepszy sposób na rozwiązanie tego problemu. Z góry dziękuję wszystkim, którzy mogą mi pomóc!

+0

'android: władze = "com.facebook.app.FacebookContentProvider {my_app_id}"' musi być unikalna. Wygląda na to, że inna aplikacja ma te same uprawnienia. Przeczytaj na http://stackoverflow.com/questions/21271246/install-failed-conflicting-provider-in-android –

+1

@PankajKumar Przeczytaj uważnie moje pytanie. –

+0

Czy masz teraz jakieś obejście tego problemu? – Wayne

Odpowiedz

-7
<provider android:authorities="com.facebook.app.FacebookContentProvider{app id here}" 
      android:name="com.facebook.FacebookContentProvider" 
      android:exported="true"/> 
+0

Jak to się różni od obecnej definicji dostawcy? – Lima

+0

Kopiuj wklejony ten sam kod, jaka jest różnica w kodzie pytania i rozwiązania – Pankaj

-1

Można to wykorzystać:

Manifest

<provider android:authorities="@string/facebook_app_authority" 
     android:name="com.facebook.FacebookContentProvider" 
     android:exported="true" /> 

Gradle

productFlavors { 
    flavor1 { 
     applicationId "com.id.flavor1" 
     versionCode 1 
     versionName "1.0.0" 
     resValue "string", "facebook_app_authority", "com.facebook.app.FacebookContentProvider0000000000000000" 
    } 
    flavor2 { 
     applicationId "com.id.flavor2" 
     versionCode 1 
     versionName "1.0.0" 
     resValue "string", "facebook_app_authority", "com.facebook.app.FacebookContentProvider0000000000000001" 
    } 
} 

Wymień 0000000000000000 do id App

3

Spróbuj poniżej:

Oczywisty

<provider android:authorities="com.facebook.app.FacebookContentProvider${facebookId}" 
     android:name="com.facebook.FacebookContentProvider" 
     android:exported="true" /> 
<meta-data 
     android:name="com.facebook.sdk.ApplicationId" 
     android:value="fb${facebookId}"/> 

Gradle

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.1" 
    defaultConfig { 
     applicationId "com.your.package" 
     minSdkVersion 15 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 

     manifestPlaceholders = [facebookId:"123456789"] 
    } 

    productFlavors { 
    debug { 
     applicationIdSuffix ".debug" 
     manifestPlaceholders = [facebookId:"1234"] 
    } 
    release { 
     applicationIdSuffix ".pro" 
     manifestPlaceholders = [facebookId:"123456789"] 
    } 
} 
+2

Świetna odpowiedź, jedno pytanie, dlaczego potrzebujesz "fb" przed fb $ {facebookId}? – AndroidRuntimeException