什么是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" ... }
所以我想我有几个问题:
-
还有什么是用于
gradle.properties
文件? -
在
gradle.properties
(如iosched)中为依赖版本使用外部variables与在rootbuild.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_ALIAS
, RELEASE_KEY_PASSWORD
, RELEASE_STORE_FILE
, RELEASE_STORE_PASSWORD
, BASE_URL_PROD
, CONTACT_MAP_LATITUDE
, CONTACT_MAP_LONGITUDE
和GOOGLE_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,文件/