如何解决Android SDK版本冲突?

问题描述:

我收到一条错误消息,说:“错误:(3)错误检索项的父项:找不到与给定名称匹配的资源'android:TextAppearance.Material.Widget.Button.Borderless.Colored'。”。搜索*,我发现这经常发生在SDK版本与支持库版本不匹配时。但是,据我所知,我正在运行版本23。这里是我的代码的gradle:如何解决Android SDK版本冲突?

的Android { compileSdkVersion 23 buildToolsVersion '23 .0.2'

defaultConfig { 
    applicationId "xxxxxxxxx" 
    minSdkVersion 23 
    targetSdkVersion 23 
    versionCode 15 
    versionName "2.1" 
} 

......还有......

依赖{

compile fileTree(dir: 'libs', include: ['*.jar']) 
testCompile 'junit:junit:4.12' 
compile 'com.android.support:appcompat-v7:23.1.1' 
compile 'com.android.support:design:23.1.1' 
compile 'com.google.android.gms:play-services-appindexing:8.1.0' 
compile('org.apache.httpcomponents:httpmime:4.3.1') { 
    exclude module: "httpclient" 
} 
compile('org.apache.httpcomponents:httpcore:4.3.1') { 
    exclude module: "httpclient" 
} 
compile 'com.facebook.android:facebook-android-sdk:[4,5)' 

}

所以对我来说,它看起来像我的程序无处不在使用SDK 23。这就是我想要的。但它不起作用。所以这是一个诊断问题。我怎样才能找到解决这些依赖关系的方法和方法?必须有一个地方被越过。我只需要跟踪发生的情况。

+0

使用最新的稳定构建工具,目前是25.0.3。总是喜欢最新的构建工具,这不必与编译SDK版本匹配。 *** /// ***切换到Google Play服务SDK版本9.8.0。播放服务SDK 8.x的目的是/取决于支持库22.x,所以可能会有问题来自此。 –

+0

谢谢。该代码最近与上周末一样干净地编译。所以我试图避免改变任何代码,除非我必须。至于诊断问题,A.Edwar的帖子非常完美。如果它没有被删除,我会将其标记为解决方案。我可以得到下面的错误信息“rror:Conflict with dependency'com.android.support:support- annotations'。解决版本的应用程序(25.3.1)和测试应用程序(23.1.1)不同。” – user2625768

+0

这意味着即使我明确指定了23.1.1,该应用程序也试图加载版本25.3.1。我还不知道*为什么*但至少我看到了这个问题。谢谢A.Edwar! – user2625768

由于此链接来自A. Edwar:https://*.com/a/35235229/7161261,此问题得到解决。使用推荐的诊断工具,我了解到应用程序试图加载与我的代码中指定的不同版本的支持库。原因是Facebook插件使用更新版本的库,并以某种方式压倒我。由于我无法更改Facebook插件,所以除了尝试Eugen Pechanec的建议并将我的代码更改为使用较新的SDK版本之外,我无法找到任何解决方法。现在起作用了。所以感谢A. Edwar和Eugen Pechanec。