Bagaimana cara menangani INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES tanpa menghapus instalan?


277

Saya mencoba menginstal ulang apk

$adb install -r new.apk

Dan itu menunjukkan kesalahan:

Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]

Salah satu solusinya adalah menghapus dan menginstal new.apk, yang berfungsi dengan baik.

Tetapi saya bertanya-tanya apakah saya dapat membangun kembali apk dan menginstal ulang tanpa menghapus instalasi. Misalnya. ubah beberapa konfigurasi di AndroidManifest.xml, atau tidak masuk APK, dll.

Akan sangat dihargai jika Anda dapat memberi tahu saya seluruh arti dari "INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES".


Coba cari masalah dengan menjalankan apk Anda di perangkat yang sebenarnya, itu selalu bekerja untuk saya
Kyle

Itu tidak bekerja untuk saya. ^ @ Mr.Derpinthoughton
Crime_Master_GoGo

Ini juga dapat terjadi ketika aplikasi ditandatangani dua kali dan pemutakhiran ditandatangani dengan urutan terbalik. Lihat stackoverflow.com/a/13618894/5276890 untuk info lebih lanjut tentang ini.
Roy Falk

Jawaban:


319

Ini berarti salinan baru aplikasi Anda (pada mesin pengembangan Anda) ditandatangani dengan kunci penandatanganan yang berbeda dari salinan lama aplikasi Anda (diinstal pada perangkat / emulator). Misalnya, jika ini adalah perangkat, Anda mungkin telah meletakkan salinan lama dari mesin pengembangan yang berbeda (misalnya, beberapa mesin pengembang lain). Atau, yang lama ditandatangani dengan kunci produksi Anda dan yang baru ditandatangani dengan kunci debug Anda.


6
@atourney: Anda harus menyalin keystore mesin sebelumnya (mis., debug.keystore) ke mesin baru Anda.
CommonsWare

12
Perhatikan bahwa debug.keystoretidak ada dalam direktori proyek Anda. Biasanya di ~/.android/direktori Anda . (lihat developer.android.com/guide/publishing/… )
ohhorob

3
Bagaimana orang bisa memberikan paket debug nama yang berbeda? (mis. {PRODUCT_NAME} Dev)
sandstrom

6
@ChristianBongiorno: Menyinkronkan keystores penandatanganan Anda (mis., debug.keystore). Pilih satu untuk menjadi master keystore Anda, salin ke semua mesin pengembang lainnya, ganti keystore yang ada.
CommonsWare

2
Jangan lupa untuk membangun kembali proyek Anda setelah menyalin file juga. Saya memindahkan file dan mengirim kembali aplikasi ke perangkat (tetapi masih menggunakan yang lama debug.keystore). Setelah saya membangun kembali proyek (menggunakan Build-> Rebuild di Android Studio) kunci-kunci itu kemudian disinkronkan.
Benjamin Kaiser

48

Saya mengalami ini saat menguji pada Xoom baru. Saya sebelumnya telah menginstal aplikasi saya dari Marketplace. Kemudian ketika mencoba menguji versi baru dari aplikasi saya mengalami kesalahan ini.

Saya memperbaikinya dengan menghapus aplikasi yang diinstal melalui Marketplace (cukup tahan dan seret ke tempat sampah). Setelah itu saya dapat menggunakan versi pengembangan saya tanpa masalah.


12
ya, uninstall akan menyelesaikan masalah izin ini. Saya bertanya-tanya apakah saya bisa menyelesaikan ini tanpa mencopot pemasangan
Johnny

Punya telepon baru dan lupa tentang ini. Bagaimana saya menandai ini dua kali :)
Anthony Horne

22

Ini terjadi pada saya ketika pengembang lain di tim membangun aplikasi kami pada perangkat perangkat keras yang saya coba gunakan. Menghapus instalan aplikasi dari perangkat keras memperbaiki masalah saya.


16
Bagus! Bekerja sesuai perintah adb uninstall <package name>. Terima kasih.
Paul

Saya punya kasus yang lebih unik, tetapi jawaban ini mengarah pada solusi. Saya memiliki aplikasi yang diinstal melalui Cordova CLI secara lokal dan juga yang diinstal dari PG. Saya harus mencopot kedua aplikasi agar kesalahannya hilang.
DemitryT

@Paul Yang Mulia - Raja Paul I, sementara saya bukan penanya asli, perintah Anda bekerja untuk saya (dan tidak diragukan lagi, orang lain diberikan seberapa tinggi komentar Anda). Dapatkah saya menyarankan Anda memposting itu sebagai jawaban?
barlop

1
@barlop: Saya mengirim jawaban dengan perintah hanya agar lebih terlihat oleh orang lain yang mungkin juga mengalami masalah ini. Terima kasih.
Paul

3
Saya tidak mengerti mengapa jawaban ini memiliki banyak kesalahan. Dia dengan jelas mengatakan "TANPA UNINSTALASI"! -
Christian

20

Ini adalah perintah untuk menghapus aplikasi dari perangkat menggunakan adb:

adb uninstall <package name>

8
Pertanyaannya adalah tentang bagaimana menyelesaikan masalah tanpa menghapus instalasi.
Janaka Bandara

2
Saya tidak mengerti mengapa jawaban ini memiliki banyak kesalahan. Dia dengan jelas mengatakan "TANPA UNINSTALASI"!
Christian

Tidak ada flag pm untuk mengganti paket dengan sertifikat yang tidak konsisten, kan? Niat keamanan?
JohnyTex

9

Saya mendapatkan kesalahan ini bahkan setelah menghapus APK yang asli, yang membingungkan. Akhirnya saya menyadari bahwa saya telah mengatur beberapa pengguna pada Nexus 7 saya untuk pengujian dan bahwa aplikasi tersebut masih diinstal untuk salah satu pengguna lain. Setelah saya uninstall untuk semua pengguna kesalahan hilang.


5

Saya mengubah nama paket saat mengode pembaruan sehingga saya bisa men-debugnya di perangkat saya melalui Eclipse, tanpa menghapus versi lama yang diinstal. Tanpa mengembalikan nama paket yang saya gunakan ketika mencoba menginstal ulang, saya mendapatkan kesalahan yang sama. Menggunakan nama paket yang sama instal ulang berhasil.


3

Hapus saja bangunan lama dari perangkat dan instal ulang yang sama. Karena device.keystore sudah ada di perangkat, jadi cukup hapus instalan dan instal ulang APK itu saja ..

Terima kasih


Ya, itu adalah jawaban yang lebih baik dan jelas bahwa jawaban dari CommonsWare. Terima kasih
tres.14159

3

Saya menghadapi kasus penggunaan lain di mana saya mendapatkan kesalahan serupa. Ketika pada awalnya saya mendapatkan kesalahan, saya panik, dan dihapus /data/data/{package.name} setelah itu saya mencoba, dan masalah saya masih ada. Lalu saya coba uninstall, ternyata gagal.

Saya kemudian menghapus file apk yang ada di /system/app(akses root yang diperlukan), dan mencoba uninstall dan berhasil.

Setelah itu saya mencoba menginstal ulang apk, itu berhasil.


1

Untuk apa nilainya, saya mengalami masalah ini setelah menambahkan plugin baru ke proyek Cordova saya. Saya telah memiliki cordova do build dan instal langsung pada perangkat melalui USB.

Saya memperbaikinya dengan mencopot aplikasi dari perangkat dan pada penyebaran berikutnya tidak ada masalah.


1

Jika Anda mengalami kegagalan penyebaran ke perangkat Andorid atau emulator dengan kesalahan "Gagal [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]" di Window Output, cukup hapus aplikasi yang ada pada perangkat atau emulator dan penempatan ulang. Debug build akan menggunakan sertifikat debug sedangkan Release build akan menggunakan sertifikat yang Anda konfigurasikan. Kesalahan ini hanya memberi tahu Anda bahwa sertifikat aplikasi yang diinstal pada perangkat berbeda dari yang Anda coba instal. Dalam skenario non-pengembangan (app store), ini bisa menjadi indikator aplikasi yang rusak atau dimodifikasi tidak aman untuk dipasang pada perangkat.


0

Tidak ada yang dari atas yang bekerja untuk saya. Masalahnya bagi saya adalah bahwa saya memiliki sumber yang salah di Java Build Path untuk android-support-v7-appcompat. Ketika Anda pergi ke Project> Build Path> Configure Build Path>. Di bawah tab Source pastikan Anda memiliki android-support-v7-appcompat / gen, android-support-v7-appcompat / libs dan android-support-v7-appcompat / src dan tidak ada yang lain. Klik OK dan itu akan berfungsi.


0

Saya memiliki kesalahan yang sama hari ini, tetapi masalahnya tidak persis sama. Saya menggunakan ADB dengan Android yang diinstal di VirtualBox . Saya mencoba menginstal berbagai versi aplikasi saya (masuk / tidak masuk, mode debug / rilis) dan mendapat dua kesalahan sebagai alternatif: INSTALL_FAILED_UID_CHANGEDdan INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES.

Sekarang, ketika melihat /data/data/{package.name}, saya menemukan banyak file yang masih ada setelah menghapus aplikasi. Saya mencoba rm -rfmereka tanpa hasil: Saya mendapat kesalahan I / O.

Solusi untuk ini adalah:

  • Matikan VM
  • Pasang gambar VDI dengan vdfuse(baca / tulis)
  • Perbaiki Partition1file gambar dengane2fsck
  • Umount dan restart VM

0

Saya memiliki masalah yang sama sampai saya menyadari bahwa saya menjalankan simulator dan adb sedang mencoba untuk menginstalnya


0

Karena verifikasi didasarkan pada nama paket, Anda dapat mengubah nama paket di dalam config.xml Anda atau file manifes untuk nama lain yang Anda inginkan.

Saat menerbitkan aplikasi Anda jangan lupa untuk mengubah kembali nama!


0

Saya punya masalah ini mencoba menjalankan tugas gradle connectedDebugAndoidTest(atau connectedAndroidTest) pada Genymotion . Menjalankannya pada emulator normal memecahkan masalah.


Saya juga mendapatkan ini pada situasi yang sama (pengujian dengan Genymotion). Ternyata itu adalah konflik dengan tanda tangan untuk paket tes. Menghapus paket tes memecahkan masalah.
D-C0d3r

0

Saya pikir, aplikasi Anda diinstal oleh akun lain. (Beberapa fitur mode akun) Anda dapat menghapus aplikasi dalam Pengaturan> Aplikasi> "nama aplikasi"> Copot pemasangan

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.