Android Studio'da imzalı bir APK oluştururken imza sürümleri - V1 (Jar İmzası) ve V2 (Tam APK İmzası) arasındaki fark nedir?


234

Lütfen Android Studio 2.3'te kullanılacak imza sürümlerinden en az birini seçin

Şimdi iki seçenek (CheckBox) yani 1. gösteriyor, Android Studio imzalı APK oluşturulurken V1 (Jar Signature)ve 2. V2 (Full APK Signature)olarak İmza Sürümleri imzalı APK üretme işleminin son adımda.

** İmza Sürümleri ** seçenekleri

Peki, yeni Android Studio güncellemesinde V1 (Jar İmzası) ve V2 (Tam APK İmzası) arasındaki fark nedir?

Ve oyun mağazası sürümü için apk imzalamak için hangisini (veya her ikisini) kullanmalıyım?

Ayrıca, ikinci seçeneği kullandığımda APK yüklerken Parse Yükleme Başarısız Sertifika Yok hatası alıyorum .

Yanıtlar:


219

APK imzasını daha güvenli hale getirmek için tasarlanmış ek özelliklerle Android 7.0'da tanıtılan yeni bir imzalama mekanizmasıdır.

Zorunlu değildir. Mümkünse bu onay kutularının her ikisini de kontrol etmelisiniz, ancak yeni V2 imzalama mekanizması size sorun veriyorsa, bunu atlayabilirsiniz.

Böylece, sorunlarla karşılaşırsanız V2'yi işaretlemeden bırakabilirsiniz, ancak mümkünse kontrol ettirmeniz gerekir.


Yine de sorunuzu yeniden ifade etmelisiniz, bağlanmış belgeleri bile okumadığınız anlaşılıyor ... bu onay işaretini işaretlemeden bırakabileceğinizi bilmek yararlıdır. Belki de "karşılaştığınız hata mesajını ve sorununu) eklerseniz, bu soru gelecek için daha değerli olacaktır
Booger

V1 ve V2 kullanarak imzalı uygulama ile uygulama yükledim. Bundan sonra uygulamayı google play'den indirip Android Studio'dan aynı sürümü çalıştırıyorum. "Cihazda aynı paket ancak farklı bir imzası olan bir uygulama bulunduğundan yükleme başarısız oldu." build.gradle güncellemeniz yanlış mı yapıyorum?
Usman Afzal

@UsmanAfzal, uygulamayı Play Store'da sürümle imzaladığınızdan ve şimdi hata ayıklamak veya Android Studio'da hata ayıklamakla çalıştırmak istediğinizden beklenen bir davranıştır. Sürüm ve hata ayıklamanın farklı imza olduğuna dikkat edin
Parama Dharmika

44

Oyun mağazası sürümü için apk imzalamak için (veya her ikisini) kullanmalı mıyım? Cevap EVET .

Https://source.android.com/security/apksigning/v2.html#verification uyarınca :

Android 7.0'da APK'lar APK İmza Düzeni v2 (v2 şeması) veya JAR imzalamasına (v1 şeması) göre doğrulanabilir. Eski platformlar v2 imzalarını yok sayar ve yalnızca v1 imzalarını doğrular.

V2 (Tam Apk İmzası) kontrolü ile inşa oluşturmaya çalıştım . Sonra 7.0 sürümü altında bir sürüm derleme yüklemeye çalıştığımda ve aygıtta derleme yükleyemiyorum.

Bundan sonra hem sürüm onay kutusunu işaretleyerek hem de sürüm derlemesi oluşturarak oluşturmaya çalıştım. Sonra kurmak kurmak mümkün.


24

Şöyle yazılmıştır burada "APK İmza Şeması v2 ve JAR imzalama kullandığı geleneksel imza şeması, ikisini de kullanarak uygulamanızı imzalamak Gradle 2.2 için, varsayılan olarak Android Studio 2.2 ve Android Plugin." Diye

Bu yeni onay kutularının Android 2.3 ile birlikte göründüğü gibi, önceki Android Studio sürümlerimin (en azından 2.2) her iki imza ile imzalandığını anlıyorum. Bu yüzden, daha önce yaptığım gibi devam etmek için, her iki onay kutusunu da işaretlemenin daha iyi olduğunu düşünüyorum.

DÜZENLEME 31 Mart 2017: Her iki imzalı birkaç uygulama gönderdi => sorun yok :)


7

Bence bu iyi bir cevap temsil eder.

APK İmza Şeması v2 doğrulaması

  1. Şunu bulun APK Signing Blockve doğrulayın:
    1. İki boyut alanı APK Signing Blockaynı değeri içerir.
    2. ZIP Central Directoryhemen ardından ZIP End of Central Directorykayıt gelir.
    3. ZIP End of Central Directory ardından daha fazla veri gelmez.
  2. APK Signature Scheme v2 Blockİçindeki ilk yeri bulun APK Signing Block. Varsa v2 Bloğu varsa, 3. adıma geçin. Aksi takdirde, v1 şemasını kullanarak APK'yı doğrulamaya geri dönün.
  3. Her imzalayan için APK Signature Scheme v2 Block:
    1. İmzalardan desteklenen en güçlü imza algoritması kimliğini seçin. Güç sıralaması her uygulama / platform sürümüne bağlıdır.
    2. Ortak anahtarı kullanarak imzalardan imzalanmış verilere karşılık gelen imzayı doğrulayın. (Artık imzalı verileri ayrıştırmak güvenlidir.)
    3. Özet ve imzalardaki imza algoritması kimliklerinin sıralı listesinin aynı olduğunu doğrulayın. (Bu, imza sıyırma / eklemeyi önlemek içindir.)
    4. İmza algoritması tarafından kullanılan özet algoritmasıyla aynı özet algoritmasını kullanarak APK içeriğinin özetini hesaplayın.
    5. Hesaplanan özetin, özetlerden karşılık gelen özetle aynı olduğunu doğrulayın.
    6. SubjectPublicKeyInfoİlk sertifika sertifikasının ortak anahtarla aynı olduğunu doğrulayın .
  4. Doğrulama, en az bir imzalayıcının bulunması ve bulunan her imzalayan için 3. adımın başarılı olması durumunda başarılı olur.

Not: 3. veya 4. adımda bir hata oluşursa APK v1 şeması kullanılarak doğrulanmamalıdır.

JAR imzalı APK doğrulaması (v1 şeması)

JAR imzalı APK, listelenen girdileri tam olarak içermesi gereken META-INF/MANIFEST.MFve tüm girişlerin aynı imzalayanlar kümesiyle imzalanması gereken standart imzalı bir JAR'dır. Bütünlüğü aşağıdaki gibi doğrulanır:

  1. Her imzalayan bir META-INF/<signer>.SFve META-INF/<signer>.(RSA|DSA|EC)JAR girişi ile temsil edilir .
  2. <signer>.(RSA|DSA|EC)PKCS #7 CMS ContentInfoimzası <signer>.SFdosya üzerinde doğrulanmış bir SignedData yapısı ile .
  3. <signer>.SFdosyası, META-INF/MANIFEST.MFher bölümünün bir tam dosya özeti ve özetleri içerir META-INF/MANIFEST.MF. Öğesinin tüm dosya özeti MANIFEST.MFdoğrulanır. Bu başarısız olursa, her MANIFEST.MFbölümün özeti doğrulanır.
  4. META-INF/MANIFEST.MFher bütünlük korumalı JAR girişi için, girdinin sıkıştırılmamış içeriğinin özetini içeren karşılık gelen bir bölüm içerir. Tüm bu özetler doğrulandı.
  5. APK MANIFEST.MF, JAR imzasının bir parçası olmayan ve JAR imzasının bir parçası olmayan JAR girdileri içeriyorsa APK doğrulaması başarısız olur . Koruma zinciri dolayısıyla bir <signer>.(RSA|DSA|EC)<signer>.SFMANIFEST.MFher bütünlük korumalı JAR giriş → içeriği.

"Not: Adım 3 veya 4'te bir hata oluşursa APK v1 şeması kullanılarak doğrulanmamalıdır", Şema 2 veya şema 1'deki adım 3 veya 4? ayrıca v2'de 3. veya 4. adımda bir hata oluşursa ve sonra v1 şeması kullanılarak doğrulanamayacağını söylerse v1 veya v2'de doğrulanmayacak mı?
isJulian00

7

Bu bağlantıya göre: imza yardımı

APK Signature Scheme v2 şunları sunar:

  1. Daha hızlı uygulama yükleme süreleri
  2. APK dosyalarında yetkisiz değişikliklere karşı daha fazla koruma.

Android 7.0, APK dosyalarında yetkisiz değişikliklere karşı daha hızlı uygulama yükleme süreleri ve daha fazla koruma sunan yeni bir uygulama imzalama düzeni olan APK Signature Scheme v2'yi sunar. Varsayılan olarak, Android Studio 2.2 ve Gradle 2.2 için Android Eklentisi, hem APK İmza Düzeni v2'yi hem de JAR imzalama kullanan geleneksel imzalama şemasını kullanarak uygulamanızı imzalar.

Edilir önerilen APK İmza Şeması kullanmak v2 ama zorunlu değildir .

Uygulamanıza APK İmza Düzeni v2 uygulamasını önermemize rağmen, bu yeni düzen zorunlu değildir. APK İmza Düzeni v2'yi kullanırken uygulamanız düzgün bir şekilde oluşturulmuyorsa, yeni düzeni devre dışı bırakabilirsiniz.


Merhaba @Shirish, tutulmadan v2 derlemeleri yapabilir miyiz?
Arjun T Raj
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.