2017-10-17 96 views
3

这是我的build.gradle应用程序级文件。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.+' 

可能导致不可预测和 绝后构建

此行是由Android Stu自动生成的DIO。为什么这个警告信息?我需要写什么来解决警告?

+0

[如何避免在SQLiteAssetHelper中使用版本号+的可能重复](https://stackoverflow.com/questions/39710042/how-to-avoid-using-in-version-number-with-sqliteassethelper) – jdv

回答

2

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

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

+0

这个答案给出了一个具体的场景来解释发生了什么问题。然后进一步展示如何获得最新的依赖关系。我只是做了一些小改动来改善措辞。 –

+0

@RickMajpruz谢谢,对不起我的英文不好:) – BaiJiFeiLong

+0

我不清楚如何导航到'Dependencies - > Add library dependency'。大概我应该提出“项目结构”选项卡,但那又如何?我没有看到顶部的菜单条目,我尝试右键单击,但在右键菜单中看不到“Dependencies”。也许这应该是一个单独的问题。我正在使用Android Studio 2.3.3。 –

1

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

More info on the reasons

1

您可以使用类似

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

不要依赖版本使用+。这意味着Android工作室将使用最新的库,这可能会导致未来的问题。在android工作室,建议使用所有的android库相同的版本,假设你使用+,如果任何单个库得到更新,然后android studio将使用该更新的库,所以这个库的版本将会改变。导致建立应用程序的问题。

这就是为什么gradle给这​​个警告。编写完整版本号码而不是+号码是最好的做法。

1

这是一个正常的警告。

最好你选择一个具体的版本比去那种方式。这是因为如果你使用“+”,它会选择最新版本,所以在新版本中,你可能会得到一些不赞成或意想不到的更改,这些更改会让你的应用死掉。想想如果你在一个巨大的项目中使用它,你将会有很多的依赖关系,所以它会是一个混乱的环境。

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

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

如果不工作,你将不得不寻找它在互联网上或在项目结构>模块>(你的模块)>相关性> +

1

为什么会出现此警告消息?

在这里您可以找到关于此主题的good blog

动态版本中添加了不确定性到您的构建

  • 依赖性会意外地引入行为更改您的应用程序。

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

  • 同样,在同一台机器上构建的版本,但在不同时间段的 可能不同。

  • 过去的版本不能 转载完美。这使得难以安全地恢复。

  • 还有 是安全隐患,如果坏角色引入恶意 版本的依赖项。

我需要写什么来解决警告?

请务必明确指定您的依赖版本。

+1

这也是一个很好的答案,就像我标记为解决方案的其他答案一样。 – Fedro