INSTALL_PARSE_FAILED_NO_CERTIFICATES Hatası nedir?


163

androidmanifest.xmlDosyayı düzenleyerek varsayılan / ana / başlangıç ​​(ne derseniz deyin) etkinliğim değiştirmeye çalışıyordum . Tüm yaptığım android:nameözelliği değiştirmek oldu . Ancak, bu tüm uygulamayı tamamen bozdu. yüklemeye çalıştığımda başarısız oluyor ve okuyor.

Yükleme hatası: INSTALL_PARSE_FAILED_NO_CERTIFICATES

Önceki durumuna geri döndürmeye çalıştığımda hala bana aynı hatayı veriyordu ... Ne yaptım?


Başkası için: INSTALL_PARSE_FAILED_NO_CERTIFICATEShatadır -103Eğer aracılığıyla bkz / alabilirsiniz adb log( src ) örn. D/PackageInstaller(21320): Installation error code: -103

cevap doğrudur. ve bu hatayı veren başka bir neden var, telefonunuzda aynı paket adı yüklü eski bir uygulama varsa .. yenisini yüklemeden önce sadece telefonunuzdan kaldırın
Emre Kilinc Arslan

2
Bu soruya rastlayan herkese - aşağıdaki tüm cevapları okuyun ! Bu hata mesajı daha çok "bir şeyler yanlış" hata türüdür. Karşılaştığım nedeni, listeden aşağı, cevap yollarından biri oldu !!!!
GMc

Yanıtlar:


56

AndroidManifest.xmlDoğrudan .apkdosyada düzenlediniz mi? Eğer öyleyse, bu işe yaramaz.

.apkMarket üzerinden yüklemeseniz bile , bir telefona kurulacaksa her Android'in imzalanması gerekir . Geliştirme araçları bunu bir geliştirme sertifikası ile imzalayarak çalışır, ancak .apkhala imzalanmıştır.

Bunun bir kullanımı, bir cihazın .apkyüklü bir uygulama için geçerli bir yükseltme olup olmadığını söyleyebilmesidir , çünkü eğer Sertifikalar aynı ise.

Uygulamanızda herhangi bir değişiklik yaparsanız .apk, düzgün bir şekilde imzalanması için uygulamayı yeniden oluşturmanız gerekir.


çok teşekkürler, manifest'i otomatik olarak yeniden oluşturmak için bir düğme var mı?
mtmurdock

Çırpınarak mücadele eden çocuklar için, koş flutter cleanve koş / hata ayıkla! Bu işlem, derleme klasörünü temizlediği ve derleme dosyasını yeniden çalıştır / debug üzerinde yeniden oluşturduğu için yukarıdaki çözüme benzer!
Manoj Kumar

183

Bu hatanın artık yanlış imzalama yapılandırmasını kullanırken de ortaya çıkabileceğini buldum. Açıklandığı gibi burada , Android 7.0 tanıtır yeni imza şeması, V2 . V2 şeması, V1 şemasında olduğu gibi, sadece JAR yerine tüm APK'yı imzalar. Yalnızca V2 ile oturum açarsanız ve 7.0 öncesi bir hedefe yüklemeye çalışırsanız, JAR'ların kendileri imzalanmadığı ve 7.0 öncesi PackageManager V2 APK imzasının varlığını algılayamadığı için bu hatayı alırsınız .

Tüm hedef sistemlerle uyumlu olmak için Android Studio'nun İmzalı APK Oluştur iletişim kutusundaki her iki imza sürüm kutusunu da işaretleyerek APK'nın her iki şema ile de imzalandığından emin olun :

resim açıklamasını buraya girin

Yalnızca 7,0 hedef bekleniyorsa, V1 imzasını eklemenize gerek yoktur.


5
Çok zaman kazandın. Android Studio'yu yükseltmek sıkıntılara neden oldu. Bu onlardan biriydi. SO'nun Android Geliştirmenin yarısından fazlasının ölmeyeceğini merak ediyorum. Android Studio hatalar hakkında ipucu vermiyor.
Atul

4
Neyse ki, Google Play'de yayınlamadan önce sürüm apk'yi eski bir cihazda test ettim. Tüm <Android 7.0 cihazları yeni sürümü yükleyemediğinde bu bir felaket olur. Bir apk sürümü oluşturmak için tıkladığınızda iki sürümlü bu şey BÜYÜK KIRMIZI POP UP DIALOG olmalıdır!
Kirill Karmazin

Bunun için teşekkürler. APK'mın neden Android 7'nin altında çalışmadığını görmek için çıldırmak üzereydim, ancak bu sadece basit bir onay kutusuydu. Çok can sıkıcı.
japzone

54

Bunun JDK versiyonumdan kaynaklandığını gördüm.

'Karınca' ile bu sorunu yaşıyordum ve belgelerinde belirtilen bu DİKKAT nedeniyle oldu:

http://developer.android.com/guide/publishing/app-signing.html#signapp

Dikkat: JDK 7'den itibaren, varsayılan imzalama algoritması değişti ve bir APK imzaladığınızda imza ve özet algoritmalarını (-sigalg ve -digestalg) belirtmenizi gerektiriyor.

JDK 7 var. Ant günlüğümde, -v'yi ayrıntılı olarak kullandım ve gösterdi

$ ant -Dadb.device.arg=-d -v release install
[signjar] Executing 'C:\Program Files\Java\jdk1.7.0_03\bin\jarsigner.exe' with arguments:
[signjar] '-keystore'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\release.keystore'
[signjar] '-signedjar'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\bin\PairFinder-release-unaligned.apk'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\bin\PairFinder-release-unsigned.apk'
[signjar] 'mykey'
 [exec]     pkg: /data/local/tmp/PairFinder-release.apk
 [exec] Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

JAR'ı manuel olarak imzaladım ve zipalignedim, ancak biraz farklı bir hata verdi:

$ "$JAVA_HOME"/bin/jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore release.keystore -signedjar bin/PairFinder-release-unaligned.apk bin/PairFinder-release-unsigned.apk mykey
$ zipalign -v -f 4 bin/PairFinder-release-unaligned.apk bin/PairFinder-release.apk
$ adb -d install -r bin/PairFinder-release.apk
        pkg: /data/local/tmp/PairFinder-release.apk
Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]
641 KB/s (52620 bytes in 0.080s)

Bunu burada buldum.

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

Sadece kaldırmam gerekiyordu ve işe yaradı!

$ adb -d uninstall com.kizbit.pairfinder
Success
$ adb -d install -r bin/PairFinder-release.apk
        pkg: /data/local/tmp/PairFinder-release.apk
Success
641 KB/s (52620 bytes in 0.080s)

Şimdi sadece imzalarken bu seçenekleri kullanmak için build.xml değiştirmek gerekir!

Tamam burada: C: \ Program Dosyaları \ Java \ android-sdk \ tools \ ant \ build.xml

            <signjar
                    sigalg="MD5withRSA"
                    digestalg="SHA1"
                    jar="${out.packaged.file}"
                    signedjar="${out.unaligned.file}"
                    keystore="${key.store}"
                    storepass="${key.store.password}"
                    alias="${key.alias}"
                    keypass="${key.alias.password}"
                    verbose="${verbose}" />

3
JDK 7 de benim sorunumdu. Tembel ve JDK 7'yi kaldırdım ve JDK 6'yı yükledim, ayrıca çalıştı ^ ^. Diğer hack çözümü ancak daha az radikal kurulmasına izin verilebilir, ancak JAVA_HOME'u JDK 6 olarak ayarlayabilir ve JDK 6'nın bin yolunu PATH'de ilk sıraya koyabilirsiniz.
Ixx

1
JDK 8'de de aynı sorun var. PATH'ın JDK 6'ya değiştirilmesi işe yaradı. Can kurtarıcı teşekkürler!
Chris Xue

Teşekkürler! Pazar uygulamam JDK6 ile derlendi. JDK7 kullanarak sürüm anahtar deposuyla uygulamayı derlediğimde ve yüklemeye çalıştığımda bana bu sorunu verdi.
Sileria

28

Çoğu zaman bu hatanın çözümü gerçekten basittir:

  1. Apk'nizi kaldırın
  2. Android projenizi temizleyin
  3. Android projenizi oluşturun
  4. Apk'nizi yükleyin / çalıştırın

2,3,4 yaptım ve aynı hatayı alıyorum. Apk'nizi kaldırarak ne demek istersiniz? Cihazımdan mı? Cihazımda hiç bulunmadığını sanmıyorum.
Curtis

aniden hiçbir şey dışında bu hatayı almaya başladı, Hiçbiri çözüm ama sadece temizlik projesi çalıştı. Teşekkürler.
pgcan

18

(benim için) tuş takımını kullanarak çözüldü

-sigalg MD5withRSA -keyalg RSA -keysize 1024

ve jarsigner'da kullanma

-sigalg MD5withRSA -digestalg SHA1

çözüm bulundu

Android APK imzalama için ne tür tuzaklar var?


Teşekkürler, benim için de sorunu çözdüm (JDK 7 var).
Enrico Ros

Aynı şekilde düzelttim, çünkü appcelerator titanium kullanıyorum ve apk oluşturma komut dosyasına erişemiyorum. Bu çözümlerin özel anahtarın yenilenmesini (değiştirilmesini!) Gerektirdiğini unutmayın.
Federico

8

Ben de aynı sorunla karşı karşıyaydım. Önce V2 kullanarak derleme oluşturdum ve OS 5.1 üzerinde çalışan mobil cihazlara yükledim ve aynı sorunu aldım. Ancak derleme, OS 7.0'da çalışan Tablet üzerinde iyi çalışıyordu. Bu yüzden V1 Jar imzası ile yapı oluşturdum ve her iki cihazda da iyi çalışıyordu.

Sonuç: Android OS 7.0'ın altındaki cihazı destekliyorsanız. Derlemeyi oluşturmak için V1 jar imzasını kullanın.


Her ikisini de kontrol etmenize gerek yok, OS 7.0 ve aşağısını destekliyorsanız V1'i seçin 7.0 ve üzeri sürümlerde çalışan cihazları destekliyorsanız V2'yi kontrol edin.
Rajiv Ranjan

7

Benim durumumda, sürüm derlemeleri oluşturabilir ve çalıştırabilirim, ancak INSTALL_PARSE_FAILED_NO_CERTIFICATEShata ayıklama derlemesi yapmaya çalışırken hatayla karşılaştım.

Çözüm dosyamı silmek debug.keystoreve ADT'nin yeniden oluşturmasına izin vermekti. Görünüşe göre süresi dolmuştu.

Daha iyi bir uzun vadeli çözüm, debug.keystoreADT'nin oluşturmasına izin vermek yerine, yalnızca bir yıl sonra süresi dolmayan bir çözüm oluşturmaktır. İşte bunu yapmak için komut:

keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -validity 14000

İstendiğinde şu değerleri girin:

  • Adı ve soyadı: Android Hata Ayıklama
  • Kuruluş birimi: Android
  • Kuruluşun adı: Bilinmiyor
  • Şehir veya Bölge: Bilinmiyor
  • Eyalet veya İl: Bilinmiyor
  • Ülke kodu: ABD

5

Bu çirkin ama hızlı bir çözümdür: 7 yerine JDK 6 kullanın.

Chloe'nin cevabını okuduktan sonra JDK 7'mi kaldırdım (şu anda buna gerek yok) ve JDK 6'yı yükledim. Daha iyi bir çözüm, karınca JDK 6 kullanır (7'yi kaldırmadan). Belki bu özelliği değiştirmek / ayarlamak mümkündür:

java.library.path

local.properties dosyasında. Proje dizininde (kök).

Android zaten JDK 7 ile çalışmıyor (sadece 6 veya 5), ​​bu yüzden ant script'in JDK 6 veya 5'i de kullandığından muhtemelen iyi bir çözüm.


5

Çünkü daha önce oluşturulan derleme ve akım, v1 (jar imzası) ve v2 (tam APK İmzası) arasındaki imza sürümünde çakışma yaşıyor,

İmzalı APK Oluştur iletişim kutusunun altındaki uygun imza sürümünü düzeltmek için


5

Son zamanlarda Android Studio 4.0'a yükseltirken bu hatayı aldım. Bunun nedeni, projenin oturum açma yapılandırmasında V2 İmzalama Devre Dışı Bırakılmış olmasıdır build.gradle.

Çözüm, kaldırmak v2SigningEnabled falseveya truevarsayılan değer olan açık bir şekilde ayarlamaktı .

android {    
    signingConfigs {
        dev {
            v2SigningEnabled true
        }
     }
}

Android studio 4.0 kullanıyorum. Ama build.gradle dosyamda böyle bir şey "v2SigningEnabled" yok. Sonra ne yapmalıyım?
Nuwan Harshakumara Piyarathna

3

Daha yeni Android Studio sürüm 3.2+'de, releaseyüklemeyi çalıştırmaya çalışıyorsanız ve herhangi bir imzalama yapılandırması tanımlamadıysanız, hata istemini gösterecek ve yükleme başarısız olacaktır. Yapmanız gereken, debugderlemeyi çalıştırmak veya imzalama yapılandırmasını (V1 veya V2) doğru bir şekilde kurmaktır.


3

cevapların çoğu doğrudur. ve gerçekleşen diğer bazı nedenler

► min sdk'niz cihaz sdk'sinden daha küçüktür.
► cihazınızda aynı paket adına sahip daha eski bir uygulamanız var


Bu benim tecrübemdi - Projemdeki min sdk, sdk cihazından daha yüksekti. Bu, Android Studio'da projeyi oluştururken doğru seçimi "kaçırdım" ve yanlışlıkla SDK'm olarak bir sonraki yüksek sürümü seçtikten sonra eski tabletim çalışıyordu.
GMc

benim min sdk ve cihaz sdk eşit yapmak benim sorunum çözüldü.
Nuwan Harshakumara Piyarathna

2

Dosya .jariçeren bir kitaplık eklemeye çalışırsanız bu gerçekleşebilir AndroidManifest.xml.

  • Saf Java ise, .jar dışa aktarma işlemine dahil etmediğinizden emin olun
  • Saf Java değilse (yani bir Android projesi), bir Kütüphane Projesi olarak eklemeniz gerekir

2

Ayrıca kontrol edebilirsiniz

Project Structure-> Default Config->Signing Config

İhtiyacın olan her şeyi ekledikten sonra


1

Ortam değişkenini JAVA_HOMEJDK 5 veya 6 (JDK 7 yerine) olarak ayarlamak hatayı düzeltti.


0

Bir süre ve konuyla ilgili birden fazla çevrimiçi konudan sonra projemi düzeltmeyi başardım.

Esas olarak, koyduğunuz son dosyaları ( görüntüler veya düzenler olabilir ) dikkate alır. Silerseniz, işe yarayacak ve projenizi tekrar oluşturabilirsiniz.


0

Eclipse Konsolumda bu hatayı alıyordum. Aynı içeriğe ancak farklı isimlere sahip iki kavanozum olduğu ve birbirleriyle çatıştığı ortaya çıktı. Sadece birini sildim ve uygulamayı cihaza yüklemeyi başardım.


0

Bu hatayı alıyordum çünkü ant releasedisk alanım bittiği için başarısız olduğumu serbest bıraktım .


0

Api v23 çalıştıran bir telefona Android N önizlemesine karşı oluşturulmuş bir Xamarin projesi yüklemeye çalıştığımda bu hatayı aldım. Çözüm bunu yapmamaktır.


0

Bu hatayı almanın başka bir yolu ant, macOS kullanarak yapı oluşturmak Icon\rve uygulamanın kaynak ağacında bir Finder simge dosyasına ( ) sahip olmaktır . jarsignerDosya adındaki satır başı ile baş edemiyor gibi görünüyor ve eğer -verifyAPK'yı imzalamanızın geçerli olduğunu iddia etse de, her zaman bir cihaza yüklenmeyecek bir APK ile sonuçlanır. İronik bir şekilde, Google Drive Finder eklentisi, Finder simge dosyalarının mükemmel bir kaynağıdır.

Çözüm, rahatsız edici dosyaları (yine de APK'da işe yaramaz) aşağıdaki gibi bir belirteçle hariç tutmaktır fileset:

    <exclude name="**/Icon&#13;" />

0

Bu sorun, APK'nın imzalanmamış bir sürümünü yüklüyorsanız gerçekleşir. Doğru APK'yı yükleyip yüklemediğinizi kontrol edin.


0

İyonik / Visual Studio Code ile bu sorunu yaşadım (Android cihazda çalıştır):

Uygulamayı mobil cihazdan kaldırdım (Ayarlar / Uygulamalar), hata gitti ve uygulama başlıyor.


0

Bugün benim için bu hatayı atıyor çünkü 28 dk sdk'ye sahip bir uygulamam var ve 23 SDK sürümüne sahip bir emülatörde oyun oynuyorum. çok.


0

Öncelikle bunu yapmaya çalışın:

  • Gradle script → bulid.gradle (module: app) → seçeneğine gidin → (minSdkVersion) değerini değiştirmeniz gerekir. Örnek olarak, 26 kullandıysanız, değeri düşürmeyi deneyebilirsiniz, örneğin (minSdkVersion 20)
  • sonra (şimdi senkronize et) deneyin.

0

Emülatör kullanıyorsanız, sıfırlamayı deneyin ve mobilde önce uygulamayı kaldırırsanız, geliştirici modunu kapatın ve ardından sorunu açın, çözülecektir.

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.