Я уже давно разрабатывал приложения для Android, но пришел к пониманию, что до сих пор не знаю, для чего используется файл gradle.properties
.Что такое gradle.properties? (и используя внешние переменные)
Я читал немного через the Gradle documentation, в котором объясняется, что вы можете добавлять конфигурации для указания дома Java или параметров памяти, например. Есть ли что-то еще для этого?
Моей главной ссылкой на такие времена, как правило, является приложение с открытым исходным кодом для ввода-вывода Google, и, глядя на its gradle.properties
file, я вижу, что одним из них является сохранение переменных версии зависимостей, поэтому коды версий для Android зависимостей библиотеки поддержки, например, не каждый из них должен быть обновлен с новой версией библиотеки, так что одна переменная может быть обновлена:
...
// Android support libraries.
compile "com.android.support:appcompat-v7:${android_support_lib_version}"
compile "com.android.support:cardview-v7:${android_support_lib_version}"
compile "com.android.support:design:${android_support_lib_version}"
compile "com.android.support:support-v13:${android_support_lib_version}"
compile "com.android.support:recyclerview-v7:${android_support_lib_version}"
compile "com.android.support:preference-v7:${android_support_lib_version}"
...
Та же идея была использована для игры служб Google.
Однако, в одном из моих собственных проектов Android, я что-то подобное делать - я кладу переменную версию в корне build.gradle
файл следующим образом:
// Top-level build file where you can add configuration options
// common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.0.5-2'
repositories {
...
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
...
Тогда я использую его в моем модуль build.gradle
так:
dependencies {
...
// Kotlin standard library
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
...
}
так что я думаю, у меня есть несколько вопросов:
Что еще файл
gradle.properties
?В чем разница между использованием внешней переменной для версий зависимостей в
gradle.properties
(как в iosched), а также внешней переменной в корнеbuild.gradle
(как я это делал)?- Какой предпочтительный метод, если он есть?
- Есть ли преимущества/недостатки в том, чтобы сделать это одним конкретным способом?
-- все, что вы хотите. Я использую их для локальных настроек, таких как пути к локальным репозиториям Maven, URL-адресам для тестовых серверов и т. Д., Тогда я не фиксирую 'gradle.properties' контроль версий. – CommonsWare
Спасибо за ваш комментарий, @CommonsWare. Не могли бы вы показать мне пример? Кроме того, сможете ли вы указать мне предпочтительный способ настройки внешних переменных (или, если хотите, нет)? Еще раз спасибо. –
Пример Матиаса - это в значительной степени то, что я делаю. Я не могу сказать, что такое «предпочтительный путь» по всем направлениям. Для некоторых вещей переменные среды интересны, просто потому, что Android Studio * не поддерживает их, и поэтому вы можете использовать их для вещей, которые не должны быть построены из среды IDE (например, выпусков). Лично я склонен использовать 'gradle.properties', потому что это простой способ отделить локальную конфигурацию от материала, подходящего для всех. – CommonsWare