Kaldırmadan INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES ile nasıl başa çıkılır?


277

Bir apk yeniden yüklemeye çalıştım

$adb install -r new.apk

Ve hatayı gösterir:

Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]

Bir çözüm, işe yarayan new.apk dosyasını kaldırmak ve yüklemek.

Ama bir apk yeniden yapıp kaldırma olmadan yeniden yükleyip kuramayacağımı merak ediyorum. Örneğin. AndroidManifest.xml dosyasındaki bazı yapılandırmaları değiştirin veya APK'yı vb. imzalamayın.

Bana "INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES" in tüm anlamını söyleyebilirseniz çok seviniriz.


Apk'nizi gerçek bir cihazda çalıştırarak problemi çözmeyi deneyin, her zaman benim için çalışıyor
Kyle

Benim için işe yaramıyor. ^ @ Mr.Derpinthoughton
Crime_Master_GoGo

Bu durum, uygulama iki kez imzalandığında ve yükseltme işlemi ters sırada imzalandığında da gerçekleşebilir. Bu konuda daha fazla bilgi için stackoverflow.com/a/13618894/5276890 adresine bakın .
Roy Falk

Yanıtlar:


319

Bu, uygulamanızın (geliştirme makinenizde) yeni kopyasının, uygulamanızın eski kopyasından (cihaza / öykünücüye yüklenen) farklı bir imza anahtarıyla imzalandığı anlamına gelir. Örneğin, bu bir aygıtsa, eski kopyayı farklı bir geliştirme makinesinden (örneğin, başka bir geliştiricinin makinesinden) geçirmiş olabilirsiniz. Ya da eskisi üretim anahtarınızla ve yenisi de hata ayıklama anahtarınızla imzalanır.


6
@atourney: Önceki makinenin anahtar deposunu (örn. debug.keystore) yeni makinenize kopyalamanız gerekir .
CommonsWare

12
debug.keystoreProje dizininizde olmadığını unutmayın . Normalde ~/.android/dizininizde bulunur. (bkz. developer.android.com/guide/publishing/… )
ohhorob

3
Hata ayıklama paketine nasıl farklı bir isim verilebilir? (örn. {PRODUCT_NAME} Geliştirme)
sandstrom

6
@ChristianBongiorno: İmza anahtar depolarınızı senkronize edin (örn debug.keystore.). Ana anahtar deponuz olmak için birini seçin, mevcut anahtar deposunu değiştirerek diğer tüm geliştirici makinelerine kopyalayın.
CommonsWare

2
Dosyayı da kopyaladıktan sonra projenizi yeniden oluşturmayı unutmayın. Dosyaları taşıdım ve uygulamayı cihaza tekrar gönderdim (ancak yine de eskiyi kullanıyordu debug.keystore). Projeyi yeniden oluşturduğumda (Android Studio'da Build-> Rebuild kullanarak) anahtarlar senkronize edildi.
Benjamin Kaiser

48

Yeni bir Xoom üzerinde test yaparken bununla karşılaştım. Uygulamamı daha önce Marketplace'ten yüklemiştim. Daha sonra uygulamanın yeni bir sürümünü test etmeye çalışırken bu hatayla karşılaştım.

Marketplace üzerinden yüklenen uygulamayı kaldırarak düzelttim (sadece tutun ve çöp kutusuna sürükleyin). Daha sonra geliştirme sürümümü herhangi bir sorun olmadan dağıtabildim.


12
evet, kaldırma işlemi bu izin sorununu çözecektir. Bunu kaldırmadan çözüp çözemeyeceğimi merak ediyordum
Johnny

Yeni bir telefon aldım ve bunu unutmuştum. Bunu iki kez nasıl işaretlerim :)
Anthony Horne

22

Bu, ekipteki başka bir geliştirici, uygulamayı dağıtmaya çalıştığım donanım cihazına kurduğunda bana oldu. Uygulamayı donanımdan kaldırmak sorunumu çözdü.


16
Harika! Komuttan sonra çalıştı adb uninstall <package name>. Teşekkürler.
Paul

Daha eşsiz bir durum vardı, ama bu cevap çözüme götürdü. Yerel olarak cordova CLI üzerinden yüklü bir uygulamam vardı ve ayrıca PG derlemesinden yüklenmiş bir uygulamam vardı. Hatanın ortadan kalkması için her iki uygulamayı da kaldırmam gerekiyordu.
DemitryT

@Paul Ekselansları - Kral Paul I, ben asıl soru soran değilken, emriniz benim için çalıştı (ve şüphesiz başkaları yorumunuzun nasıl değerlendirildiğine bakıldığında). Bunu cevap olarak yayınlamanızı önerebilir miyim?
barlop

1
@barlop: Bu sorunla karşılaşabilecek başkaları için daha görünür olması için komutla bir cevap gönderdim. Teşekkürler.
Paul

3
Bu cevabın neden upvotes olduğunu anlamıyorum. "KURULUM OLMADAN" açıkça söylüyor! -
Hıristiyan

20

Bu, adb kullanarak uygulamayı cihazdan kaldırma komutudur:

adb uninstall <package name>

8
Soru, sorunun kaldırılmadan nasıl çözüleceği ile ilgilidir.
Janaka Bandara

2
Bu cevabın neden upvotes olduğunu anlamıyorum. "KURULUM OLMADAN" açıkça söylüyor!
Hıristiyan

Paketi tutarsız sertifika ile değiştirmek için pm bayrağı yok, değil mi? Güvenlik niyeti?
JohnyTex

9

Gizemli orijinal APK kaldırıldıktan sonra bile bu hatayı aldım. Sonunda Nexus 7 cihazımda test için birden fazla kullanıcı kurduğumu ve uygulamanın hala diğer kullanıcılardan biri için yüklendiğini fark ettim. Tüm kullanıcılar için kaldırdığımda hata ortadan kalktı.


5

Bir güncellemeyi kodlarken paket adını değiştirdim, böylece yüklü eski sürümü silmeden Eclipse aracılığıyla cihazımda hata ayıklayabilirim. Yeniden yüklemeye çalışırken kullandığım paket adını geri döndürmeden aynı hatayı aldım. Aynı paket adını kullanarak yeniden yükleme başarılı oldu.


3

Eski yapıyı cihazdan silin ve tekrar yükleyin. Device.keystore cihazda zaten mevcut olduğundan, sadece derlemeyi kaldırın ve APK'yı yeniden yükleyin.

Teşekkürler


Evet, CommonsWare'in cevabı daha iyi ve açık bir cevap. Teşekkürler
tres.14159

3

Benzer hatayı aldığım başka bir kullanım durumu ile karşılaştım. İlk başta hatayı aldım, panikledim ve kaldırdım /data/data/{package.name} Bundan sonra denedim ve sorunum hala mevcuttu. Sonra kaldırmayı denedim, başarısız oldu.

Daha sonra içinde bulunan apk dosyasını kaldırdım /system/app(gerekli root erişimi) ve kaldırmayı denedim ve başarılı oldu.

Bundan sonra apk'yi yeniden yüklemeyi denedim, işe yaradı.


1

Değer için, Cordova projeme yeni bir eklenti ekledikten sonra bu sorunla karşılaştım. Cordova'yı USB üzerinden doğrudan cihaza kuruyor ve yüklüyordum.

Uygulamayı cihazdan kaldırarak düzelttim ve bir sonraki dağıtımda sorun olmadı.


1

Çıktı Penceresinde "Başarısızlık [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]" hatasıyla Andorid bir cihaza veya taklitçiye başarısız bir dağıtımla karşılaşırsanız, cihazdaki veya taklitçideki mevcut uygulamayı silin ve yeniden konuşlandırın. Debug derlemeleri bir debug sertifikası kullanırken Release derlemeleri yapılandırılmış sertifikanızı kullanır. Bu hata, cihazda yüklü uygulama sertifikasının yüklemeye çalıştığınız sertifikanın farklı olduğunu bilmenizi sağlar. Geliştirme dışı (uygulama mağazası) senaryolarda, bu, cihaza yüklenmesi güvenli olmayan bozuk veya başka şekilde değiştirilmiş bir uygulamanın göstergesi olabilir.


0

Yukarıdan hiçbir şey benim için işe yaramadı. Benim için sorun, android-support-v7-appcompat için Java Derleme Yolumda yanlış kaynağım olmasıydı. Proje> Yol Oluştur> Yol Oluştur'u Yapılandır> seçeneğine gidin. Kaynak sekmesi altında android-support-v7-appcompat / gen, android-support-v7-appcompat / libs ve android-support-v7-appcompat / src ve başka hiçbir şeye sahip olduğunuzdan emin olun. Tamam'a tıklayın, işe yarayacaktır.


0

Bugün aynı hatayla karşılaştım, ancak sorun tam olarak aynı değildi. VirtualBox yüklü Android ile ADB kullanıyorum . Uygulamamın farklı sürümlerini yüklemeye çalıştım (imzalı / imzasız, hata ayıklama / bırakma modu) ve alternatif olarak iki hata aldım: INSTALL_FAILED_UID_CHANGEDve INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES.

Şimdi, bakarken /data/data/{package.name}, uygulamayı kaldırdıktan sonra hala orada olan bir sürü dosya buldum. rm -rfOnları başarı olmadan denedim : G / Ç hataları aldım.

Bunun çözümü şuydu:

  • VM'yi kapatma
  • VDI görüntüsünü vdfuse(okuma / yazma) ile bağlayın
  • Onarım Partition1ile resim dosyasıe2fsck
  • VM'yi çıkarın ve yeniden başlatın

0

Simülatörün çalıştığını ve adb'ın bunu yüklemeye çalıştığını anlayana kadar aynı sorunu yaşadım


0

Doğrulama paketin adını temel aldığından, config.xml veya manifest dosyanızın içindeki paket adını istediğiniz başka bir adla değiştirebilirsiniz.

Uygulamanızı yayınlarken adı değiştirmeyi unutmayın !


0

Genymotion üzerinde gradle görevi connectedDebugAndoidTest(veya connectedAndroidTest) yürütmeye çalışırken bu sorunu yaşadım . Üzerine Running Normal emülatörü sorunu çözdü.


Ben de aynı duruma (Genymotion ile test) alıyordum. Test paketinin imzasıyla bir çelişki olduğu ortaya çıktı. Test paketini kaldırmak sorunu çözdü.
D-C0d3r

0

Uygulamanızın başka bir hesap tarafından yüklendiğini düşünüyorum. (Çoklu hesap modu özelliği) Uygulamayı, Ayarlar> Uygulamalar> "uygulama adı"> Kaldır'dan kaldırabilirsiniz

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.