首页 > 解决方案 > 在哪里存储 gradle 依赖版本

问题描述

我在网上查看并遇到了两种不同的方式来存储 Android 应用程序的 gradle 版本。一个是ext 对象下gradle.properties的根文件,另一个是根文件。build.gradle这两个都可以从所有其他模块访问。我只是想弄清楚每个之间的区别以及推荐使用哪一个,为什么?

构建.gradle

ext {
    versionName = "1.10.10"
    androidGradleTools = "3.4.1"
    compileSdkVersion = 29
    minSdkVersion = 23
    targetSdkVersion = 29
    versionCode = 2
    appCompat = "1.1.0-rc01"
    archCore = "2.0.1"
    material = "1.1.0-alpha09"
    kotlinVersion = "1.3.31"
    kotlinExtensions = "1.1.0-rc01"
    constraintLayout = "1.1.3"
    awsAuth = "2.7.4"
    coordinatorLayout = "1.1.0-beta01"
    eventBus = "3.1.1"
    jUnit = "4.13-beta-3"
    testRunner = "1.2.0"
    espressoCore = "3.2.0"
    annotation = "1.1.0"
    lifecycleViewModel = "2.2.0-alpha02"
    lifecycleExtensions = "2.2.0-alpha02"
    roomVersion = "2.1.0"
    retrofit = "2.6.0"
    okHttp3 = "4.0.0"
    firebaseCommon = "11.4.2"
    crashlytics = "2.10.1"
    slf4Android = "0.1.5"
    butterknife = "10.1.0"
    rabbitMQ = "4.11.1"
    picasso = "2.5.2"
    gson = "2.8.5"
    javaPusher = "1.8.2"
    androidVolley = "1.0.19"
    multidex = "2.0.0"
    googlePlayCore = "1.6.1"
    volley = "1.0.19"
    navController = "2.2.0-alpha01"
    kotlinCoroutines = "1.1.1"
    ktor_version = "1.2.3"
    asyncHttp = "1.4.9"
}

gradle.properties

# Dependent library versions
android_google_gson_version=2.7
android_google_play_core_version=1.4.1
eventbus_version=3.0.0
squareup_retrofit2_version=2.1.0
squareup_ok_http_version=3.3.1
network_ok_http_logging_interceptor=3.3.1
aws_sdk_auth_core_version=2.7.4
fb_stetho_version=1.5.0
fb_sdk_version=4.37.0
picasso_lib_version=2.5.2
crashlytics_lib_version=2.9.4@aar
volley_lib_version=1.0.19
butterknife_lib_version=8.8.1
commons_io_lib_version=2.4
simbio_encryption_lib_version=1.2.0
anko_common_lib_version=0.8.3
slf_4_android_logger_version=0.1.5

标签: androidgradleproperties

解决方案


我建议您将版本号存储在ext {}块中。它仅代表您定义的“额外属性”。

为什么不应该使用 gradle.properties?好吧,如果我们查看文档,我们可以看到 gradle.properties 应该是一个包含项目所需的更多“抽象”属性的文件。诸如 Java 主页或启用/禁用 Gradles 缓存之类的东西。在 Android 中,我们还有local.properties文件,例如声明 Android Sdk 的路径。

因此,这些类型的属性在与声明依赖项不同的级别上处理您的项目。

因此,我建议您使用 ext 块来声明依赖版本。这也是 Android 文档的建议。


推荐阅读