apksigner - başvuru kılavuzu, seçenekler, komut örnekleri


İSİM

apksigner - Android APK'larını imzalayın ve doğrulayın

ÖZET

apksigner [options] apk

apksigner --version

apksigner --help

TANIM

Android APK dosyalarını imzalamak ve APK dosyalarının imzalarının Android cihazlarda doğrulanıp doğrulanmayacağını kontrol etmek için bir komut satırı aracı.

apk, imzalanacak veya doğrulanacak mevcut bir dosyadır.

apksig, APK imzalamayı ve APK imzalarının Android'de doğrulanıp doğrulanmayacağını kontrol etmeyi basitleştirmeyi amaçlayan bir projedir. apksig, JAR imzalamayı (ilk günden beri Android tarafından kullanılır) ve APK Signature Scheme v2'yi (Android Nougat, API Level 24'ten beri desteklenir) destekler.

Apksig'in temel özelliği, Android platformunun farklı sürümleri arasındaki APK imza doğrulama mantığındaki farklılıkları bilmesidir. apksig böylece imzalı bir APK'nin APK tarafından desteklenen tüm Android platformu sürümlerinde doğrulama yapmasının beklenip beklenmediğini kontrol edebilir. Bir APK imzalanırken apksig, imzalanan APK tarafından desteklenen Android platformu sürümlerine dayalı olarak en uygun şifreleme algoritmalarını seçecektir.

KOMUTLAR

sign

Bu, önceden var olan tüm imzaları çıkararak sağlanan APK'yı imzalar. İmzalama, her biri bir asimetrik anahtar çifti ve karşılık gelen bir sertifika ile temsil edilen bir veya daha fazla imzalayan kullanılarak gerçekleştirilir. Tipik olarak bir APK yalnızca bir imzalayan tarafından imzalanır. Her imzalayan için, imzalayanın özel anahtarını ve sertifikasını sağlamanız gerekir.

verify

Bu, sağlanan APK'nın Android'de doğrulanıp doğrulanmayacağını kontrol eder. Varsayılan olarak bu, APK'nın APK tarafından desteklenen tüm Android platformu sürümlerinde doğrulanıp doğrulanmayacağını kontrol eder (AndroidManifest.xml'de minSdkVersion kullanılarak bildirildiği gibi). APK'yı özel bir API Düzeyleri aralığına göre doğrulamak için --min-sdk-version ve/veya --max-sdk-version kullanın.

lineage

Bu, sağlanan SigningCertificateLineage'deki bir veya daha fazla imzalayanın yeteneklerini değiştirir. Bu, yükleme tabanı yeni imzalama sertifikasına geçirildikten sonra önceki imza sertifikasının yeteneklerini iptal etmek için kullanılabilir.

rotate

Bu, sağlanan anahtarları alır ve APK Signature Scheme v3 kullanan bir anahtar döndürme senaryosunda kullanılmak üzere eskiyi yeniye bağlayan bir SigningCertificateLineage girişi oluşturur.

version

Bu aracın sürüm numarasını göster ve çık

help

Bu kullanım sayfasını göster ve çık

SEÇENEKLER

-v, --verbose

Ayrıntılı çıkış modu

-h, --help

Bu komutla ilgili yardımı göster ve çık

-Werr

Uyarıları hata olarak kabul et

sign

Sağlanan APK'yı imzalayın

--out

İmzalı APK'nın çıktısının alınacağı dosya. Varsayılan olarak APK, giriş dosyasının üzerine yazarak yerinde imzalanır.

--min-sdk-version

Bu APK'nın imzalarının doğrulanacağı en düşük API Düzeyi. Varsayılan olarak, AndroidManifest.xml'deki değer kullanılır. Değer ne kadar yüksek olursa, imzalama sırasında o kadar güçlü güvenlik parametreleri kullanılır.

--max-sdk-version

Bu APK'nın imzalarının doğrulanacağı en yüksek API Düzeyi. Varsayılan olarak mümkün olan en yüksek değer kullanılır.

--v1-signing-enabled

JAR imzalama şeması (aka v1 imzalama şeması, Android'de ilk günden beri kullanılan) kullanılarak imzanın etkinleştirilip etkinleştirilmeyeceği. Varsayılan olarak, bu şemayı kullanarak imzalama, minimum ve maksimum SDK sürümüne göre etkinleştirilir (bkz. --min-sdk-version ve --max-sdk-version).

--v2-signing-enabled

APK Signature Scheme v2 (aka v2 imzalama şeması, Android Nougat, API Seviye 24'te tanıtılan) kullanılarak imzalamanın etkinleştirilip etkinleştirilmeyeceği. Varsayılan olarak, bu şemayı kullanarak imzalama, minimum ve maksimum SDK sürümüne göre etkinleştirilir (bkz. --min-sdk-version ve --max-sdk-version).

per-signer options

Bu seçenekler, belirli bir imzalayanın yapılandırmasını belirtir. Farklı imzalayanların seçeneklerini sınırlamak için --next-signer kullanın.

--next-signer

İki farklı imzalayanın seçeneklerini sınırlandırır. Yalnızca bir imzalayıcı kullanıldığında bu seçeneğin kullanılmasına gerek yoktur.

--v1-signer-name

Bu imzalayanın JAR imza düzeni (aka v1 şeması) imzasını içeren dosyalar için temel ad. Varsayılan olarak, KeyStore anahtar takma adı veya anahtar dosyasının temel adı kullanılır.

per-signer signing key & certificate options

İmzalayanın özel anahtarını ve sertifikasını sağlamanın iki yolu vardır: (1) Java KeyStore (bkz. --ks) veya (2) PKCS #8 biçimindeki özel anahtar dosyası ve X.509 biçimindeki sertifika dosyası (bkz. --key ve --cert).

--ks

Belirtilen dosyadan başlatılan Java KeyStore'dan özel anahtar ve sertifika zinciri yükleyin. HİÇBİRİ, bazı PKCS #11 Anahtar Depoları için geçerli olan KeyStore tarafından hiçbir dosyaya ihtiyaç duyulmadığı anlamına gelir.

--ks-key-alias

Özel anahtarın ve sertifikanın KeyStore'da saklandığı diğer ad. KeyStore birden çok anahtar içeriyorsa bu belirtilmelidir.

--ks-pass

KeyStore şifresi (bkz. --ks). Aşağıdaki biçimler desteklenir:

  • geçiş: satır içi sağlanan şifre

  • env: adlandırılmış ortam değişkeninde sağlanan parola

  • dosya: adlı dosyada tek bir satır olarak verilen şifre

  • standart girişte tek satır olarak sağlanan stdin şifresi

Bir KeyStore'u açmak için parola gerekir. Varsayılan olarak araç, konsol veya standart giriş yoluyla parola isteyecektir. Birden çok parola sağlamak için aynı dosya (standart giriş dahil) kullanıldığında, parolalar dosyadan her seferinde bir satır okunur. Parolalar, imzalayanların belirtildiği sırayla okunur ve her imzalayan içinde, anahtar parolası okunmadan önce KeyStore parolası okunur.

--key-pass

Özel anahtarın korunduğu parola. Varsayılan olarak, KeyStore anahtarlarının, KeyStore'larıyla aynı parola kullanılarak korunduğu varsayılır (bkz. --ks-pass). Aşağıdaki biçimler desteklenir:

  • geçiş: satır içi sağlanan şifre

  • env: adlandırılmış ortam değişkeninde sağlanan parola

  • dosya: adı verilen dosyada tek satır olarak sağlanan parola stdin parolası standart girişte tek satır olarak sağlanır

Varsayılan olarak, anahtar parola korumalıysa, araç konsol veya standart giriş aracılığıyla parola ister. Birden çok parola sağlamak için aynı dosya (standart giriş dahil) kullanıldığında, parolalar dosyadan her seferinde bir satır okunur. Parolalar, imzalayanların belirtildiği sırayla okunur ve her imzalayan içinde, anahtar parolası okunmadan önce KeyStore parolası okunur.

--pass-encoding

ASCII olmayan karakterler içeren parolaları denemek için ek karakter kodlaması (örneğin, ibm437 veya utf-8). Keytool tarafından oluşturulan KeyStore'lar genellikle parolanın Unicode biçimi kullanılarak değil, konsolun karakter kodlaması kullanılarak parolanın kodlanmasıyla üretilen biçim kullanılarak şifrelenir. apksigner varsayılan olarak birkaç parola biçimini kullanarak şifreyi çözmeye çalışır: Unicode formu, JVM varsayılan karakter kümesi kullanılarak kodlanan form ve Java 8 ve daha eski sürümlerde, konsolun karakter kümesi kullanılarak kodlanan form. Java 9'da apksigner, konsolun karakter kümesini algılayamaz ve ASCII olmayan bir parola kullanıldığında --pass-encoding ile sağlanması gerekebilir. --pass-encoding ayrıca keytool tarafından farklı bir işletim sisteminde veya farklı bir yerel ayarda oluşturulan bir KeyStore için sağlanmalıdır.

--ks-type

Kullanılacak KeyStore'un türü/algoritması. Varsayılan olarak, varsayılan tür kullanılır.

--ks-provider-name

KeyStore uygulamasının talep edileceği JCA Sağlayıcısının adı. Varsayılan olarak, en yüksek öncelikli sağlayıcı kullanılır. Bir sağlayıcı belirtmenin alternatif yolu için --ks-provider-class'a bakın.

--ks-provider-class

KeyStore uygulamasının talep edileceği JCA Sağlayıcısının tam nitelikli sınıf adı. Varsayılan olarak, sağlayıcı --ks-sağlayıcı-adı temel alınarak seçilir.

--ks-provider-arg

--ks-provider-class tarafından belirtilen JCA Provider sınıfının oluşturucusuna iletilecek değer. Değer, yapıcıya java.lang.String olarak iletilir. Varsayılan olarak, argümansız sağlayıcının yapıcısı kullanılır.

--key

Belirtilen dosyadan özel anahtarı yükleyin. Anahtar parola korumalıysa, --key-pass kullanılarak aksi belirtilmedikçe parola standart giriş yoluyla sorulacaktır. Dosya PKCS #8 DER formatında olmalıdır.

--cert

Sertifika zincirini belirtilen dosyadan yükleyin. Dosya X.509 PEM veya DER formatında olmalıdır.

verify

Sağlanan APK'nın Android'de doğrulanmasının beklenip beklenmediğini kontrol edin

--print-certs

APK'nın imza sertifikaları hakkında bilgi göster

--min-sdk-version

Bu APK'nın imzalarının doğrulanacağı en düşük API Düzeyi. Varsayılan olarak, AndroidManifest.xml'deki değer kullanılır.

--max-sdk-version

Bu APK'nın imzalarının doğrulanacağı en yüksek API Düzeyi. Varsayılan olarak mümkün olan en yüksek değer kullanılır.

ÖRNEKLER

apksigner sign --ks release.jks app.apk apksigner verify --verbose app.apk 
apksigner lineage --in /path/to/existing/lineage --print-certs -v 
apksigner rotate --out /path/to/new/file --old-signer --ks release.jks --new-signer --ks release2.jks
sign
  1. Anahtar deposu release.jks'teki tek ve tek anahtarı kullanarak bir APK imzalayın:

  2. apksigner sign --ks release.jks app.apk
  3. Bireysel dosyalar olarak saklanan özel bir anahtar ve sertifika kullanarak bir APK imzalayın:

  4. apksigner sign --key release.pk8 --cert release.x509.pem app.apk
  5. İki tuş kullanarak bir APK imzalayın:

  6. apksigner sign --ks release.jks --next-signer --ks magic.jks app.apk
verify
  1. APK imzalarının, bu APK tarafından desteklendiği beyan edilen tüm Android platformlarında doğrulanmasının beklenip beklenmediğini kontrol edin:

  2. apksigner verify app.apk
  3. API Düzey 15 ve üzeri Android platformlarında APK imzalarının doğrulanmasının beklenip beklenmediğini kontrol edin:

  4. apksigner verify --min-sdk-version 15 app.apk
lineage
  1. Dizindeki bir önceki imzalayanın tüm özelliklerini kaldırın:

  2. apksigner lineage --in /path/to/existing/lineage --out /path/to/new/file --signer --ks release.jks --set-installed-data false --set-shared-uid false --set-permission false --set-rollback false --set-auth false
  1. Kökendeki imzalama sertifikaları ve yetenekleri hakkındaki ayrıntıları görüntüleyin:

  2. apksigner lineage --in /path/to/existing/lineage --print-certs -v
rotate
  1. Döndürmeyi etkinleştirmek için yeni bir SigningCertificateLineage oluşturun:

  2. apksigner rotate --out /path/to/new/file --old-signer --ks release.jks --new-signer --ks release2.jks
  1. Önceki rotasyondan sonra tekrar döndürmek için mevcut bir SigningCertificateLineage'ı genişletin:

  2. apksigner rotate --in /path/to/existing/lineage --out /path/to/new/file --old-signer --ks release2.jks --new-signer --ks release3.jks
  1. Önceki imzalayan için açık yeteneklere sahip yeni bir SigningCertificateLineage oluşturun:

  2. apksigner rotate --out /path/to/new/file --old-signer --ks release.jks --set-installed-data true --set-shared-uid true --set-permission true --set-rollback false --set-auth true --new-signer --ks release2.jks

AYRICA BAKINIZ

signapk(1) jar(1) zip(1) zipalign(1)

https://source.android.com/devices/tech/ota/sign_builds.html

YAZARLAR

Android Açık Kaynak Projesi.