Android Studio - хранилище ключей отладки


107

Подписывает ли Android Studio отладочные сборки? Если да, то где хранилище ключей, которое он использует для этого?


1
Он все равно подписывается, потому что могут быть установлены только подписанные сборки.
— Александр Куляхтин

3
Я думаю, это правильный вопрос программирования. Это напрямую связано с набором инструментов, используемым при разработке приложений для Android.
— Остин Махони, 02 авг.13,


@Prachi, как это может быть дубликатом вопроса, заданного более 3 лет спустя? Может, это другая копия этого.
— fasteque

Смотрите также stackoverflow.com/questions/12456491/...
— CAW

Ответы:


179

Он находится в том же месте: ~/.android/debug.keystore


5
Разве это не в ~ / .android?
— Eugene Mymrin

14
keytool -list -v -keystore ~ ​​/ .android / debug.keystore
— jturolla

5
Это версия команды keytool для Windows: keytool -exportcert -alias androiddebugkey -keystore C: \ Users \ <User> \ .android \ debug.keystore -list -v
— Саймон

12
Пароль по умолчанию - android, а псевдоним ключа - androiddebugkey.
— naXa 08

1
И пароль по умолчанию для androiddebugkey также "android".
— kibitzerCZ

64

Если вы используете Windows, вероятно, расположение будет таким:

C: \ Пользователь \ YourUser \ .android \ debug.keystore


30

При желании вы можете указать собственное хранилище ключей отладки. Это решение также дает вам возможность хранить ключи вне каталога проекта, а также автоматизировать процесс подписания. Да, вы можете перейти File -> Project Structureи назначить хранилища ключей и пароли для подписи на Signingвкладке, но это добавит записи в виде открытого текста в ваш файл gradle.build, что означает, что ваши секреты могут быть раскрыты (особенно при фиксации репозитория). С помощью этого решения вы получаете контроль над использованием собственного хранилища ключей и волшебство автоматизации во время отладки и выпуска сборок.

1) Создайте gradle.properties (если у вас его еще нет).

Расположение этого файла зависит от вашей ОС:

   /home/<username>/.gradle/ (Linux)
   /Users/<username>/.gradle/ (Mac)
   C:\Users\<username>\.gradle (Windows)

2) Добавьте запись, указывающую на yourprojectname.propertiesфайл. (пример для Windows)

yourprojectname.properties=c:\\Users\\<username>\\signing\\yourprojectname.properties

3) Создайте yourprojectname.propertiesфайл в месте, указанном на шаге 2, со следующей информацией:

keystore=C:\\path\\to\\keystore\\yourapps.keystore
keystore.password=your_secret_password

4) Измените gradle.buildфайл так, чтобы он указывал на yourprojectname.propertiesфайл для использования переменных.

if(project.hasProperty("yourprojectname.properties")
        && new File(project.property("yourprojectname.properties")).exists()) {

    Properties props = new Properties()
    props.load(new FileInputStream(file(project.property("yourprojectname.properties"))))

    android {
        signingConfigs {
            release {
                keyAlias 'release'
                keyPassword props['keystore.password']
                storeFile file(props['keystore'])
                storePassword props['keystore.password']
            }
            debug {
                keyAlias 'debug'
                keyPassword props['keystore.password']
                storeFile file(props['keystore'])
                storePassword props['keystore.password']
            }
        }
        compileSdkVersion 19
        buildToolsVersion "20.0.0"
        defaultConfig {
            applicationId "your.project.app"
            minSdkVersion 16
            targetSdkVersion 17
        }
        buildTypes {
            release {
            }
        }
    }

}

dependencies {
    ...
}

5) Наслаждайтесь! Теперь все ваши ключи будут находиться за пределами корня каталога, но при этом у вас все еще есть радость автоматизации для каждой сборки.

Если вы получаете сообщение об ошибке в файле gradle.build относительно переменной "props", это потому, что вы не выполняете блок "android {}" внутри самого первого ifусловия, в котором propsназначается переменная, поэтому просто переместите весь android {... } в условие, в котором назначена переменная props, затем повторите попытку.

Я собрал эти шаги вместе из информации, найденной здесь и здесь .


1
По поводу «2) Добавить запись ...». Добавить запись где?
— VikingGlen,

мне нравится идея автоматизации сборки
— Хуррам Шехзад

Спасибо, это отличный способ хранить производственные пароли вне системы контроля версий (поэтому они доступны не всем разработчикам)!
— фиктивный

15

Путь к файлу debug.keystore в Android Studio зависит от переменной среды ANDROID_SDK_HOME.

Если ANDROID_SDK_HOME определен, то файл помещается в подпапку SDK с именем .android .
Если не определено, то хранилище ключей размещается по домашнему пути пользователя в той же подпапке :
- % HOMEPATH% \. Android \ в Windows
- $ HOME / .android / в Linux


1
Не могли бы вы подробнее рассказать о своем ответе, добавив еще немного описания предлагаемого вами решения?
— abarisone

почему 87 человек думают, что это в ~ / .android / debug.keystore, у всех нет переменной окружения с именем "ANDROID_SDK_HOME" ???
— IloveIniesta 02

Это было очень полезно. Большое спасибо
— Рахул

4

Вот как я наконец создал файл ~ / .android / debug.keystore.

Сначала немного предыстории. У меня новый ноутбук для путешествий. Установил Android Studio. Клонировал мой проект Android из git hub. Проект не запускался. Наконец выяснилось, что debug.keystore не был создан ... и я не мог понять, как заставить Android Studio создать его.

Наконец, я создал новый пустой проект ... и в результате был создан debug.keystore!

Надеюсь, это поможет другим, у кого есть эта проблема.



1

Если вы используете Windows, вы обнаружите, что это делается следующим образом: Файл -> Структура проекта -> Фасеты.

выберите свой проект Android и в окне «Facet 'Android'» нажмите ВКЛАДКУ «Упаковка», вы найдете то, что хотите


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