Подписывает ли Android Studio отладочные сборки? Если да, то где хранилище ключей, которое он использует для этого?
Подписывает ли Android Studio отладочные сборки? Если да, то где хранилище ключей, которое он использует для этого?
Ответы:
Он находится в том же месте: ~/.android/debug.keystore
Если вы используете Windows, вероятно, расположение будет таким:
C: \ Пользователь \ YourUser \ .android \ debug.keystore
При желании вы можете указать собственное хранилище ключей отладки. Это решение также дает вам возможность хранить ключи вне каталога проекта, а также автоматизировать процесс подписания. Да, вы можете перейти 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, затем повторите попытку.
Я собрал эти шаги вместе из информации, найденной здесь и здесь .
Путь к файлу debug.keystore в Android Studio зависит от переменной среды ANDROID_SDK_HOME.
Если ANDROID_SDK_HOME определен, то файл помещается в подпапку SDK с именем .android .
Если не определено, то хранилище ключей размещается по домашнему пути пользователя в той же подпапке :
- % HOMEPATH% \. Android \ в Windows
- $ HOME / .android / в Linux
Вот как я наконец создал файл ~ / .android / debug.keystore.
Сначала немного предыстории. У меня новый ноутбук для путешествий. Установил Android Studio. Клонировал мой проект Android из git hub. Проект не запускался. Наконец выяснилось, что debug.keystore не был создан ... и я не мог понять, как заставить Android Studio создать его.
Наконец, я создал новый пустой проект ... и в результате был создан debug.keystore!
Надеюсь, это поможет другим, у кого есть эта проблема.
Если вы используете Windows, вы обнаружите, что это делается следующим образом: Файл -> Структура проекта -> Фасеты.
выберите свой проект Android и в окне «Facet 'Android'» нажмите ВКЛАДКУ «Упаковка», вы найдете то, что хотите