无法解决依赖关系 Android Studio 3.0

40
拥有更新的Android Studio 3.0是很好的事情。但是我面临着一个问题,在Android Studio 3.0中创建了一个新项目,然后遇到了一些错误。

我通过将dependencies更改为最新版本来解决这些问题并解决了它们。

但是,当我添加了一个facebook account-kit sdkdependency com.facebook.android:account-kit-sdk:4.+时,我遇到了以下错误:

Error:Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve com.facebook.android:account-kit-sdk:4.+. Open File
Show Details

build.gradle(app)

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "ultimate.devil.logintest"
        minSdkVersion 15
        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 {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.facebook.android:account-kit-sdk:4.+'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

注意 -:

  • 我正在遵循Facebook开发者文档

  • 我尝试通过将compile更改为implementation来解决问题

  • 我还尝试通过谷歌最新版本的Facebook账户工具包SDK com.facebook.android:account-kit-sdk:4.11.0com.facebook.android:account-kit-sdk:4.27 来更改 com.facebook.android:account-kit-sdk:4.+

  • 我还尝试过在StackOverFlow上查找可能有类似问题的答案,但没有人帮助我

截图

enter image description here


我也遇到了同样的问题。有什么进展吗? - Basant Singh
@BasantMatharu 找到解决方案,请查看下面的答案。 - UltimateDevil
感谢您,@Pavneet_Singh。 - UltimateDevil
遇到了同样的问题,通过使用这个链接解决了它。 - Maybelle Pacate
11个回答

74

经过一些研究,我解决了这个问题。

步骤1-:

我在设置中禁用了Gradle离线工作

文件 > 设置 > 构建、执行、部署 > Gradle > 取消选中“离线工作”

输入图像说明

步骤2-:

然后,我只是将compile 'com.facebook.android:account-kit-sdk:4.+'更改为api 'com.facebook.android:account-kit-sdk:4.+'

我不知道为什么它会起作用。我在文档中看到了api 参考

现在它可以工作了 :)

编辑 -

现在,我能够同时使用apiimplementation,一切都正常了。

谢谢,


你是一个救命稻草。 - Thecarisma
@UltimateDevil,你能给我一些建议吗?https://stackoverflow.com/questions/50027624/unable-to-resolve-dependency-for-appdebug-compileclasspath-could-not-resolv - Nikson
找到你的答案就像:暴徒人生。 - Ravinder Payal

6
在编译失败的buildType中添加matchingFallbacks = ['release', 'debug']
例如,我遇到了一个releaseStaging的错误:
buildTypes {
    debug {
        buildConfigField "String", "CODEPUSH_KEY", '""'
    }
    releaseStaging {
        buildConfigField "String", "CODEPUSH_KEY", 'myKey'
        signingConfig signingConfigs.release
        matchingFallbacks = ['release', 'debug']
    }
    release {
        buildConfigField "String", "CODEPUSH_KEY", 'myKey'
        minifyEnabled enableProguardInReleaseBuilds
        proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        signingConfig signingConfigs.release
    }
}

4
我两天前也遇到了类似的错误,刚刚在这里解决了。
此外,正如最新Gradle版本发布的说明中所提到的,您应该避免使用带有版本号的动态依赖项。
com.facebook.android:account-kit-sdk:4.+

尝试将其替换为适当的版本号,如4.0.0或最新版本。希望这样能解决问题。


感谢您的回答@prdp89。但是正如您在我的问题中所看到的那样,我已经提到我尝试过更改account-kit sdk的版本。 - UltimateDevil
@UltimateDevil,我们能看到更详细的堆栈跟踪吗? - Pardeep Sharma
不幸的是,这是我在Android Studio中获得的唯一堆栈跟踪。我已经附上了屏幕截图。 - UltimateDevil
将以下代码改为完整版本,适用于我的项目:[implementation 'com.facebook.android:account-kit-sdk:4.34.0'] - Osiris
同时,它是4.35.0版本......刚刚添加了一个答案,其中包含所有的构建工件。 - Martin Zeitler

2

简短故事:

降级到Gradle 4.2.1

详细故事:

我使用的Gradle版本是4.3,根据这个答案(链接),因为那个问题和我的错误相同。但修改后,我开始遇到了你现在的问题。

降级到版本4.2.1后,你的问题消失了。现在我必须回到之前的问题上。

当我用Android Studio 3.0gradle plugin 3.0.0编译我的项目时,我也遇到了这个问题

如果我有其他问题,我会在这里发布更新。


修复了这种问题。看一下。https://dev59.com/hFYN5IYBdhLWcg3wwKdZ#47101413 - Arvind Anandala

2
所有Facebook的Account Kit SDK构建工件都可以在Maven Central找到:Maven Central
// https://mvnrepository.com/artifact/com.facebook.android/account-kit-sdk
api 'com.facebook.android:account-kit-sdk:4.35.0'

相应的存储库是:

repositories {
    mavenCentral()
}

Gradle未处于“离线”模式,这被视为默认情况。

1
我遇到了同样的问题,通过将 apply plugin: 'com.android.application' 更改为 apply plugin: 'com.android.library' 来解决它。
关于我的问题,它与你的有点不同。我有第二个带有 Android 库的模块,并且来自 Android 开发者页面下的 "将应用程序模块转换为库模块" 部分。我的猜测是这与在架构内管理清单文件有关,因此 Android 将知道主清单文件的位置。
关于 apiimplementation,答案可以在 这里 找到。

应该使用 api 配置来声明由库 API 导出的依赖项,而应该使用 implementation 配置来声明组件内部的依赖项。


1
我通过清空该目录来解决这个问题:

c:\Users\User name\\.gradle\caches\

0
降级这两个文件可以解决问题:
将项目的 build.gradle 降级到 3.1.4 版本, 将 gradle-wrapper.properties 降级到 4.4 版本。

0

遇到了同样的问题。尝试了所有方法,最终意识到是网络不允许同步依赖项。使用热点进行尝试,问题得以解决。


0
看到一个旧项目,显示“构建”成功。所以我检查了build.gradle文件。比较这两个项目,我发现依赖版本号有变化。然后我只是从旧项目中复制了版本号,它就起作用了。在android{}中还有一个BuildUsing或者类似的东西,我从我的新项目中删除了它(它不在我的旧项目中)。我认为这是由于不完整或损坏的gradle更新引起的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接