Anahtar deposu nasıl oluşturabilirim?


537

Android için anahtar deposu oluşturma adımları nelerdir?

Uygulamamda google maps kullanmam gerekiyor ve hangi adımları atladığımı bilmiyorum. Lütfen bana belirli ayrıntılı adımları sağlayın (kılavuzlardan anlamadım).


Zaten bir şey yaptınız mı, yoksa başlamak için öneriler mi arıyorsunuz?
atk

2
Bunlar benim yapmış olduğum aşağıdaki adımlardır: 1-kurulum tutulması 2- install jdk 3- install sdk 4- install android eklentisi. Komutu kazanmak cmd komutunu yürütmeyi başaramadım, komut: $ keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 (özel bir anahtar oluşturur). teşekkürler
user482762

@ user482762: CommonsWare'in yanıtı sizin için işe yaradı mı? Neden cmd kazanmayı başaramadınız?
atk

CommonsWare'in cevabı benim için çalışmıyor, cmd'deki komutları yürütmeye çalıştığımda bir hata masajı alıyorum: "$ dahili veya harici bir komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmıyor". yardımınız için teşekkürler
user482762

Ah! Aslında $ yazmak istemezsiniz. Windows'da, komut satırını (cmd uygulaması) kullandığınızda, giriş istemi genellikle DRIVE: / DIRECTORY> gibi, "c: \" gibi görünür. Unix'te bilgi istemi genellikle "$" veya sadece ">" gibi görünür. Komuttaki "$", komutun bir bölümünü değil, giriş istemini temsil eder. Keytool'u $ olmadan tüm bağımsız değişkenlerle çalıştırmayı deneyin.
atk

Yanıtlar:


545

Başlıktaki soruyu cevaplamak için herhangi bir standart JDK dağıtımıyla gelen ve adresinde bulunabilecek Java Keytool yardımcı programı ile bir anahtar deposu oluşturursunuz %JAVA_HOME%\bin. Windows'da bu genellikle olurdu C:\Program Files\Java\jre7\bin.

Windows'ta bir komut penceresi açın ve bu dizine geçin ve böyle bir komut girin

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

Keytool, anahtar deposu için parolalar, Ayırt Edici Ad alanları ve ardından anahtarınızın parolasını girmenizi ister. Daha sonra anahtar deposunu bulunduğunuz dizinde my-release-key.keystore adlı bir dosya olarak oluşturur. Anahtar deposu ve anahtar, girdiğiniz parolalarla korunur. Anahtar deposu 10000 gün boyunca geçerli olan tek bir anahtar içerir. Takma ad, daha sonra uygulamanızı imzalarken bu anahtar deposuna başvurmak için kullanacağınız bir addır.

Keytool hakkında daha fazla bilgi için şu adresteki belgelere bakın: http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html

ve Android uygulamalarını imzalama hakkında daha fazla bilgi için şu adrese gidin: http://developer.android.com/tools/publishing/app-signing.html


6
Varsayılan 1024 yerine kişisel-anahtar boyutu 2048 tanımlama üzerinde iyi bağırmak Şimdi 4096 kullanıyorum
scottyab

9
bilgi için, benim durumumda, yönetici haklarıyla
Intuitisoft

Bu bana şunu veriyor: E / TokenRequestor: Yanlış OAuth2 ile ilgili yapılandırmalarınız var, lütfen kontrol edin. Ayrıntılı hata: UNREGISTERED_ON_API_CONSOLE API konsoluna SHA1'imi girerek zaten bir kimlik bilgisi oluşturdum.
Rohan Taneja

Manuel olarak anahtar deposu oluşturma ile ilgili belgelere doğrudan bağlantı: developer.android.com/studio/publish/…
methodignature

Eğer istemleri bazı atlamak böylece 2 şifreleri setleri bu komutu kullandım: keytool -genkey -v -keystore debug.keystore -storepass android -alias android -keypass android -keyalg RSA -keysize 2048 -validity 10000. Sonra Firebase koymak gerekir SHA-1 üretmek için:keytool -list -v -keystore debug.keystore -alias android -storepass android -keypass android
Albert Vila Calvo

158

Android Studio'da Uygulamanızı İmzalama

Uygulamanızı Android Studio'da yayın modunda imzalamak için şu adımları izleyin:

1- Menü çubuğunda Oluştur> İmzalı APK Oluştur'u tıklayın.


2-İmzalı APK Oluştur Sihirbazı penceresinde, yeni bir anahtar deposu oluşturmak için Yeni oluştur'a tıklayın. Zaten bir anahtar deponuz varsa, 4. adıma gidin.


3- Yeni Anahtar Deposu penceresinde, şekilde gösterildiği gibi gerekli bilgileri sağlayın Anahtarınız en az 25 yıl geçerli olmalıdır, böylece uygulamanızın ömrü boyunca aynı anahtarla uygulama güncellemelerini imzalayabilirsiniz.

resim açıklamasını buraya girin

4- İmzalı APK Oluştur Sihirbazı penceresinde, bir anahtar deposu, özel bir anahtar seçin ve her ikisi için şifreleri girin. Ardından İleri'ye tıklayın.resim açıklamasını buraya girin

5- Bir sonraki pencerede, imzalı APK için bir hedef seçin ve Son'a tıklayın. resim açıklamasını buraya girin

referans

http://developer.android.com/tools/publishing/app-signing.html


2
Bu cevap doğru olsa da, sadece android stüdyosu yüklüyse kullanışlıdır.
Seph Reed

98

Kabukta tek bir satır komutunu kullanarak bir .keystore nasıl oluşturulacağımı delirdim , bu yüzden başka bir uygulamadan çalıştırabilirim. Bu şekilde:

echo y | keytool -genkeypair -dname "cn=Mark Jones, ou=JavaSoft, o=Sun, c=US" -alias business -keypass kpi135 -keystore /working/android.keystore -storepass ab987c -validity 20000
  • dname , .keystore içindeki uygulama için benzersiz bir tanımlayıcıdır

    • cn .keystore'u oluşturan kişi veya kuruluşun tam adı
    • ou Projeyi oluşturan Organizasyon Birimi, onu oluşturan Organizasyonun bir alt bölümüdür. Ör. android.google.com
    • o Tüm projenin organizasyon sahibi. Daha Onun yüksek bir kapsam ou . Ör .: google.com
    • c Ülke kısa kodu. Örn: Amerika Birleşik Devletleri için "ABD"
  • takma ad .keystore içinde tek bir varlık olarak uygulamanın tanımlayıcısı (çok sayıda olabilir)

  • keypass konusu diğer adı korumak için şifre.
  • deposu Yol .keystore dosya oluşturulur edilecektir (standart uzantısı aslında .ks)
  • storepass .keystore içeriğinin tamamını korumak için kullanılan parola .
  • geçerlik gün amout uygulaması ile bu geçerli olacak .keystore

Benim için gerçekten iyi çalıştı, konsolda başka bir şey istemiyor, sadece dosyayı oluşturuyor. Daha fazla bilgi için bkz. Keytool - Anahtar ve Sertifika Yönetim Aracı .


Ben hiç böyle bir hata olmadı ama dokunmayı deneyin /path/file.keystoreve storepass parametresi ile işaret.
EliuX

harika çalışıyor! benim tek değişiklik Android için .jks uzantısını kullanmaktır
Adam Mendoza

2
jksgenel olarak java için resmi anahtar deposu uzantısıdır , ancak bunun yerine android uygulamalarıkeystore için kullanılması önerilir .
EliuX

1
@eliasbagley, çünkü yukarıda yazılan -storepass komutu başka bir satırda başladı. Her şeyi tek bir satıra yazın ve iyi olacak.
tormuto

82

Komut satırından anahtar deposu dosyası oluşturun:

  1. Komut satırını aç:

    Microsoft Windows [Version 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation.  All rights reserved
    
    // (if you want to store keystore file at C:/ open command line with RUN AS ADMINISTRATOR)
    
    C:\Windows\system32> keytool -genkey -v -keystore [your keystore file path]{C:/index.keystore} -alias [your_alias_name]{index} -keyalg RSA -keysize 2048 -validity 10000[in days]
  2. Enter> Sizden şifre isteyecektir> şifreyi girin (görünmez olacaktır)

    Enter keystore password:
    Re-enter new password:
  3. Enter> Detayınızı soracaktır.

    What is your first and last name?
     [Unknown]:  {AB} // [Your Name / Name of Signer] 
    What is the name of your organizational unit?
     [Unknown]:  {Self} // [Your Unit Name] 
    What is the name of your organization?
     [Unknown]:  {Self} // [Your Organization Name] 
    What is the name of your City or Locality?
     [Unknown]:  {INDORE} // [Your City Name] 
    What is the name of your State or Province?
     [Unknown]:  {MP} //[Your State] 
    What is the two-letter country code for this unit?
     [Unknown]:  91
  4. Enter> Y girin

    Is CN=AB, OU=Self, O=Self, L=INDORE, ST=MP, C=91 correct?
    [no]:  Y
  5. Enter> Şifreyi tekrar girin.

    Generating 2,048 bit RSA key pair and self-signed certificate    (SHA256withRSA) with a validity of 10,000 days
        for: CN=AB, OU=Self, O=Self, L=INDORE, ST=MP, C=91
    Enter key password for <index> (RETURN if same as keystore password):
    Re-enter new password:

[Depolama C: /index.keystore]

  1. Ve YAPILDI !!!

Tutulmada İhracat:

Oluşturduğunuz anahtar deposu dosyanızla android paketinizi .apk dosyasına aktarın

  1. Dışa aktarmak istediğiniz Pakete sağ tıklayın ve dışa aktarmayı seçin resim açıklamasını buraya girin

  2. Android Uygulamasını Dışa Aktar> İleri'yi seçin resim açıklamasını buraya girin

  3. Sonraki
    resim açıklamasını buraya girin

  4. Mevcut Anahtar Deposunu Kullan> .keystore dosyasına gözat> şifre gir> İleri'yi seçin. resim açıklamasını buraya girin

  5. Takma Ad> şifre girin> İleri'yi seçin resim açıklamasını buraya girin

  6. APK Hedefine Gözatın> Bitir resim açıklamasını buraya girin

Android Studio'da:

[.keystore/.jks]Stüdyoda anahtar deposu oluştur ...

  1. Click Oluştur (ALT + B) > APK Signed Üret ...
    resim açıklamasını buraya girin

  2. Yeni oluştur'u tıklayın . (ALT + C)
    resim açıklamasını buraya girin

  3. Anahtar deposu yoluna (SHIFT + ENTER) göz atın> Yol Seç> Adı girin> Tamam resim açıklamasını buraya girin

  4. .jks/keystoreDosyanızla ilgili ayrıntıları doldurunresim açıklamasını buraya girin

  5. Sonraki
    resim açıklamasını buraya girin

  6. Dosyanız
    resim açıklamasını buraya girin

  7. Studio Ana Parolasını Girin (Bilmiyorsanız SIFIRLA) > Tamam resim açıklamasını buraya girin

  8. * Hedef Klasör *> Derleme Türü'nü seçin

    release : for publish on app store
    debug : for debugging your application

    Son'u tıklayın

    resim açıklamasını buraya girin

Yapıldı !!!


28

Bu eğitim:

http://techdroid.kbeanie.com/2010/02/sign-your-android-applications-for.html

bir anahtar deposu oluşturmak zorunda kaldığım ilk kez benim için çok yardımcı oldu. Çok basit ama developer.android.com'daki talimatlar biraz fazla kısa.

Emin olmadığım kısım nereye kaydedileceği ve anahtar deposu dosyasına hangi adın verileceği idi .

Nereye koyduğunuz önemli değil gibi görünüyor sadece güvenli tutmak ve bir dizi yedek tutmak emin olun. Sadece uygulama dizinime koydum

İstediğiniz bir şeyin olabileceği yere "something.keystore" adını verin. App_name.keystore kullandım , burada app_name uygulamamın adıydı.

Bir sonraki kısım takma adın ne olacağıydı. Yine önemli görünmüyor bu yüzden yine app_name'i tekrar kullandım. Parolaları daha önce kullandığınız gibi tutun. Diğer alanları doldurun ve işiniz bitti.


13

Hata ayıklama anahtar deposunu oluşturmak için bu kılavuzu izledim .

Komut:

keytool -genkeypair -alias androiddebugkey -keypass android -keystore debug.keystore -storepass android -dname "CN=Android Debug,O=Android,C=US" -validity 9999

11

Debug.keystore oluşturmak için bu komutu kullanın

keytool -genkey -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US"

5

Bilmeniz gereken ilk şey, Debug veya Release modunda olup olmadığınızdır. "İki derleme modu vardır: hata ayıklama modu ve yayın modu. Uygulamanızı geliştirirken ve test ederken hata ayıklama modunu kullanırsınız. Uygulamanızın doğrudan dağıtabileceğiniz bir yayın sürümünü oluşturmak istediğinizde yayın modunu kullanırsınız. veya Google Play gibi bir uygulama pazarında yayınlayabilirsiniz. "

Hata ayıklama modundaysanız aşağıdakileri yaparsınız ...
A. Terminali açın ve yazın:

keytool -exportcert -alias androiddebugkey -keystore path_to_debug_or_production_keystore -list -v

Not: Eclipse için hata ayıklama anahtar deposu genellikle ~ / .android / debug.keystore ... adresinde bulunur.

B. bir şifre istendiğinde sadece "android" girin ...

C. Release modundaysanız, aşağıdaki talimatları izleyin ...

http://developer.android.com/tools/publishing/app-signing.html <- bu bağlantı bilmeniz gereken her şeyi açıklamaktadır.


2

İmzalı bir APK dışa aktararak anahtar deponuzu oluşturabilirsiniz. İmzalı bir APK'yı dışa aktarmaya / oluşturmaya çalıştığınızda, bir anahtar deposu isteyecektir.

Mevcut anahtar deponuzu seçebilir veya yeni anahtar deposu oluştur'u tıklayarak kolayca yeni bir anahtar deposu oluşturabilirsiniz

Burada çok kullanışlı ve anahtar deponuzu nasıl oluşturacağınıza ve imzalı bir APK oluşturduğunuza dair iyi açıklanmış bir bağlantı

Bu bağlantı Android Studio ile nasıl yapılacağını açıkladı, ancak hatırlıyorsam Eclipse'de oldukça benzer

DİKKAT ET

Anahtar deponuzu oluşturduktan sonra, güvenli bir yerde saklayın, çünkü yeni bir imzalı APK'yı yeniden oluşturmak için ihtiyacınız olacak.

Android stüdyosunda bir projeyi nasıl dışa aktarırım?


2

Sadece gradle ile otomatik yol önermek istiyorum

** Son komutta anahtar deposu için en az bir ek parametre tanımlayın, örn. Ülke '-dname', 'c=RU'**

apply plugin: 'com.android.application'

// define here sign properties
def sPassword = 'storePassword_here'
def kAlias = 'keyAlias_here'
def kPassword = 'keyPassword_here'

android {
    ...
    signingConfigs {
        release {
            storeFile file("keystore/release.jks")
            storePassword sPassword
            keyAlias kAlias
            keyPassword kPassword
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.release
        }
        release {
            shrinkResources true
            minifyEnabled true
            useProguard true
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    ...
}

...

task generateKeystore() {
    exec {
        workingDir projectDir
        commandLine 'mkdir', '-p', 'keystore'
    }
    exec {
        workingDir projectDir
        commandLine 'rm', '-f', 'keystore/release.jks'
    }
    exec {
        workingDir projectDir
        commandLine 'keytool', '-genkey', '-noprompt', '-keystore', 'keystore/release.jks',
            '-alias', kAlias, '-storepass', sPassword, '-keypass', kPassword, '-dname', 'c=RU',
            '-keyalg', 'RSA', '-keysize', '2048', '-validity', '10000'
    }
}

project.afterEvaluate {
    preBuild.dependsOn generateKeystore
}

Bu, proje senkronizasyonu ve derlemesinde anahtar deposu oluşturur

> Task :app:generateKeystore UP-TO-DATE
> Task :app:preBuild UP-TO-DATE

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.