无法解决com.android.support:appcompat-v7:22和com.android.support:recyclerview-v7:21.1.2。

61
我安装了ALL ExtraSDK API 21-22,并进行了修改,包括将compileSdkVersion 22改成了21,将buildToolsVersion '22.0.1'改成了21.1.2
我在使用API 22时遇到了渲染问题。我尝试将版本更改为<= 21,但仍然出现错误。

根据您的 compileSdkVersion 从这里选择:https://developer.android.com/studio/releases/build-tools.html - uniruddh
17个回答

126

以下是您可以根据API需求添加到build.gradle的正确版本。

API 24:

implementation 'com.android.support:appcompat-v7:24.2.1'
implementation 'com.android.support:recyclerview-v7:24.2.1'

API 25:

implementation 'com.android.support:appcompat-v7:25.4.0'
implementation 'com.android.support:recyclerview-v7:25.4.0'

API 26:

implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:recyclerview-v7:26.1.0'

API 27:

implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:recyclerview-v7:27.1.1'

38
有没有一个 Android 资源可以查看不同版本的信息? - powder366
2
appcompat-v7 23.3.0 已经发布。 - CSchulz
在开始之前,请确保按照其他答案中建议的方式安装了Android Support Reporistory。 - Nic Nilov
那么 com.android.support:appcompat-v7:24.2.1 呢? - Farooq Khan
1
答案已经过时了。 - Myoch
显示剩余3条评论

25
为了使其正常工作,我必须进行以下设置:
compile ("com.android.support:support-v4:22.2.0")
compile ("com.android.support:appcompat-v7:22.2.0")
compile ("com.android.support:support-annotations:22.2.0")
compile ("com.android.support:recyclerview-v7:22.2.0")
compile ("com.android.support:design:22.2.0")

编译 ("com.android.support:design:22.2.0")

文档说明与之不同 (文档):

com.android.support:support-design:22.0.0


24

支持库实际路径:

enter image description here

  1. 您应该下载支持库。

如果问题仍然存在:

  1. 前往您的支持库实际路径并检查以下文件夹是否存在:

    "ANDROID_SDK_DIRECTORY\extras\android\m2repository\com\android\support" 
    

    在那个文件夹里有找不到的支持库。 例如:

    "ANDROID_SDK_DIRECTORY\extras\android\m2repository\com\android\support\appcompat-v7"
    
  2. 打开文件夹appcompat-v7,你会看到所有可用版本的文件夹。在build.gradle文件的dependencies中,你应该只使用这些版本中的一个,或者使用+,例如18.0.+。

  3. dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:18.0.+'
        compile 'com.android.support:gridlayout-v7:23.1.1'
        compile 'com.android.support:support-v4:23.1.1'
    }
    
    那是从grade.build依赖文件中取得的路径:
    com.android.support:appcompat-v7:18.0.0
    

    请参考您硬盘驱动器上的实际路径 -->

    ANDROID_SDK_DIRECTORY\extras\android\m2repository\com\android\support\appcompat-v7\18.0.0
    
    如果没有这样的文件夹,你会收到以下错误信息:
    "failed to resolve com.android.support:appcompat-v7:18.0.0"  
    

    p.s. 如果您使用的是 Windows x64,安装 SDK 和 JDK 时,请确保安装路径中不包含 Program Files(86)。这样括号中添加的 "Windows" 可能会导致解析项目路径时出现额外的问题。请使用简单的路径作为您的安装文件夹。

    例如:

    c:\androidSDK\
    

我没有这样的文件夹,因此出现了你提到的错误:“无法解析...”。从这里开始,我该如何解决这个问题?有什么想法吗? - Srujan Barai

17

无法找到:com.android.support:appcompat-v7:22.0.0

"我已经尝试了所有其他方法"的答案:

如果您没有最新的Android支持库和Android支持存储库,也会出现此问题。只需使用SDK管理器进行安装即可。


不是说其他答案是错误的,但对我来说问题是我们的构建机器没有更新的支持库。 - fawaad
2
当然不是。但是当你在谷歌上搜索这个错误并尝试每种编译的变化,却仍然无法解决问题时,通常就是这个原因,而且很难自己找出来。很高兴它能帮到你! - Paul Totzke

9
除了提供的其他解决方案外,确保在 project/build.gradle 文件中包含以下内容:
allprojects {
    repositories {
        jcenter()
        maven {
            url "https://maven.google.com"
        }
    }
}

2

我来解决它

将22.0.0更改为21.0.3

dependencies {

 compile fileTree(dir: 'libs', include: ['*.jar'])

//compile 'com.android.support:appcompat-v7:22.0.0'

compile 'com.android.support:appcompat-v7:21.0.3'  }

也许我已经下载了com.android.support:appcompat-v7:21.0.3,但没有得到compile 'com.android.support:appcompat-v7:22.0.0'

当我使用SDK管理器更新我的support librarysupport repository时,问题消失了。


2

在支持库中,您总是需要添加三个数字的版本号。

例如对于22 -> 您需要将其写为22.0.0,并非仅仅是22

对于22.1 -> 22.1.0

因此,您的依赖应该像这样:

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

在程序员语言中,你需要补充额外的零。

希望这能解决你的问题。


1
当你更新了支持库到22.0.0,使用“21.1.2”时出现错误是不正确的说法。因此,21.1.2不再存在。但是,更新库并不意味着不能使用旧版本。 - priyank

2

注意1: 所有的com.android.support库必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。

注意2: 支持库不应该使用与compileSdkVersion不同的版本。

对于API 28,您可以使用:

implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'
implementation 'com.android.support:recyclerview-v7:28.0.0-alpha1'

https://mvnrepository.com/artifact/com.android.support/appcompat-v7/28.0.0-alpha1 https://mvnrepository.com/artifact/com.android.support/recyclerview-v7/28.0.0-alpha1

所有支持库:https://mvnrepository.com/artifact/com.android.support


1
在版本号中使用“+”符号更加简单。例如:
compile 'com.android.support:support-v4:22.0.+'
compile "com.android.support:appcompat-v7:22.0.+"

在这种情况下,您不需要更改相同API编号的版本。

除非你完全确定,否则请不要使用加号,因为它会导致不可预测的行为。 - user4774371
4
我在《Android开发者文档》的几个主题中看到在build.gradle文件中使用“+”号的写法。例如,链接1链接2 以及其他一些页面(需要滚动页面才能看到)。文档中没有提到任何问题,并且我也从未遇到过任何问题。但如果您遇到了问题,添加一些描述问题的链接会很有帮助。 - Kate
如果您使用+号,您的构建将具有动态行为,您将无法确定将解析哪个版本。外部更改可能会导致错误。 - LGama

1
allprojects {
    repositories {
        google()
        jcenter()
        maven {
            url "https://maven.google.com"
        }
    }
}

答案重复。请参见上面的Ashraf Alshahawy的答案。 - Mo Zaatar
@MoZaatar 这不是重复的答案,我想要表明的是,如果你把google()这一行放在下面,那么仍然会出现这个错误,所以应该把它放在所有代码的顶部,就像我的答案一样。我没有抄袭任何人的答案。 - Makvin
@MoZaatar 如果那些回答中有google()行,那么我会选择编辑或评论。为什么我要提供一个新的答案呢?我用这种方式解决了这个问题,所以我把我的答案放在那里。 - Makvin

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