首页 文章

检索项目的父项时出错:升级到AppCompat v23后找不到与给定名称匹配的资源

提问于
浏览
741

我一直用Eclipse编程Android,并决定开始迁移到Android Studio . 我决定使用我已经用于Eclipse的相同SDK,然后:

  • 开始了一个新项目

  • 设置最低SDK 4.0(API级别14)

  • 选择空白活动选项

  • 已使用活动名称和布局名称的默认名称

  • 点击完成

几秒钟后,Gradle完成了构建,它在文件Teste4 \ app \ build \ intermediates / explosion-aar \ com.android.support \ appcompat-v7 \ 23.0.0 \ res \ values中抛出了以下消息的两个错误-v23 \ Value 观v23.xml:

错误:(2)检索项目的父项时出错:找不到与给定名称“android:TextAppearance.Material.Widget.Button.Inverse”匹配的资源 . 错误:(2)检索项目的父项时出错:找不到与给定名称“android:Widget.Material.Button.Colored”匹配的资源 .

在文件 - >项目结构 - >模块:应用程序(左列) - >属性选项卡下,我设置了以下版本:

  • "Compile Sdk Version":Android 5.1(API级别22)

  • "Build Tools Version":23.0.2

我该怎么做才能解决这个问题?

我已经尝试过Stack Overflow问题appcompat-v7:21.0.0': No resource found that matches the given name: attr 'android:actionModeShareDrawable'中的建议,但它没有用 .

24 回答

  • 70

    确保所有这些都是最新的 .

  • 1129

    When you update your Android Studio, it uses API version 23 by default, which is the main reason of its occurrence. So,

    首先,检查build.gradle中的AppCompat版本(模块:app)即

    如果更改为23后出现错误,则只需下载

    Compile Sdk Version to API 23, and Build Tools Version to 23.0.0

    来自SDK Manager . 如果已下载,则:

    1. Go to SDK Manager and
    2. Under Project Structure, change *Compile SDK Version* to API 23, and *Build Tools Version* to 23.0.0
    

    单击SDK Manager按钮并打开对话框 .

    单击SDK Platform并检查是否已下载Android 6.0 .

    如果没有,那么先下载 . 完成下载后,单击“应用” .

    现在,您需要从设置中对项目应用更改 . 然后按 Ctrl + Alt + Shift + S 打开设置

    • 点击列表中的应用 .

    • 单击属性

    • 将Compile SDK版本更改为API 23

    • 将Build Tools版本更改为23.0.0

    不要忘记重建您的项目 .

    然后你的错误就会消失 .

  • 0

    您应该使用最新版本编译项目,以便从SDK更新和安装 . 使用 sync project with Gradle file Button同步项目 .
    您也可以继续使用现有版本,但检查它是否正确安装在图像下方,表示已正确安装的API 22 .

    并根据需要同步您的项目 .

    它可能有所帮助 .

  • 4

    我遇到了同样的问题 . 我通过将每个子模块的gradle.build更新为最新的编译器版本来解决我的问题 .

  • 15

    如果您尝试将目标更改为以前的GooglePlayServices或AppCompatv7版本并且它不起作用,请检查您是否有任何项目库依赖项,此项目将针对任何这些库的最新版本 . Google Maps Utils Library项目发生在我身上:

    更换:

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

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

    然后,您可以继续完全定位API 22

    如果它仍然没有编译,有时将compileSdkVersion API设置为23并将targetSdkVersion设置为22是有用的 .

  • 7

    如果您在下载最新的SDK和Android Studio后遇到错误,我就是这样做的:

    • 下载最新的SDK

    • 打开文件 - 项目结构(Ctrl Alt Shift S)

    • 在模块中,选择应用程序

    • 在属性选项卡中:将编译SDK版本更改为API 23 Android 6.0 marshmallow(最新)

    我希望它可以帮助某些人,这样他就不会像我这样做几天那样受苦 .

  • 12

    正如其他人已经提到的,您的编译sdk版本必须与您的支持库的主要版本相匹配 . 但是,如果您有子项目,这也与子项目相关 . 如果您这样做,您可以使用以下脚本设置子项目的compile sdk版本:

    subprojects { subproject ->
    afterEvaluate{
        if((subproject.plugins.hasPlugin('android') || subproject.plugins.hasPlugin('android-library'))) {
            android {
                compileSdkVersion rootProject.ext.compileSdkVersion
                buildToolsVersion rootProject.ext.buildToolsVersion
            }
        }
    }
    

    }

    在根 build.gradle 文件中添加此脚本 .

  • 6
    android {
        compileSdkVersion 23
        buildToolsVersion '23.0.1'
    
    defaultConfig {
        applicationId ""
        minSdkVersion 14
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
      }
    }
    
    dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.code.gson:gson:2.3.1'
    compile 'com.android.support:recyclerview-v7:23.0.0'
    compile 'com.android.support:appcompat-v7:23.0.1'
    }
    
  • 5

    升级Android Studio .

    我在Android Studio 1.3.1中遇到过这个问题,其他答案都没有对我有用,但在更新到1.5.1之后没有任何问题 .

  • 9

    您需要将compileSdkVersion设置为23 .

    由于API 23 Android删除了已弃用的Apache Http软件包,因此如果您将它们用于服务器请求,则需要将useLibrary 'org.apache.http.legacy' 添加到 build.gradle ,如此链接中所述:

    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.0"
        ...
    
        //only if you use Apache packages
        useLibrary 'org.apache.http.legacy'
    }
    
  • 8

    另一个解决方案:导航到

    \sdk\extras\android\m2repository\com\android\support\appcompat-v7\23.x.x
    

    打开带有7-zip或winrar的 .aar 文件,在res文件夹中删除 values-23 文件夹并保存更改 .

  • 2

    一切都很棒,但没有人解释在哪里下载SDK构建工具

  • 22

    This issue is raised because now the compile SDK version must match the Android Support library's major version.

    在我的情况下,我有 Android Support Library 版本23,所以我必须编译反对 Android SDK version 23 ,我不得不在我的 build.gradle 文件中更改:

    好吧你们中的一些人需要安装SDK, Android 6.0 (API 23)

    别忘了 Sync project with gradle files

  • 3

    在模块:app(Gradle)

    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 21
        buildToolsVersion "21.1.2"
    
        defaultConfig {
            applicationId "com.namepack.nameappxxxxx"
            minSdkVersion 16
            targetSdkVersion 21
            versionCode 1
            versionName "1.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:21.0.3'
    }
    

    项目:nameAppXXXX(Gradle)

    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:1.2.3'
    
        }
    }
    
    allprojects {
        repositories {
            jcenter()
        }
    }
    

    并将您的AppCompatActivity活动编辑为例如Activity:

    package com.namepack.nameappxxxxx;
    
    
    import android.os.Bundle;
    import android.support.v7.app.ActionBarActivity;
    import android.view.Menu;
    import android.view.MenuItem;
    
    public class NameClass extends ActionBarActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main_activity);
        }
    
    
    }
    
  • 1

    正如Tanis.7x所指出的那样支持库版本(23)与targetSdkVersion(22)不匹配

    您可以通过执行以下操作来解决此问题:

    在应用模块的 build.grade 文件中,更改以下代码行

    compile 'com.android.support:appcompat-v7:23.0.0'
    

    compile 'com.android.support:appcompat-v7:22.+'
    

    这将使用与SdkVersion 22兼容的最新版appcompat版本 .

  • 1

    就我而言,它是更高版本的Google-play-services . 我将它们设置为7.0.0(而不是8.x),一切正常 .

  • 1

    如果您正在使用phonegap(跨平台)并遇到上述相同问题,请使用以下命令删除android平台 .

    phonegap platform remove android

    然后再添加一次 .

    phonegap platform add android

    然后问题解决了我 .

  • 9

    我同意之前的回答 . 您的编译SDK版本必须与支持库匹配 . 这就是我做的 .

    • 您可以转到SDK Manager并在SDK Platform下安装API级别为23的Android 5.X .

    • 在项目结构下,将编译SDK版本更改为API 23,将构建工具版本更改为23.0.0

    那么它应该没有问题 .

  • 1

    您的编译SDK版本必须与支持库主要版本匹配 . 这是您的问题的解决方案 . 您可以在 build.gradle 文件中的Gradle脚本中轻松查看 . Fx:如果你的 compileSdkVersion 是23,你的编译库必须从23开始 .

    compileSdkVersion 23
        buildToolsVersion "23.0.0"
        defaultConfig {
            minSdkVersion 15
            targetSdkVersion 23
            versionCode 340
            versionName "3.4.0"
        }
    dependencies {
        compile 'com.android.support:appcompat-v7:23.1.0'
        compile 'com.android.support:recyclerview-v7:23.0.1'
    }
    

    并始终检查您的Android Studoi是否具有支持的API级别 . 您可以在Android SDK中查看,如下所示:

  • 1

    这对我有所帮助:Adding specific android platform

    应该做的是以下......在我的情况下它是 cordova 但是 ionicphonegap 和其他类似框架相同:

    • 列出为项目安装的所有平台: cordova platform list . 你会看到这样的事情:

    • 删除android平台: cordova platform remove android .

    • 然后添加具体的android平台: cordova platform add android@5.0.0 .

    祝好运! :)

  • 134

    我想从API 23降级到22并得到此错误 . 我必须更改项目中的所有 build.gradle 文件才能进行编译 .

    android {
        compileSdkVersion 22
        buildToolsVersion "22.0.1"
    
        defaultConfig {
            applicationId "com.yourapp.app"
            minSdkVersion 14
            targetSdkVersion 22
        }
    ...
    dependencies {
        compile 'com.android.support:appcompat-v7:22.2.1'
        compile 'com.android.support:support-v4:22.2.1'
        compile 'com.android.support:design:22.2.1'
        compile 'com.google.android.gms:play-services-gcm:10.0.1'
    }
    
  • 113

    我找到了解决方案,问题在我更新sdk时启动,之后我使用了不同的 buildToolsVersion ('22.0.1') 并且我使用了不同的 support 库,如 compile 'com.android.support:appcompat-v7:23.0.0' ,显示在下面的图片中

    这引起了“ android.widget.Material ...”的问题然后我使用相同版本的支持库,如 compile 'com.android.support:appcompat-v7:22.0.1' 及其完成 . (在下面的屏幕截图中显示)

  • 35

    您的编译SDK版本必须与支持库的主要版本匹配 .

    由于您使用的是支持库的第23版,因此需要针对Android SDK的第23版进行编译 .

    或者,您可以通过切换到最新的支持库v22继续针对Android SDK的第22版进行编译 .

  • -1

    发生这种情况是因为更新后Android Studio默认使用 API version 23 .

    以下对我有用:

    按Ctrl Shift Alt S进入项目结构页面 . 转到属性选项卡,然后在构建工具区域中将 23.0.0 更改为 22.0.1 (或等同于您之前使用的内容)并重建项目 .

    如果这不起作用,请转到 gradle:app 然后

    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.1'
    

    如上所示编辑 v7:23.0.0v7:22.2.1 并同步gradle . 这肯定会奏效 .

相关问题