Android studio keytool где находится

Полный список

— создаем ключи и подписываем приложение

Тема этого урока не относится непосредственно к программированию. И вполне себе можно кодить без этих знаний. Но для общего развития, думаю, об этом все-таки стоит поговорить. Данные знания пригодятся вам, например, когда будете делать приложение с гугл-картой, или когда будете выкладывать свое творение на маркет.

Подпись приложения

Вообще, в процессе подписи и верификации участвуют закрытый/открытый ключи и сертификат. Если кому интересно, то можете погуглить эти понятия и почитать подробнее. Я же, чтобы не усложнять урок, буду просто называть все это ключом. Для понимания темы урока этого будет достаточно.

Вы создали приложение и хотите его протестировать на реальном устройстве или эмуляторе. Для того, чтобы установить и запустить приложение, оно должно быть подписано. Если вы еще не публиковали на маркете свои приложения, то, скорее всего, про то, что приложение надо подписывать, вы слышите первый раз. И точно помните, что ни с какими подписями не возились. Создавали проект, кодили все, что нужно, сохраняли и запускали и все прекрасно работало. Так происходило, потому что Eclipse сам создавал ключ и сам подписывал приложение этим ключом, чтобы вам на первых порах не приходилось думать об этом. И когда ваше приложение устанавливалось, оно было уже подписанным. А если попытаться установить неподписанное приложение, то получим ошибку.

Итак, приложение обязательно должно быть подписанным, и Eclipse любезно берет это на себя. Он подписывает их debug-ключом. Раньше срок его действия был всего один год. Android проверяет срок действия ключа только при установке. Т.е. если вы установили приложение и срок действия ключа истек, вы все равно сможете использовать установленное приложение. А вот установить или обновить приложение, подписанное истекшим ключом, не получится. Система выдаст ошибку.

Сейчас срок debug-ключа равен 30 лет. Но приложение, подписанное debug-ключом, не получится опубликовать на маркете. А значит, нам надо будет создавать свой ключ и подписывать им приложение.

keytool

Для создания ключа нам понадобится утилита keytool. Ее можно найти по адресу \bin. Она умеет создавать новые ключи и показывать информацию о уже существующих. Давайте сначала попробуем посмотреть информацию о существующем ключе. Для этого возьмем тот самый debug-ключ, который используется для подписи приложений по умолчанию. Узнать где он находится можно в настройках Eclipse: Window > Preferences >Android > Build.

Файл debug.keystore имеет расширение keystore. Это можно перевести как хранилище ключей. Это действительно так, один такой файл может содержать в себе несколько ключей. Для того чтобы обратится к конкретному ключу внутри хранилища используется alias (алиас, можно рассматривать его как имя ключа).

Посмотрим, какие ключи есть в хранилище debug.keystore. Используем команду list. С помощью параметров keystore и storepass укажем имя файла хранилища и пароль к хранилищу:

keytool -list -keystore debug.keystore -storepass android

Мы видим, что здесь хранится один ключ с алиасом androiddebugkey, и создан он был 26.08.2012. Этот ключ и используется Eclipse-ом для подписи вашего приложения по умолчанию. Хранилище и ключ имеют одинаковый пароль — android.

Давайте создадим свой ключ. Для этого используем команду genkey и к ней идет куча параметров.

keytool -genkey -keystore mykeys.keystore -storepass spassword -alias mykey1 -keypass kpassword1 -dname “CN=Dmitry Vinogradov O=StartAndroid C=RU” -validity 10000

Выглядит страшно, но на самом деле все несложно. Просто надо понимать следующее:
хранилище — это файл и оно защищено паролем
ключ в хранилище имеет алиас и свой пароль
также ключ содержит информацию о владельце и имеет ограниченный срок действия

Именно эти вышеперечисленные параметры мы и задали в скрипте.

keystore — имя файла хранилища
storepass — пароль к хранилищу
alias — алиас создаваемого ключа
keypass — пароль к ключу
dname — информация о владельце ключа
validity — срок действия ключа (в днях)

Читайте также:  Apex legend для андроид

dname задается в определенном формате. Я указал только имя, организацию и страну.

После выполнения этой команды в хранилище mykeys.keystore создался ключ с вышеуказанными параметрами. Если указанное хранилище не существует, то оно будет создано.

Теперь давайте снова используем команду list и поглядим на только что созданный ключ

keytool -list -keystore mykeys.keystore -storepass spassword

Видим, что внутри все так, как мы и создавали — один ключ с алиасом mykey1.

Туда же можно поместить второй ключ. Но теперь запишем скрипт создания ключа в несколько урезанном виде. Мы не будем указывать пароли к хранилищу и ключу, и информацию о владельце.

keytool -genkey -keystore mykeys.keystore -alias mykey2 -validity 10000

и программа спросит нас о недостающих данных. Сначала пароль к хранилищу, затем данные о владельце ключа (я заполнял не все требуемые значения), затем пароль для создаваемого ключа и подтверждение пароля.

Функционально разницы нет, но при таком способе вам не надо знать формат ввода параметра dname (утилита все спросит сама), и посторонним не видны пароли, которые вы вводили.

Теперь в хранилище два ключа. Выполним list и убедимся.

keytool -list -keystore mykeys.keystore

Обратите внимание, что я не ввел пароль от хранилища (например, чтобы не «светить» его). Утилита спросит меня:

Видно, что был запрошен пароль и в хранилище сейчас два ключа.

Команду list можно еще выполнить с параметром v. Этот параметр добавляет информативности.

Теперь для каждого ключа виден не только алиас и дата создания, но и инфа о владельце, срок действия и пр.

Параметр v также можно использовать и с командой genkey. После создания ключа будет выведено немного информации о нем в консоль.

jarsigner

Итак, разобрались с keytool. Знаем, как создавать хранилище с ключами и как посмотреть инфу о существующих. Осталось узнать, как подписать приложение ключом. Для этого используется другая утилита — jarsigner.

Скрипт подписи выглядит так:

jarsigner -keystore mykeys.keystore -storepass spassword -keypass kpassword1 Package1.apk mykey1

Имена параметров нам знакомы по keytool: хранилище (keystore), пароль (storepass) к нему и пароль (keypass) к ключу. А последние два параметра – это имя APK-файла, который вы хотите подписать и алиас ключа из указанного хранилища, который вы хотите использовать для подписи.

После этого приложение будет подписано и система примет его к установке.

Ради интереса давайте попробуем установить неподписанный APK. Чтобы создать его надо щелкнуть правой кнопкой мыши на проекте в Eclipse и выбрать Android tools > Export Unsigned Application Package. Далее указываем путь, куда сохранить APK-файл. Eclipse создает приложение из проекта и сохраняет его в указанный каталог. После этого он выводит сообщение, что перед публикацией приложения необходимо его подписать и сжать (утилитой zipalign).

Попробуем установить приложение на эмулятор с помощью adb. Получаем ошибку Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]:

Система обнаружила, что приложение не подписано.

Если же сначала закинуть APK на эмулятор и там запустить файловым менеджером, получим такое сообщение при установке:

Визард

Eclipse предоставляет визард, который позволяет реализовать все вышеописанные шаги по подготовке приложения к установке. Для этого надо на проекте в Eclipse щелкнуть правой кнопкой и выбрать Android tools > Export Signed Application Package.

Визард на всякий случай уточнит проект

Затем надо выбрать: использовать существующее хранилище или создавать новое. Если используем существующее, то выбираем его и вводим пароль к этому хранилищу.

Жмем Next, и визард спрашивает, какой из существующих ключей использовать, либо дает возможность создать новый.

Выбираем существующий ключ, вводим пароль к нему

Читайте также:  Samsung p7500 обновить андроид

Осталось указать путь и имя файла, куда Eclipse сохранит готовое, подписанное и сжатое приложение. Заодно он сразу показывает срок действия сертификата.

Жмем Finish и получаем готовое приложение, которое можно публиковать на маркете.

Если же у вас пока нет ключа, то визард поможет вам его создать, чтобы не надо было возиться с консолью и keytool.

В этом случае вы указываете, что хотите создать хранилище

Далее надо создать ключ

Здесь вы указываете алиас, пароль, срок действия (в годах) и инфу о владельце.

Ну и остается указать путь к создаваемому файлу

По идее, я мог бы сразу показать вам этот визард, который за вас все сделает, но я думаю, что вы не понимали бы значение всех его экранов и полей. А это не очень хорошая практика – пользоваться тем, чего не понимаешь. Поэтому я подробно расписал механизм ключей и подписи приложений, чтобы вы представляли себе, как устроен этот процесс и что делает визард.

По поводу срока действия ключа, в хелпе пишут, что рекомендуется ставить 25 лет. И что при публикации приложения на маркете, проверяется, что срок действия закончится позднее, чем 22 октября 2033. Думаю, эта дата будет периодически сдвигаться.

На следующем уроке:

— разбираемся, что такое Package для приложения

Присоединяйтесь к нам в Telegram:

— в канале StartAndroid публикуются ссылки на новые статьи с сайта startandroid.ru и интересные материалы с хабра, medium.com и т.п.

— в чатах решаем возникающие вопросы и проблемы по различным темам: Android, Kotlin, RxJava, Dagger, Тестирование

— ну и если просто хочется поговорить с коллегами по разработке, то есть чат Флудильня

— новый чат Performance для обсуждения проблем производительности и для ваших пожеланий по содержанию курса по этой теме

Источник

Я не могу найти Android keytool

Я пытаюсь следовать руководству по сопоставлению Android и дошел до этого часть, где мне нужно было получить ключ API.

Я нашел свой debug.keystore , но, похоже, в каталоге нет приложения keytool :

В этом каталоге также нет keytool :

Я использую Eclipse в качестве редактора и считаю, что загрузил все последние SDK.

Что я делаю не так?

9 ответов

keytool поставляется с Java SDK. Вы должны найти его в каталоге, который содержит javac и т. Д.

Итак, этот пост написан шесть месяцев назад, но я подумал, что добавлю сюда некоторую информацию для людей, которые не понимают, что такое ключ API / отпечатки пальцев MD5. Мне потребовалось время, чтобы понять, поэтому я предполагаю, что у других тоже были проблемы с этим (если только я не настолько тупой).

Эти инструкции предназначены для Windows XP, но я полагаю, что они аналогичны для других версий Windows. Похоже, пользователям Mac и Linux это легче, поэтому я не буду их касаться.

Поэтому, чтобы использовать просмотры карт в ваших приложениях Android, Google хочет проверить их, чтобы вы могли подписать соглашение об условиях использования API Карт Android. Я думаю, они не хотят, чтобы вы создавали какие-либо пошаговые GPS-приложения, чтобы конкурировать с их или чем-то еще. Я действительно не читал. Ой.

Итак, перейдите на http://code.google.com/android/maps-api- signup.html и ознакомьтесь с ним. Они хотят, чтобы вы отметили поле «Я прочитал и согласен с условиями и положениями» и введите отпечаток MD5 вашего сертификата. Вы можете сказать, что это такое. Я не знаю, но просто делайте то, что я говорю, и ваше приложение для Android не пострадает.

Перейдите в Пуск> Выполнить и введите cmd, чтобы открыть командную строку. Вам нужно перейти в каталог с файлом keytool.exe, который может находиться в немного другом месте в зависимости от того, какую версию JDK вы установили. Моя находится в C:\Program Files\Java\jdk1.6.0_21\bin , но попробуйте зайти в папку Java и посмотреть, какая у вас версия, и соответственно изменить путь.

Читайте также:  Как заблокировать контакт смс андроид

После перехода к C: \ Program Files \ Java \ \ bin в командной строке введите

С кавычками. Конечно, будет вашим собственным именем пользователя Windows.

(Если у вас возникли проблемы с поиском этого пути и вы используете Eclipse, вы можете проверить Окно> Настройки> Android> Сборка и проверить «Хранилище ключей отладки по умолчанию»)

Нажмите Enter, и вам будет предложено ввести пароль. Просто нажмите Enter. И вуаля, внизу — ваш отпечаток MD5. Введите свой отпечаток пальца в текстовое поле на странице регистрации Android Maps API и нажмите «Создать ключ API».

И вот ваш ключ во всей красе, с удобным образцом XML-макета с вашим ключом, введенным для копирования и вставки.

Хорошо, я сделал это в 32-разрядной системе Windows 7 .

шаг 1 : перейдите в — C: \ Program Files \ Java \ jdk1.6.0_26 \ bin — и сначала запустите jarsigner.exe (двойной щелчок)

step2 : найдите debug.keystore, в моем случае это было — C: \ Users \ MyPcName \ .android

step3 : откройте командную строку и перейдите в каталог — C: \ Program Files \ Java \ jdk1.6.0_26 \ bin и введите следующую команду: keytool -list -keystore «C: \ Users \ MyPcName \ .android \ debug.keystore»

step4 : теперь он запросит пароль хранилища ключей. (что я выясняю . -?)

Обновление: ОК, в моем случае пароль был «android». — (Я использую Eclipse для android, поэтому нашел здесь) Следуйте инструкциям в eclipse : Windows> настройки> android> сборка> ..
(Посмотрите в поле `default Debug Keystore´ .)

Команда для изменения пароля хранилища ключей (см. Здесь): пароли изменения хранилища ключей

Приведенный выше четырехэтапный ответ сработал для меня, но он возвращает ключ SH1 . но Google запрашивает ключ MD5 для генерации вашего ключа API.

Нужно просто добавить ‘-v’ в команду на шаге 3, например:

Обновленный четырехэтапный ответ

Хорошо, я сделал это в 32-битной системе Windows 7.

шаг 1 : перейдите в — C: \ Program Files \ Java \ jdk1.7.0 \ bin — и сначала запустите jarsigner.exe (двойной щелчок)

step2 : найдите debug.keystore (в Eclipse: Windows / Preferences / Android / build ..), в моем случае это было — C: \ Users \ MyPcName.android

step3 : откройте командную строку и перейдите в каталог — C: \ Program Files \ Java \ jdk1.7.0 \ bin и введите следующую команду: keytool -v -list -keystore «C: \ Users \ MyPcName.android \ debug.keystore»

step4 : теперь он запросит пароль хранилища ключей. По умолчанию — android.

Я никогда не устанавливал Java, но когда вы устанавливаете Android Studio, у нее есть собственная версия в каталоге Android. Вот где мой находится. Ваш путь может быть похож. После этого вы можете либо поместить keytool в свой путь, либо просто запустить его из этого каталога.

Если вы используете Android Studio для Windows для создания хранилища ключей выпуска и подписанного .apk, просто выполните следующие действия:

1) Сборка> Создать подписанный APK

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

3) После того, как ваше хранилище ключей (your_keystore_name.jks) будет создано, вы сможете использовать его для создания своего первого подписанного apk в выбранном вами месте назначения.

Я не видел необходимости использовать командный инструмент, если у вас есть IDE, такая как Android Studio.

Фактически, экспорт eclipse вызовет

А затем вызовите com.android.sdklib.internal.build.SignedJarBuilder.

Одна вещь, о которой здесь не упоминалось (но не позволила мне запустить keytool в целом), заключалась в том, что вам нужно запускать командную строку от имени администратора.

Просто хотел поделиться этим .

Не нужно использовать командную строку.

Если вы ФАЙЛ-> «Экспорт приложения для Android» в ADK, то это позволит вам создать ключ, а затем создать файл .apk.

Источник

Оцените статью