build.gradle 警告 'avoid using + in version numbers'

build.gradle warning 'avoid using + in version numbers'

这是我的 build.gradle 应用级文件。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.2"
    defaultConfig {
        applicationId "it.myco.app.myproj"
        minSdkVersion 16
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
}

Android Studio 突出显示行

compile 'com.android.support:appcompat-v7:26.+'

与消息

avoid using + in version numbers can lead to unpredictable and unrepeatable builds

此行由 Android Studio 自动生成。为什么出现此警告消息?我需要写什么来解决警告?

替换为最新版本的库。通常 AS 会在你 alt + enter 警告时显示最新版本。

More info on the reasons

您可以使用

compile 'com.android.support:appcompat-v7:26.1.0'

不要在依赖版本中使用+。这意味着 Android studio 将使用最新的库,这可能会在将来引起问题。在 android studio 中,建议使用所有具有相同版本的 android 库,假设您正在使用 + 并且如果任何单个库得到更新,那么 android studio 将使用更新后的库,因此版本因为这个图书馆将会改变。这会导致构建应用程序出现问题。

这就是 gradle 发出此警告的原因。最好写完整的版本号而不是 +.

这是一个正常的警告。

你最好选择一个具体的版本,而不是那样做。这是因为如果您使用“+”,它会选择最新的,因此在新版本中,您可能会得到一些已弃用或意外的更改,这些更改会使您的应用程序死掉。认为如果你在一个巨大的项目中使用它,你将有很多依赖,所以它会是一个混乱的环境。

使用特定版本,如果有新版本...请手动更新。

要解决警告并选择最新版本,如果您使用的是Windows,请单击Alt+Enter,它将选择最新版本。

如果它不起作用,您将不得不在 Internet 上或在“项目结构”>“模块”>(您的模块)>“依赖项”> +

中搜索它

有一天,其他人可能会对您的代码执行 git pull,然后尝试构建 apk。此 apk 可能有不同的行为,甚至出现构建错误或 运行 时间错误,因为依赖项版本可能与您创建此代码时使用的依赖项版本不同。

您应该使用显式依赖版本。我建议使用最新版本。您可以在 bintray jcenter 上搜索以查看最新版本。如果您使用的是 Android Studio,File -> Project Structure -> Modules -> (your module, app usually) -> Dependencies -> Add library dependency (click the + sign) 将为您提供最新版本,甚至会自动添加库。

Why this warning message?

在这里你可以找到关于这个话题的good blog

动态版本为您的构建添加不确定性

  • 依赖项可能会意外地为您的应用引入行为更改。

  • 相同的源建立在两个 不同的机器可以不同。

  • 同样,在同一台机器上构建但是 在不同的时间可以不同。

  • 过去的构建不能 完美再现。这使得很难安全地恢复。

  • 有 如果不良行为者引入恶意软件,是否会产生安全隐患 依赖项的版本。

What I need to write to solve the warning ?

始终明确指定您的依赖项版本。