Как я могу создать хранилище ключей?


538

Какие шаги для создания хранилища ключей для Android?

Мне нужно использовать Google Maps в моем приложении, и я не знаю, какие шаги я пропустил. Пожалуйста, предоставьте мне конкретные подробные шаги (я не понял этого из руководств).


Вы уже что-нибудь сделали или ищете рекомендации для начала?
atk

2
Это следующие шаги, которые я сделал: 1 - установить eclipse 2 - установить jdk 3 - установить sdk 4 - установить плагин для Android. мне не удалось выполнить команду в win cmd, команду: $ keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 (который генерирует закрытый ключ). спасибо
user482762 23.10.10

@ user482762: ответ CommonsWare сработал для вас? Почему вам не удалось выполнить win cmd?
atk

Ответ CommonsWare не работает для меня. Когда я пытаюсь выполнить команды в cmd, я получаю сообщение об ошибке: «$ не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл». спасибо за вашу помощь
user482762 29.10.10

Ах! Вы не хотите на самом деле печатать $. В Windows, когда вы используете командную строку (приложение cmd), приглашение ввода обычно выглядит как DRIVE: / DIRECTORY>, как «c: \». В Unix приглашение часто выглядит как «$» или просто «>». «$» В команде предназначено для представления приглашения ввода, а не части команды. Попробуйте запустить keytool со всеми аргументами, без $.
atk

Ответы:


545

Чтобы ответить на вопрос в заголовке, вы создаете хранилище ключей с помощью утилиты Java Keytool, которая поставляется с любым стандартным дистрибутивом JDK и может находиться по адресу %JAVA_HOME%\bin. На Windows это обычно бывает C:\Program Files\Java\jre7\bin.

Поэтому в Windows откройте командное окно, переключитесь на этот каталог и введите команду, подобную этой

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

Keytool предложит вам ввести пароли для хранилища ключей, укажите поля «Отличительное имя», а затем пароль для вашего ключа. Затем он создает хранилище ключей в виде файла my-release-key.keystore в каталоге, в котором вы находитесь. Склад ключей и ключ защищены паролями, которые вы ввели. Хранилище ключей содержит один ключ, действительный в течение 10000 дней. Псевдоним - это имя, которое вы - будете использовать позже, чтобы ссылаться на это хранилище ключей при подписании вашего приложения.

Для получения дополнительной информации о Keytool см. Документацию по адресу: http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html.

и для получения дополнительной информации о подписании приложений Android перейдите по ссылке: http://developer.android.com/tools/publishing/app-signing.html


6
Хороший крик по определению -keysize 2048, а не по умолчанию 1024 лично Я сейчас использую 4096
scottyab

9
для информации, в моем случае, мне нужно открыть окно командной
строки

Это дает мне: E / TokenRequestor: у вас неправильные конфигурации, связанные с OAuth2, пожалуйста, проверьте. Подробная ошибка: UNR номенклатура_ON_API_CONSOLE Я уже создал учетные данные, введя свой SHA1 в консоли API.
Рохан Танежа

Прямая ссылка на документацию вручную генерирующего хранилище ключей: developer.android.com/studio/publish/...
methodsignature

Я использовал эту команду , которая устанавливает эти 2 паролей , так что вы пропустите некоторые подсказки: keytool -genkey -v -keystore debug.keystore -storepass android -alias android -keypass android -keyalg RSA -keysize 2048 -validity 10000. Затем, чтобы сгенерировать SHA-1, который нужно поместить в Firebase, сделайте:keytool -list -v -keystore debug.keystore -alias android -storepass android -keypass android
Альберт Вила Кальво

158

Подписание вашего приложения в Android Studio

Чтобы подписать приложение в режиме выпуска в Android Studio, выполните следующие действия.

1- В строке меню выберите «Создать»> «Создать подписанный APK».


2-В окне мастера создания подписанного APK нажмите «Создать новый», чтобы создать новое хранилище ключей. Если у вас уже есть хранилище ключей, перейдите к шагу 4.


3- В окне «Новое хранилище ключей» предоставьте необходимую информацию, как показано на рисунке. Ваш ключ должен быть действителен не менее 25 лет, чтобы вы могли подписывать обновления приложения одним и тем же ключом в течение срока службы вашего приложения.

введите описание изображения здесь

4- В окне мастера создания подписанного APK выберите хранилище ключей, закрытый ключ и введите пароли для обоих. Затем нажмите Далее.введите описание изображения здесь

5- В следующем окне выберите место назначения для подписанного APK и нажмите «Готово». введите описание изображения здесь

Referance

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


2
Хотя этот ответ правильный, это удобно, только если у вас уже установлена ​​Android Studio.
Сеф Рид

98

Я без ума от того, как сгенерировать .keystore, используя в командной строке однострочную команду , чтобы я мог запустить ее из другого приложения. Это способ:

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.

    • cn полное имя человека или организации, которая создает .keystore
    • НУ Организационная единица , которая создает проект, его подразделение Организации , которая создает его. Ex. android.google.com
    • o Организация владелец всего проекта. Это больше, чем оу . Пример: google.com
    • c Сокращенный код страны. Пример: для США это "США"
  • псевдоним Идентификатор приложения как единого объекта внутри .keystore (может иметь много)

  • keypass Пароль для защиты этого конкретного псевдонима.
  • Путь к хранилищу ключей, где должен быть создан файл .keystore (на самом деле стандартное расширение .ks)
  • storepass Пароль для защиты всего содержимого .keystore .
  • срок действия Количество дней, в течение которых приложение будет действовать с этим .keystore

Это сработало очень хорошо для меня, оно не запрашивает что-либо еще в консоли, просто создает файл. Для получения дополнительной информации см. Keytool - Инструмент управления ключами и сертификатами .


У меня никогда не было такой ошибки, но попробуйте коснуться /path/file.keystoreи указать это с помощью параметра storepass.
EliuX

работает отлично! мое единственное изменение заключается в том, что я использую расширение .jks для Android
Адам Мендоса,

2
jksявляется официальным расширением хранилища ключей для Java в целом, но keystoreрекомендуется использовать вместо него для приложений Android .
EliuX

1
@eliasbagley, потому что команда -storepass, как написано выше, запущена в другой строке. Напишите все в одной строке, и все будет хорошо.
Тормуто

82

Создать файл хранилища ключей из командной строки:

  1. Открытая командная строка:

    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> Вам будет предложено ввести пароль> введите пароль (он будет невидим)

    Enter keystore password:
    Re-enter new password:
  3. Введите> Он спросит ваши детали.

    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> Enter Y

    Is CN=AB, OU=Self, O=Self, L=INDORE, ST=MP, C=91 correct?
    [no]:  Y
  5. Введите> Введите пароль еще раз.

    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:

[Хранение C: /index.keystore]

  1. И вы СДЕЛАНЫ !!!

Экспорт в Eclipse:

Экспортируйте ваш пакет Android в .apk с созданным вами файлом хранилища ключей.

  1. Щелкните правой кнопкой мыши на Пакете, который вы хотите экспортировать, и выберите Экспорт. введите описание изображения здесь

  2. Выберите «Экспорт приложения Android»> «Далее». введите описание изображения здесь

  3. следующий
    введите описание изображения здесь

  4. Выберите «Использовать существующее хранилище ключей»> «Просмотреть файл хранилища ключей»> введите пароль> «Далее» введите описание изображения здесь

  5. Выберите Псевдоним> введите пароль> Далее введите описание изображения здесь

  6. Обзор APK Destination> Finish введите описание изображения здесь

В Android Studio:

Создать хранилище ключей [.keystore/.jks]в студии ...

  1. Нажмите Построить (ALT + B) > Создать подписанный APK ...
    введите описание изображения здесь

  2. Нажмите Создать новый .. (ALT + C)
    введите описание изображения здесь

  3. Просмотр пути к хранилищу ключей (SHIFT + ВВОД)> Выбрать путь> Введите имя> ОК введите описание изображения здесь

  4. Заполните детали о вашем .jks/keystoreфайле введите описание изображения здесь

  5. следующий
    введите описание изображения здесь

  6. Ваш файл
    введите описание изображения здесь

  7. Введите мастер-пароль студии (вы можете сбросить, если вы не знаете) > ОК введите описание изображения здесь

  8. Выберите * Папка назначения *> Тип сборки

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

    Нажмите Готово

    введите описание изображения здесь

Выполнено !!!


28

Этот урок:

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

было очень полезно для меня в первый раз, когда мне пришлось создать хранилище ключей. Это просто, но инструкции на developer.android.com слишком короткие.

Часть, в которой я не был уверен, была о том, где сохранить и какое имя дать файлу хранилища ключей .

Кажется, не имеет значения, куда вы положили его, просто обязательно сохраните его и сохраните несколько резервных копий. Я просто положил его в каталог приложений

Назовите файл «thing.keystore », где что-то может быть, что вы хотите. Я использовал app_name.keystore , где app_name было именем моего приложения.

Следующей частью было то, что назвать псевдоним. Опять же, это не имеет значения, поэтому я снова использовал app_name снова. Сохраняйте пароли такими же, как вы использовали ранее. Заполните остальные поля, и все готово.



11

Используйте эту команду для создания debug.keystore

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

Первое, что нужно знать, если вы находитесь в режиме отладки или выпуска. С сайта разработчика "Существует два режима сборки: режим отладки и режим выпуска. Вы используете режим отладки при разработке и тестировании приложения. Вы используете режим выпуска, когда хотите создать выпускную версию приложения, которую можно распространять напрямую. для пользователей или опубликовать на рынке приложений, таких как Google Play. "

Если вы находитесь в режиме отладки, вы делаете следующее ...
A. Откройте терминал и введите:

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

Примечание. Для Eclipse хранилище ключей отладки обычно находится в ~ / .android / debug.keystore ...

B. при запросе пароля просто введите "android" ...

C. Если вы находитесь в режиме выпуска, следуйте инструкциям на ...

http://developer.android.com/tools/publishing/app-signing.html <- эта ссылка в значительной степени объясняет все, что вам нужно знать.


2

Вы можете создать хранилище ключей, экспортировав подписанный APK. Когда вы попытаетесь экспортировать / построить подписанный APK, он запросит хранилище ключей.

Вы можете выбрать существующее хранилище ключей или легко создать новое, нажав «Создать новое хранилище ключей».

Здесь ссылка очень полезна и подробно объясняет, как создать хранилище ключей и создать подписанный APK

Эта ссылка объясняет, как это сделать с Android Studio, но, если я помню, она очень похожа на Eclipse

ОСТОРОЖНО

Создав хранилище ключей, храните его в безопасном месте, поскольку оно понадобится вам для создания нового подписанного APK.

Как экспортировать проект в студию Android?


2

Я хотел бы предложить автоматический путь только с Gradle

** Определите также хотя бы один дополнительный параметр для хранилища ключей в последней команде, например, страну '-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
}

Это сгенерирует хранилище ключей при синхронизации проекта и сборке

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

-4

Если вы не хотите или не можете использовать Android Studio, вы можете использовать инструмент NPM create-android-keystore:

$ create-android-keystore quick

В результате создается новое хранилище ключей в текущем каталоге.

Дополнительная информация: https://www.npmjs.com/package/create-android-keystore

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.