什么是gradle.properties用于? (并使用外部variables)

我已经开发了一段时间的Android应用程序了,但是我意识到我还不知道gradle.properties文件是用来做什么的。

我已经通过Gradle文档了解了一些,例如,您可以添加用于指定Java Home或内存设置的配置。 还有什么可以用的吗?

我这个时代的主要参考通常是Google I / O开源应用程序,看着它的gradle.properties文件 ,我可以看到它的一个用处是存储依赖版本variables,所以Android的版本代码例如,支持库依赖关系不需要每个库的新版本都需要更新,只需要更新一个variables即可:

 ... // 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 Play服务使用了相同的想法。

然而,在我自己的Android项目中,我一直在做类似的事情 – 我把我的版本variables放在root 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使用它, build.gradle所示:

 dependencies { ... // Kotlin standard library compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" ... } 

所以我想我有几个问题:

  1. 还有什么是用于gradle.properties文件?

  2. gradle.properties (如iosched)中为依赖版本使用外部variables与在root build.gradle使用外部variables(正如我一直在做的)之间有什么build.gradle

    • 如果有的话,哪个是首选的方法?
    • 这样做有什么优点/缺点吗?

我正在使用它(内app/build.gradle ):

 signingConfigs { release { keyAlias RELEASE_KEY_ALIAS keyPassword RELEASE_KEY_PASSWORD storeFile file(RELEASE_STORE_FILE) storePassword RELEASE_STORE_PASSWORD } } productFlavors { .... prod { applicationIdSuffix ".prod" buildConfigField "String", "BASE_URL", BASE_URL_PROD } .... } buildTypes.each { it.buildConfigField "Double", "CONTACT_MAP_LATITUDE", CONTACT_MAP_LATITUDE it.buildConfigField "Double", "CONTACT_MAP_LONGITUDE", CONTACT_MAP_LONGITUDE it.resValue "string", "google_maps_api_key", GOOGLE_MAPS_API_KEY } 

RELEASE_KEY_ALIASRELEASE_KEY_PASSWORDRELEASE_STORE_FILERELEASE_STORE_PASSWORDBASE_URL_PRODCONTACT_MAP_LATITUDECONTACT_MAP_LONGITUDEGOOGLE_MAPS_API_KEY都在gradle.properties ,并且该文件不会被推送到git

例:

gradle.properties:BASE_URL_PROD BASE_URL_PROD = "http://something.com/api/"

build.gradle: buildConfigField "String", "BASE_URL", BASE_URL_PROD

java文件: BuildConfig.BASE_URL

编辑:也,在这里,你可以find一个服务器应用程序(春季)的例子: https : //melorriaga.wordpress.com/2016/08/06/gradle-dont-store-api-keys-and-db-information-in -versioned,文件/