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

107

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

фастек
источник
1
Он все равно подписывается, потому что могут быть установлены только подписанные сборки.
Александр Куляхтин
3
Я думаю, это правильный вопрос программирования. Это напрямую связано с набором инструментов, используемым при разработке приложений для Android.
Остин Махони, 02 авг.13,
@Prachi, как это может быть дубликатом вопроса, заданного более 3 лет спустя? Может, это другая копия этого.
fasteque
Смотрите также stackoverflow.com/questions/12456491/...
CAW

Ответы:

179

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

user2396466
источник
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

Spatz
источник
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

На Mac вы найдете его здесь: /Users/$username/.android.

Ручита
источник
1

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

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

万 文 龙
источник
2
Нет такого меню, как «Грани»
Игорь Ганапольский