android studio 3.0 Canary 1:项目刷新失败

我试图加载我的项目在这个新的Android Studio 3.0 Canary 1 。 它在我之前的Android Studio版本2.4预览版7中完美运行

这是我正面临的错误:

Error:Could not resolve all dependencies for configuration ':sample:devCompileClasspath'. Project :sample declares a dependency from configuration 'devCompile' to configuration 'dev' which is not declared in the descriptor for project :library. 

我的gradleconfiguration如下:

项目级别构buildGradle:

 buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.0-alpha1' classpath 'com.google.gms:google-services:3.0.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } 

库模块Gradle:

 apply plugin: 'com.android.library' apply plugin: 'checkstyle' android { publishNonDefault true compileSdkVersion 25 buildToolsVersion "25.0.3" defaultConfig { minSdkVersion 19 targetSdkVersion 25 versionName project.VERSION_NAME versionCode project.VERSION_CODE.toInteger() } packagingOptions { exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' exclude 'AUTHORS' exclude 'NOTICE' } buildTypes { debug { debuggable true } dev.initWith(buildTypes.debug) staging.initWith(buildTypes.debug) release { minifyEnabled false shrinkResources false } } } repositories { flatDir { dirs 'libs' } mavenLocal() jcenter() } def ANDROID_SUPPORT_VERSION = "25.3.1" def OK_HTTP3_VERSION = "3.6.0" def GLIDE_VERSION = "3.7.0" def GSON_VERSION = "2.8.0" def AWS_KINESIS_VERSION = "2.4.2" def PLAY_SERVICE_VERSION = "10.2.4" dependencies { compile(name: 'library-release', ext: 'aar') compile "com.android.support:appcompat-v7:$ANDROID_SUPPORT_VERSION" compile "com.android.support:design:$ANDROID_SUPPORT_VERSION" compile "com.android.support:cardview-v7:$ANDROID_SUPPORT_VERSION" compile "com.squareup.okhttp3:okhttp:$OK_HTTP3_VERSION" compile "com.squareup.okhttp3:okhttp-urlconnection:$OK_HTTP3_VERSION" compile "com.squareup.okhttp3:logging-interceptor:$OK_HTTP3_VERSION" compile "com.google.code.gson:gson:$GSON_VERSION" compile "com.google.firebase:firebase-messaging:$PLAY_SERVICE_VERSION" compile "com.google.android.gms:play-services-location:$PLAY_SERVICE_VERSION" compile "com.github.bumptech.glide:glide:$GLIDE_VERSION" checkstyle('com.puppycrawl.tools:checkstyle:7.6.1') compile "com.amazonaws:aws-android-sdk-kinesis:$AWS_KINESIS_VERSION" } apply plugin: 'com.google.gms.google-services' task checkstyle(type: Checkstyle) { showViolations = true configFile file("config/checkstyle/checkstyle.xml") description 'applies the checkstyle config to the java files' source 'src/main/java' include '**/*.java' exclude '**/gen/**' // empty classpath classpath = files() } preBuild.dependsOn('checkstyle') 

应用程序模块Gradle:

 apply plugin: 'com.android.application' android { compileSdkVersion 25 buildToolsVersion "25.0.3" defaultConfig { applicationId "com.sample.and" minSdkVersion 19 targetSdkVersion 25 versionName project.VERSION_NAME versionCode project.VERSION_CODE.toInteger() android.defaultConfig.vectorDrawables.useSupportLibrary = true } buildTypes { debug { debuggable true minifyEnabled false shrinkResources false } dev.initWith(buildTypes.debug) dev { applicationIdSuffix ".dev" } staging.initWith(buildTypes.debug) staging { applicationIdSuffix ".staging" } release { shrinkResources false minifyEnabled false } } } repositories { flatDir{ dirs '../library/libs' } mavenLocal() jcenter() } configurations { releaseCompile stagingCompile devCompile } dependencies { compile 'com.android.support:appcompat-v7:25.3.1' releaseCompile (project(path: ':library', configuration: 'release')) { transitive = true } stagingCompile (project(path: ':library', configuration: 'staging')) { transitive = true } devCompile (project(path: ':library', configuration: 'dev')) { transitive = true } } 

有没有人面临同样的问题?

Solutions Collecting From Web of "android studio 3.0 Canary 1:项目刷新失败"

查看迁移提示: 使用Flavor Dimensions进行变体感知依赖pipe理

正如它所述:

插件3.0.0包含一个新的依赖机制,在使用库时会自动匹配变体。 这意味着应用程序的debugging变体会自动使用库的debugging变体等等。 它也适用于使用风味 – 一个应用程序的redDebug变种将消耗一个库的redDebug变种。 为了使这个工作,插件现在要求所有的味道属于一个命名的味道维度 – 即使你打算只使用一个维度。 否则,你会得到以下的构build错误:

 Error:All flavors must now belong to a named flavor dimension. The flavor 'flavor_name' is not assigned to a flavor dimension. 

要解决此错误,请将每个flavor指定给一个命名的维度,如下面的示例所示。 因为依赖关系匹配现在由插件处理,所以您应该仔细地命名您的味道尺寸。 例如,如果您的所有应用程序和库模块都使用foo维度,那么您将很less控制插件​​所匹配的风格。

 // Specifies a flavor dimension. flavorDimensions "color" productFlavors { red { // Assigns this product flavor to the 'color' flavor dimension. // This step is optional if you are using only one dimension. dimension "color" ... } blue { dimension "color" ... } 
  flavorDimensions "mode" productFlavors { dev { // Assigns this product flavor to the "mode" flavor dimension. dimension "mode" versionName "1.2" versionCode 02 } uat { // Assigns this product flavor to the "mode" flavor dimension. dimension "mode" versionName "1.2" versionCode 2 } live { // Assigns this product flavor to the "mode" flavor dimension. dimension "mode" versionName "1.0.1" versionCode 01 } } 

这是为我工作! 在你的情况下,你应该只是一个flavorDimensionsvariables,并在开发块内分配的值

flavorDimensions“anyvalue”

dev.initWith(buildTypes.debug)

  dev { dimension "anyvalue" applicationIdSuffix ".dev" } 

这应该有所帮助。