Чтобы узнать, где вы должны поместить gradle.properties
Извлеките весь конфиг подписи Первый вариант является, чтобы извлечь все конфигурации подписи в отдельный файл пользователя. Создайте новое свойство в ваших gradle.properties:
MyProject.signing =/главная/имя пользователя/.signing/MyProject
MyProject не должны совпадать имен приложений или таким образом, вы можете на самом деле Назовите свойство, которое вам нравится. Также, если вы используете Windows, вместо \.
Поместите свое хранилище ключей в /home/username/.signing/myproject.keystore.
Теперь создайте имя файла myproject.gradle в /home/username/.signing (при необходимости создайте папку). Этот файл будет содержать вашу подпись, которая должна использоваться для подписи пакета. Это может выглядеть следующим образом:
android {
signingConfigs {
release {
storeFile file(project.property("MyProject.signing") + ".keystore")
storePassword "mypassword"
keyAlias "KeyAlias"
keyPassword "mypassword"
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
Теперь пришло время настроить фактический файл build.gradle в проекте вы хотите использовать этот подписной конф. Просто добавьте следующие строки:
if(project.hasProperty("MyProject.signing")
&& new File(project.property("MyProject.signing") + ".gradle").exists()) {
apply from: project.property("MyProject.signing") + ".gradle";
}
только извлечь некоторые переменные из файла
project.ext {
uploadRepo = 'http://....'
uploadUser = 'myusername'
uploadPass = 'mypass'
}
Теперь убедитесь, что вы используете только переменные, если они доступны, поставив конфигурацию в случае после того, как вы загрузили файл. Так что ваш build.gradle может выглядеть так:
if(project.hasProperty("MyProject.signing")
&& new File(project.property("MyProject.signing") + ".gradle").exists()) {
apply from: project.property("MyProject.signing") + ".gradle";
// Configure stuff that relies on these variables
uploadArchives {
repositories.mavenDeployer {
repository(url: uploadRepo) {
authentication(userName: uploadUser, password: uploadPass)
}
}
// .. whatever else you need ...
}
}
только извлечь некоторые строки из файла снова добавить путь к вашей gradle.properties (давайте делать это полный путь на этот раз):
MyProject .properties =/главная/имя пользователя/.signing/myproject.properties
if(project.hasProperty("MyProject.properties")
&& new File(project.property("MyProject.properties")).exists()) {
Properties props = new Properties()
props.load(new FileInputStream(file(project.property("MyProject.properties"))))
android {
signingConfigs {
release {
storeFile file(props['keystore'])
storePassword props['keystore.password']
// ...
}
}
}
}
Просто генерировать с просто свойства файла на /home/username/.signing/myproject.properties:
keystore =/path/to/my/keystore keystore.password = mypassword
Где вы создали файл version.properties? Благодарю. – Canato
В корне проекта. – Dhrupal
Отличное решение. Позвольте мне только одно небольшое разъяснение: 'assemleRelease' не может быть напрямую адресовано при наличии нескольких проектов с разделенными файлами сборки, поскольку задача динамически создается. Вместо этого вы должны использовать 'afterEvaluate'! afterEvaluate {проект -> project.tasks.assembleRelease << { ... }} – Balage1551