【问题标题】:AndroidStudio Gradle Project Pulling in appcompat-v7 version 23.0.0 even though project says 22.2.1AndroidStudio Gradle 项目拉入 appcompat-v7 版本 23.0.0 即使项目显示 22.2.1
【发布时间】:2016-12-18 05:41:50
【问题描述】:

幕后发生了一些事情,由于依赖项堆栈中的冲突,我的项目将不再构建和/或运行。

我尝试修改依赖项的版本号,并且可以确认 facebookSDK 项目设置为使用支持 lib v22 构建。如何找出导致 v23 appcompat 支持库被拉入我的项目的原因?

这是我得到的构建错误:

/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.0.0/res/values-v23/values-v23.xml 错误:(2) 检索项目的父项时出错:未找到与给定名称匹配的资源 'android:TextAppearance.Material.Widget.Button.Inverse'。 错误:(2) 检索项目的父项时出错:未找到与给定名称“android:Widget.Material.Button.Colored”匹配的资源。

还有 gradle 信息:

android {
  compileSdkVersion 22
  buildToolsVersion "22.0.1"
  defaultConfig {
    ...
    minSdkVersion 15
    targetSdkVersion 22

    multiDexEnabled true
  }
}

dependencies {
  compile project(':facebookSDK')
  compile 'com.android.support:support-v4:22.0.0'
  compile 'com.android.support:appcompat-v7:22.2.1'
  compile 'com.google.android.gms:play-services:8.4.0'
  compile 'com.android.support:design:22.2.1'
  compile 'com.android.support:cardview-v7:22.2.1'
  compile 'com.android.support:multidex:1.0.0'
...
}

【问题讨论】:

    标签: android gradle


    【解决方案1】:

    您可以将这些行更新到最新版本,而不会影响您可以在哪个 API 级别运行代码。您缺少 v23 资源,因此至少使用版本 23 进行编译。

    compileSdkVersion 22
    buildToolsVersion "22.0.1"
    

    这些行应该是相同的版本,但是当您使用support:design 库时甚至不需要它们。随意删除这些。

    compile 'com.android.support:support-v4:22.0.0'
    compile 'com.android.support:appcompat-v7:22.2.1'
    

    对于这一行,我非常怀疑您是否使用了所有 Google play 服务。请在您的应用程序中阅读有关only using those you really need 的信息。

    compile 'com.google.android.gms:play-services:8.4.0'
    

    在您缩小了这些可能性之后,我建议您使用这些(根据经验,似乎工作正常)。

    compile 'com.android.support:design:23+'
    compile 'com.android.support:cardview-v7:23+'
    

    由于您没有显示 Facebook 依赖项,因此很难就此提供建议

    【讨论】:

    • 谢谢。能够修复它。您的建议帮助我理解了为什么下面的配置有效而我的配置无效
    【解决方案2】:

    Facebook 及其 facebook-android-sdk 试图尽可能保持其依赖关系的最新状态。 23.0.0Android 支持库版本有问题,我使用 23.1.1...:-)

    我强烈建议您将现有配置更改为以下配置:

    android {
      compileSdkVersion 24
      buildToolsVersion "24.0.1"
      defaultConfig {
        ...
        minSdkVersion 15
        targetSdkVersion 22
    
        multiDexEnabled true
      }
    }
    
    dependencies {
      compile 'com.android.support:support-v4:24.1.1'
      compile 'com.android.support:appcompat-v7:24.1.1'
      compile 'com.google.android.gms:play-services:8.4.0'
      compile 'com.android.support:design:24.1.1'
      compile 'com.android.support:cardview-v7:24.1.1'
      compile 'com.android.support:multidex:1.0.0'
    ...
      compile 'com.facebook.android:facebook-android-sdk:4.+'
    }
    

    看,你甚至可以添加 facebook-android-sdk 作为 Gradle 的依赖项,这样你就可以删除现有文件夹,而不必费心保持新鲜。

    您也可以保持较低的targetSdkVersion,当您不想实现 Android 权限或打盹模式兼容性等内容时,这很好。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2015-10-22
      • 2017-08-24
      • 1970-01-01
      相关资源
      最近更新 更多