Kurulum konsolda hata gösteriyor: KURULUM ÇALIŞMIŞ PROVIDER


165

Android SDK'daki NotesList örnek programını deniyorum. Programda küçük bir değişiklik yaptım, ancak düzenlenmiş sürümümü kurduğumda, orijinal notlar programı zaten cihaza yüklendiğinde yüklemeye çalıştığımda INSTALL_FAILED_CONFLICTING_PROVIDER mesajını konsola alıyorum. Benzersiz bir veritabanı yapmak için Sağlayıcı'da neyi değiştirmem gerekir? Orijinal notlar programını kaldırır ve düzenlenmiş sürümümü yüklersem iyi çalışır.

Yanıtlar:


198

Listelenen yetki android:authoritiesbenzersiz olmalıdır. Bu özellik için dokümantasyondan alıntı :

Çakışmaları önlemek için, yetki adları Java tarzı bir adlandırma kuralı kullanmalıdır (com.example.provider.cartoonprovider gibi). Genellikle, sağlayıcıyı uygulayan ContentProvider alt sınıfının adıdır.


5
@ CommonsWare Etiketimde android:authoritiesözellik kullandım AndroidManifest provider. Bu projeyi android kütüphane projem olarak kullandığım bu kütüphane projesini kullanarak birkaç proje geliştirdim. install_failed_conflicting_providerortak kütüphane projesi kullanırsak sorunun nasıl çözüleceği .
Jamal

1
@jamal: Android Studio gibi Android için Gradle kullanıyorsanız, bildirim birleştirme seçenekleri otorite dizesini uyarlamanıza olanak tanır. Aksi takdirde, <provider>kütüphaneyi manifest'ten kaldırın ve benzersiz bir yetki dizesiyle uygulama düzeyinde tanımlayın.
CommonsWare

4
@jamal: tools.android.com/tech-docs/new-build-system/user-guide/… - başka sorularınız varsa ve arama yoluyla yanıt bulamazsanız, lütfen yeni bir Yığın Taşması sorusu sorun.
CommonsWare

11
aynı sağlayıcı adına sahip iki projede kütüphane kullanırsanız, bu hataya neden olabilir
Mohammed Subhi Sheikh Quroush

1
Böyle bir şey yok android:authoritiesya <provider>da benim kütüphane manifest ve bu hatayı alıyorum.
lef

143

Farklı tatlara sahipseniz ve otorite adındaki çarpışmalardan kaçınmak istiyorsanız, bir applicationIdSuffixtür oluşturmak için bir sonuç ekleyebilir ve ortaya çıkan applicationIdifadeyi aşağıdaki gibi kullanabilirsiniz:

<...
 android:authorities="${applicationId}.contentprovider"/>

applicationIdHer ürün lezzet tanımında kendiniz tanımlayabilirsiniz . developer.android.com/studio/build/…
Jose L Ugia

Bunu yaparsanız, applicationIdyine de her lezzet için farklı yaratmak zorunda olduğunuz için farklı ürün tatlarını düzeltir . Farklı buildTypes'leriniz varsa, bunlar applicationIdarasında da farklı olmak istersiniz ve applicationIdSuffixözellik budur .
chubbsondubs

Teşekkürler, sabit kodlanmış bir android kullanarak: fileprovider yetkilileri tam olarak benim sorunum!
Bruce

Mükemmel cevap! Bunları eklemeden ve çalıştırmadan önce uygulamalarınızın eski sürümünü temizleyin.
Eren Utku

30

Bir kütüphane projesi içinde Google Haritalar + Google Play Hizmetleri kullanıyorsanız (özellikle yakın zamanda Eclipse'den Android Studio'ya taşındıysanız), kitaplığınızı kullanan bir uygulamayı çalıştırmaya çalıştığınızda, farklı bir uygulama kullanıyorsa, bu hatayla karşılaşabilirsiniz. aynı kitaplık zaten cihazınızda yüklü.

Düzeltme:build.gradle Kitaplığınızı kullanan her bir proje için dosyanın android bölümünde defaultConfig.applicationId öğesinin tanımlandığından emin olun

android {
    defaultConfig.applicationId = "com.company.appname"
}

Belirli bir uygulamanın paket adını kullanmanızı öneririm. Bu düzeltme ile sağlayıcı adları artık çakışma olmayacak ve uygulamanız beklendiği gibi çalışacaktır.

belirtiler

1.) Kullanıcılarınız, Play Store'dan uygulamanızı yüklerken korkunç "-505" yükleme hatasını görüyor.

2.) Android Studio [INSTALL_FAILED_CONFLICTING_PROVIDER] aracılığıyla kitaplığınızı kullanan ikinci bir uygulama yüklemeye çalıştığınızda bu hata mesajını göreceksiniz:

Çakışan Sağlayıcı

Konsolunuzda şöyle bir mesaj göreceksiniz:

Package couldn't be installed in /data/app/com.company.appname-1
com.android.server.pm.PackageManagerException: 
Can't install because provider name 
com.google.android.gms.measurement.google_measurement_service 
(in package com.company.appname) is already used by
com.company.otherInstalledAppName

Düzeltme, defaultConfig.applicationId build.gradledosyasının kitaplığınızı kullanan her proje için dosyanın android bölümünde tanımlandığından emin olmaktır

android {
    defaultConfig.applicationId = "com.company.appname"
}

Orijinal hata raporunda daha fazla okuma bulunabilir: Sayı 784: Aynı yetki sağlayıcı adını kullanan birden fazla uygulama


Projelerimi Eclipse'den Android Studio'ya taşıdıktan sonra bu hatayla karşılaştım ve bu ipucu sorunu çözdü. Teşekkürler
Philippe Girolami

@PhilippeGirolami "sadece" kesin. Çok büyük bir projenin Eclipse'den Studio'ya tamamen geçişi yaklaşık bir ay sürdü ve şimdi Eclipse'deki 10-15 saniyeye kıyasla 4+ dakikalık inşa süresiyle cezalandırıldık.
DiscDev

@PhilippeGirolami android studio 2.0 yavaşlığı gidermek için özel olarak üretilmektedir - beta 5 üzerindedir. Ancak, beta stüdyo yazılımını kullanmak kendi sorumluluğunuzdadır, bazen harika çalışır, bazen korkunçtur ve gecenizi mahveder.
DiscDev

27

Bu, uygulamanızın eski bir sürümü yüklüyse ve (destek) kitaplığında veya manifest dosyasında değişiklik yaptığınızda da olabilir. Eski uygulamaları cihazınızdan silmek ( Settings --> Application --> <your application> --> Uninstall) sorunu çözecektir.


1
Burada aynı. Genymotion sanal cihazları kullanıyordum ve daha önce kurulmuş olan uygulamayı kaldırmak zorunda kaldım.
ibaralf

23

Facebook SDK kullanıyorsanız sorun Facebook sağlayıcısı için sağladığınız "otoriteler" değerinde olabilir.

DEĞİŞTİR -

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

İLE ->

<provider
        android:name="com.facebook.FacebookContentProvider"
        android:authorities="com.facebook.FacebookContentProvider[YOUR_APP_ID]"
        android:exported="true" />

defaultConfig.ApplicationIdAyrıca diğer yanıtlarda önerildiği gibi değiştirmeniz gerekebilir .


upvoted, bunu kullanmanızı öneririz: android: authority = "$ {applicationId} .com.facebook.FacebookContentProvider"
justinkoh 15:09

15

Paketler yeniden adlandırıldıktan sonra aynı hata oluşabilir. android:authoritiesAndroidManifest.xml dosyasından string.xml dosyasındaki değeri kontrol edin .

<provider
        android:authorities="@string/content_authority"
        android:name=".data.Provider"
        ... />

String.xml dosyasında, bildirimde bildirilen paket adınızla aynı olmalıdır.

<string name="content_authority">com.whatever.android.sunshine.app</string>

Bu da iyi bir çözümdür, ancak uygulamadaki her sağlayıcı için değerlerde yeni dize oluşturmak zaman + alan gerektirir.
lukassos

8

Manifestte bildirdiğiniz Otorite + Sağlayıcı adı


7

Uygulamanın paket adını değiştirmeye çalıştığımda temelde bu benimle oldu.

Böylece, emülatörde aynı uygulama daha önce kurulmuştu. Paket adını değiştirdikten sonra uygulamayı yüklemeye çalıştığımda, yetki zaten cihazdaki eski uygulama tarafından kullanılıyor dedi.

Uygulamayı kaldırdıktan sonra sorunumu çözdü.

Ayrıca, Yetki adı her zaman şöyle olmalıdır your.package.name.UNIQUENAME:;

misal :

  <provider
        android:name="com.aviary.android.feather.cds.AviaryCdsProvider"
        android:authorities="your.package.name.AviaryCdsProvider"
       />

Sağlayıcıya 'tools: replace = "android: authority"' ekledim.
Christine

7

Birkaç uygulamada bir kütüphane kullandığımda da benzer bir sorun yaşadım. AndroidManifest.xml dosyanızı aşağıdaki tam sağlayıcı beyanıyla güncellemeniz gerekiyordu.

<manifest ...>
    <application ...>
        <provider android:name="android.support.v4.content.FileProvider" android:authorities="${applicationId}.here.this.library.provider" android:exported="false" android:grantUriPermissions="true" tools:replace="android:authorities">
        </provider>
    </application>  
</manifest> 

6

Birçok çözüm denedim ama çözüm bulamadım ... ama bu bağlantı bana yardımcı oldu ... Sorun hakkında ayrıntılı bilgi vermek istiyorum ...

Enstrümanlı test senaryoları çalıştırıyordum, bu yüzden uygulamam başlatıcıda görünmüyordu ... ancak yüklendi ve Aynı İçerik Sağlayıcı'yı kullandı . Yani, bir şekilde kaldırmalıyım. YaniSettings -> Application Manager -> All Downloaded Apps -> uninstall all apps from your current development package

Şimdi koşmaya çalışın ... Bu işe yarayacak ...


6

Simgesini "Kaldır" a sürükleyerek uygulamayı kaldırmanın sorunu çözeceğini düşündüm, ancak çözmedi.

Sorunu çözen şey şudur:

  1. Ayarlara git
  2. Uygulama Seçin
  3. Uygulamanızı bulun (evet, hala burada bulmak için şaşırdım!) Ve basın
  4. Sağ üstteki 3 noktaya basın
  5. " Tüm kullanıcılar için kaldır " ı seçin

Tekrar deneyin, şimdi çalışmalı.


5

Eğer sağlayıcı etiketi içine yönelik uygulama çek içine Facebook kullanıyorsanız AndroidManifestdosya ve kontrol sizin project Idiçin doğru olanandroid:authorities

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

4

Bu sorunla karşılaştı.

Çözen :

1 - AndroidManifest.xml dosyasını açın

2 - ctrl + f "sağlayıcıyı" bul

3 - sağlayıcıyı bulun ve kök dizin adınızı orada güncelleyin.

proje yürütmek. umarım sorun giderilecektir!


2

komut ile adb kullanarak yükleme ./adb install -r abc.apksorunu çözer (cihaz daha yüksek uygulama sürümüne sahip olsa bile üzerine yazılır)


1

Xamarin üzerindeyseniz ve bu hatayı alırsanız (muhtemelen Firebase.Crashlytics nedeniyle):

INSTALL_FAILED_CONFLICTING_PROVIDER
Package couldn't be installed in [...]
Can't install because provider name dollar_openBracket_applicationId_closeBracket (in package [...]]) is already used by [...]

Belirtildiği gibi burada , sen Xamarin.Build.Download güncellemeniz gerekir:

  1. Nuget Paketini 0.4.12-preview3 olarak indirin.
    • Mac'te, kontrol etmeniz gerekebilir Göster ön sürüm paketleri içinde Ekleme Paketleri penceresine
  2. Visual Studio'yu kapatın
  3. NuGet Paketleri'nin tüm önbelleğe alınmış konumlarını silin:
    • Windows'da, Visual Studio'yu açın ancak çözümü değil:
      • Araçlar -> Seçenek -> Nuget Paket Yöneticisi -> Genel -> Tüm Nuget Önbelleklerini Temizle
    • Mac'te aşağıdaki klasörleri silin:
      • ~/.local/share/NuGet
      • ~/.nuget/packages
      • packages çözümdeki klasör
  4. Çözümdeki bin / obj klasörlerini silme
  5. Çözümü Yükleyin
  6. Nuget Paketlerini Çözüm için Geri Yükleme (otomatik olarak çalıştırılmalıdır)
  7. yeniden inşa etmek

0

Android cihazımda aynı uygulama yüklemesinin farklı lezzetleri vardı . Bu bana INSTALL FAILED CONFLICTING PROVIDER hatası veriyor . bu yüzden aynı uygulamanın tüm lezzetlerimi kaldırıyorum. ve denedi

adb install -r /Users/demo-debug-92acfc5.apk

Sorunumu çözdü.


0

"Com.example" paket adını, uygulamayı çalıştırdıktan sonra uygulamayı çalıştırdığınız cihazdan kaldırabilirsiniz. Bu benim için çalıştı

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.