ChatGPT解决这个技术问题 Extra ChatGPT

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

我一直使用 Eclipse 对 Android 进行编程,并决定开始迁移到 Android Studio。我决定使用与 Eclipse 相同的 SDK,然后:

开始了一个新项目

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

选择空白活动选项

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

点击完成

几秒钟后,Gradle 完成了构建,并在文件 Teste4\app\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”匹配的资源。

在 File -> Project Structure -> Modules: app (left column) -> Properties 选项卡下,我设置了以下版本:

《编译SDK版本》:Android 5.1(API Level 22)

“构建工具版本”:23.0.2

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

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


B
Bryan Herbst

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

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

或者,您可以通过切换到最新的支持库 v22 继续编译 Android SDK 版本 22。


您可以在 build.gradle 中手动更改它,也可以通过打开项目属性并转到“依赖项”选项卡来使用 GUI。
这个问题和答案与您的应用程序将在哪个版本上运行无关。以 22 为目标的应用程序可以在运行 23 的设备上正常运行。这里描述的问题是支持库版本 23 要求您以 23 为目标,因为支持库引用了 23 SDK 中的一些 API。
对于像我这样刚接触 Android Studio 并且对如何“通过打开项目属性使用 GUI”感到困惑的人,在我的 Android Studio (v1.3.1) 中,我转到文件,项目结构,然后在左侧- 底部的手窗格是模块下的一个条目(在我的例子中称为“应用程序”)。我单击它,然后我看到一个 Dependencies 选项卡。
我仍然不敢相信 Android Studio 甚至没有测试一些基本的东西就发布了东西!至少提出一些有意义的警告!!
GUI 应该会弹出一条消息“我们检测到您没有针对正确的 Android API 版本。要我修复它吗?”。相反,我必须停止在飞机上工作,等到可以搜索 stackoverflow。
P
Peter Mortensen

发生这种情况是因为更新后 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'

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


对于像我这样对如何“转到gradele:app 然后编译fileTree(dir:'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.2 感到困惑的新手.1'”,在我的 Android Studio(版本 1.3.1)中,在项目窗格(我通过单击最左侧的 1:项目选项卡打开)中,我在 Gradle 脚本下看到两个条目,称为“build.gradle” .第二个旁边有(模块:应用程序)。我双击它打开它。然后在底部的依赖项部分,我将 v7:23.0.0 更改为 v7:22.2.1。我保存了(并按照 Studio 的提示进行了同步) - 似乎可以编译。
MAC如何进入项目结构页面?
@Sourav 即使在做了这些更改之后,错误也没有解决。我仍然在 v23/values-23.xml 文件中有这些错误。我已经更改了项目结构页面中的值,重建应用程序。但仍然面临这个问题:(
在 mac 上,快捷方式是 ⌘ + ; .或者,您可以转到文件 > 项目结构。
R
Ravikant Paudel

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

首先,在 build.gradle(Module:app) 中检查你的 AppCompat 版本,即

https://i.stack.imgur.com/zdA9P.jpg

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

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

来自 SDK 管理器。如果已经下载然后:

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 管理器按钮并打开对话框。

https://i.stack.imgur.com/bAoOZ.jpg

点击 SDK Platform 并检查是否下载了 Android 6.0。

如果没有,请先下载。完成下载后,单击应用。

https://i.stack.imgur.com/VDKen.jpg

现在您需要将更改从设置应用到您的项目。然后按 Ctrl + Alt + Shift + S 打开设置

单击列表中的应用程序。单击属性将您的编译 SDK 版本更改为 API 23 将您的构建工具版本更改为 23.0.0

https://i.stack.imgur.com/tl5P7.jpg

不要忘记重建您的项目。

那么你的错误就会消失。


我理解您定义解决方案的方式,但尝试用完整的描述来描述您的帖子
@NaveedAhmad 好的,我要编辑我的帖子。谢谢你的建议。
我添加了与上述问题相关的帖子 stackoverflow.com/a/32370099/2915785
嘿,请添加相同的 appcompat 版本,它解决了我的问题
在这种情况下,屏幕截图有助于像我这样的傻瓜。
P
Pelanes

如果您尝试将目标更改为以前的 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 很有用。


P
Peter Mortensen

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

您可以转到 SDK Manager 并在 SDK Platform 下,安装 API 级别为 23 的 Android 5.X。在 Project Structure 下,将 compile SDK Version 更改为 API 23,并将 Build Tools Version 更改为 23.0.0

然后它应该毫无问题地构建。


D
Dharma Sai Seerapu

您需要将 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'
}

C
Community

之所以会出现此问题,是因为现在编译 SDK 版本必须与 Android 支持库的主要版本匹配。

在我的情况下,我有 Android Support Library 版本 23,所以我必须针对 Android SDK version 23 进行编译,并且我必须在我的 build.gradle 文件中更改它:

https://i.stack.imgur.com/GYWZB.png

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

https://i.stack.imgur.com/7jH6Y.png

并且不要忘记将项目与 gradle 文件同步


p
piet.t
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'
}

N
Naveed Ahmad

我找到了解决方案,当我更新 sdk 时问题开始了,之后我使用了不同的 buildToolsVersion ('22.0.1') 并且我使用了不同的支持库,比如 compile 'com.android.support:appcompat-v7:23.0.0',在下图中向您展示

https://i.stack.imgur.com/8yyvY.png

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

https://i.stack.imgur.com/sSw1Y.png


I
Inzimam Tariq IT

https://i.stack.imgur.com/opa28.jpg

并在需要时同步您的项目。

https://i.stack.imgur.com/NRM5B.png

它可能会有所帮助。


R
RWIL

正如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 版本。


O
Oskar

您编译的 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'
}

https://i.stack.imgur.com/2XGQZ.jpg


A
Alecs

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


C
CoolMind

我想从 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'
}

L
Lentyai

这对我有帮助:Adding specific android platform

应该做的事情如下......在我的例子中是 cordova 但同样适用于 ionicphonegap 和其他类似的框架:

列出为您的项目安装的所有平台:cordova 平台列表。你会看到这样的东西:

https://i.stack.imgur.com/hH6o1.jpg

移除android平台:cordova平台移除android。然后添加具体的android平台:cordova platform add android@5.0.0。

祝你好运! :)


A
A P

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


A
Ali Zarei

另一个解决方案:导航到

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

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


A
Alex Zaraos

在模块上:应用程序(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'
}

项目:名称AppXXXX(Gradle)

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

    }
}

allprojects {
    repositories {
        jcenter()
    }
}

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

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);
    }


}

S
Stav Bodik

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

https://i.stack.imgur.com/XBrvU.png


G
Ganesh Kanna

https://i.stack.imgur.com/irmPA.png

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


M
Matthew Read

升级安卓工作室。

我在使用 Android Studio 1.3.1 时遇到了这个问题,其他答案都没有对我有用,但是在更新到 1.5.1 之后就没有问题了。


C
Community

如果您使用的是 phonegap(跨平台)并遇到上述相同的问题,只需使用以下命令删除 android 平台。

phonegap 平台删除 android

并再次添加。

phonegap 平台添加 android

然后问题为我解决了。


P
Peter Mortensen

如果即使在下载了最新的 SDK 和 Android Studio 后仍然出现错误,我是这样做的:

下载最新的 SDK 打开文件-项目结构(Ctrl + Alt + Shift + S) 在模块中,选择应用 在属性选项卡中: 将编译 SDK 版本更改为 API 23 Android 6.0 marshmallow(最新)

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


A
Agilanbu

正如其他人已经提到的,您的 compile sdk version 必须与您的 support library's 主要版本相匹配。但是,如果您有的话,这也与 subprojects 相关。

如果您这样做,您可以使用以下脚本设置您的 subprojects 编译 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 文件中。