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

Vin*_*fer 773 android gradle android-studio

我一直用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 \价值观v23.xml:

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

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

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

  • "编译Sdk版本":Android 5.1(API级别22)
  • "构建工具版本":23.0.2

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

我已经尝试过Stack Overflow问题appcompat-v7:21.0.0中的建议:找不到与给定名称匹配的资源:attr'android:actionModeShareDrawable',但它不起作用.

Tan*_*.7x 1144

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

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

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

  • 我仍然无法相信Android Studio发布的东西甚至没有测试基本的东西!至少提出一些有意义的警告!! (119认同)
  • 对于那些刚接触Android Studio但对如何"通过打开项目属性来使用GUI"感到困惑的人,在我的Android Studio(v1.3.1)中,我转到文件,项目结构,然后在左边底部的-hand窗格是Modules下的一个条目(在我的例子中称为"app").我点击它,然后我看到一个Dependencies选项卡. (42认同)
  • GUI应该弹出一条消息"我们检测到您没有定位到正确的Android API版本.我想要修复它吗?".相反,我必须停止在飞机上工作,并等到我可以搜索stackoverflow. (30认同)
  • 此问题和答案与您的应用程序将运行的版本无关.应用程序目标22可以在运行23的设备上正常运行.此处描述的问题是支持库版本23要求您以23为目标,因为支持库引用了23 SDK中的某些API. (11认同)
  • 您可以在`build.gradle`中手动更改它,也可以通过打开项目属性并转到"依赖项"选项卡来使用GUI. (10认同)
  • 结束安装SDK的v23,解决了这个问题.试图将版本降低到22,但它在GUI上不可用或者在更改build.gradle时给我一个错误(我是一个关于gradle的完整新手,所以请原谅我).谢谢!你有没有设法降低版本"4k3R"? (2认同)
  • @Tanis.7x即使做了这些更改后错误也没有解决.我仍然在`v23/values-23.xml`文件中有这些错误.我是`compileSdkVersion:22,buildToolsVersion"22.0.1",targetSdkVersion 22,`和依赖`compile'c​​om.android.support:appcompat-v7:22.2.1'`然后重建app.但仍面临问题:( (2认同)

小智 137

这是因为更新后Android Studio 默认使用API版本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'
Run Code Online (Sandbox Code Playgroud)

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

  • 对于像我这样的新手,他们对如何"转到classle:app然后编译fileTree(dir:'libs',include:['*.jar'])感到困惑,请编译'com.android.support:appcompat-v7:22.2 .1'",在我的Android Studio(版本1.3.1)中,在项目窗格中(我通过单击左边的1:Project选项卡打开),我在Gradle Scripts下看到两个名为"build.gradle"的条目.第二个旁边有(Module:app).我双击它打开它.然后在底部的依赖项部分,我将v7:23.0.0更改为v7:22.2.1.我保存(并按照Studio的提示同步) - 似乎编译好了. (10认同)
  • 如何在MAC上输入项目结构页面? (4认同)
  • @Sourav甚至在做了这些改变之后错误也没有解决.我仍然在`v23/values-23.xml`文件中有这些错误.我在项目结构页面中更改了值,重建了应用程序.但仍面临问题:( (4认同)

Rav*_*del 115

当您更新Android Studio时,它默认使用API​​版本23,这是它发生的主要原因.所以,

首先,检查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
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

如果没有,那么先下载.完成下载后,单击Apply.

在此输入图像描述

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

  1. 点击列表中的应用.
  2. 单击属性
  3. Compile SDK版本更改为API 23
  4. Build Tools版本更改为23.0.0

在此输入图像描述

不要忘记重建您的项目.

然后你的错误就会消失.

  • 在这种情况下,屏幕截图有助于像我这样的傻瓜。 (2认同)

Pel*_*nes 70

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

更换:

compile 'com.google.android.gms:play-services:+'
Run Code Online (Sandbox Code Playgroud)

compile 'com.google.android.gms:play-services:8.3.0'
Run Code Online (Sandbox Code Playgroud)

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

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


小智 35

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

  1. 您可以转到SDK Manager并在SDK Platform下安装API级别为23的Android 5.X.
  2. 在"项目结构"下,将"编译SDK版本"更改为API 23,将"构建工具版本"更改为23.0.0

那么它应该没有问题.


Dha*_*apu 22

您需要将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'
}
Run Code Online (Sandbox Code Playgroud)


Jor*_*sys 15

提出此问题是因为现在编译SDK版本必须与Android支持库的主要版本匹配.

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

在此输入图像描述

好吧,有些人需要安装SDK, Android 6.0 (API 23)

在此输入图像描述

并且不要忘记使用gradle文件同步项目


dhi*_*iku 12

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'
}
Run Code Online (Sandbox Code Playgroud)


Nav*_*mad 9

我找到了解决方案,问题在我更新sdk后开始,之后我使用了不同的buildToolsVersion('22 .0.1') ,我使用了不同的支持库,比如编译'com.android.support:appcompat-v7:23.0.0',在下面的图片中显示你

在此输入图像描述

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

在此输入图像描述


Inz*_* IT 9

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

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

在此输入图像描述

它可能有所帮助.


RWI*_*WIL 8

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

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

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

compile 'com.android.support:appcompat-v7:23.0.0'
Run Code Online (Sandbox Code Playgroud)

compile 'com.android.support:appcompat-v7:22.+'
Run Code Online (Sandbox Code Playgroud)

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


Osk*_*kar 7

您的编译SDK版本必须与支持库主要版本匹配.这是您的问题的解决方案.您可以在build.gradle文件中的Gradle Scripts中轻松查看.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'
}
Run Code Online (Sandbox Code Playgroud)

并始终检查您的Android Studoi是否具有支持的API级别.您可以在Android SDK中查看它,如下所示: 在此输入图像描述


Ale*_*ecs 6

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


Coo*_*ind 5

我想从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'
}
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

551206 次

最近记录:

6 年,9 月 前