我刚刚升级到Dart 2和最新版本的Flutter,现在我无法构建我的应用程序。我在互联网上环顾四周,但仍然不明白为什么会这样。
我得到的错误是:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:preDebugBuild'.
> Android dependency 'com.android.support:support-v4' has different version for the compile (26.1.0) and runtime (27.1.0) classpath. You should manually set the same version via DependencyResolution
Project build.grade:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.google.gms:google-services:3.2.1'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}
pubspec.yaml:
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.2
google_sign_in: ^3.0.2
firebase_auth: ^0.5.5
firebase_database: ^0.4.5
firebase_core: ^0.2.3
flutter_blue: ^0.3.3
dev_dependencies:
flutter_test:
sdk: flutter
# The following section is specific to Flutter.
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
我已将我的软件包更新到最新版本,并且我正在运行最新版本的Dart和Flutter。
我真的不明白导致此错误的是什么。
有人可以帮忙吗?
答案 0 :(得分:20)
将以下内容添加到Android项目级别build.gradle文件的“子项目”部分(在评论中由GünterZöchbauer提供的link中也提到):
subprojects {
project.evaluationDependsOn(':app')
//[PART TO ADD START]
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "27.1.0"
}
}
}
//[PART TO ADD END]
}
答案 1 :(得分:2)
我在Flutter制作“QR扫描仪应用程序”时遇到了同样的问题,我刚刚更改了 demoapp 中的“minSdkVersion 21” - > android - > 应用 - > build.gradle - > minSdkVersion ,效果非常好。 发生这种情况是因为flutter中的某些依赖性不支持低于21的minSdk。
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example"
minSdkVersion 21
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
答案 2 :(得分:1)
尝试 在Android Studio中打开项目 ,然后等待,使其同步,然后
将 build.gradile 更新为此 在构建脚本下的存储库中添加 google(),这样看起来
repositories {
jcenter()
google()
}
update classpath
classpath 'com.android.tools.build:gradle:3.1.1'
Update distributionUrl in gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
implementation "com.android.support:support-v4:27.1.1" // In case your targetting.
答案 3 :(得分:1)
打开您的项目级别 build.gradle 文件并添加以下代码段。
subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "26.1.0"
}
}
}
}
添加此项目后,您的项目级别 build.gradle 文件将如下所示:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "26.1.0"
}
}
}
}
GünterZöchbauer提供的解决方案。 link。这个对我有用。希望对您有所帮助。