我一直使用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'相匹配的资源。


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


“编译SDK版本”:Android 5.1(API级别22)
“构建工具版本”:23.0.2

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

我已经尝试了栈溢出问题appcompat-v7:21.0.0'中的建议:没有找到与给定名称相匹配的资源:attr'android:actionModeShareDrawable',但没有用。

#1 楼

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

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

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

评论


您可以在build.gradle中手动更改它,也可以通过打开项目属性并转到“依赖项”选项卡来使用GUI。

–布莱恩·赫伯斯特(Bryan Herbst)
15年8月18日在14:52

这个问题和答案与您的应用将在哪个版本上运行无关。面向22的应用程序可以在运行23的设备上正常运行。这里描述的问题是,支持库版本23要求您以23为目标,因为支持库引用了23 SDK中的某些API。

–布莱恩·赫伯斯特(Bryan Herbst)
15年8月22日在21:13

对于像我这样刚接触Android Studio并对于如何“通过打开项目属性使用GUI”感到困惑的人,在我的Android Studio(v1.3.1)中,转到“文件”,“项目结构”,然后在左侧底部的手动窗格是“模块”(在我的情况下称为“ app”)下的条目。我单击它,然后看到“依赖关系”选项卡。

–布莱恩(Bryan)
15年8月27日在18:43

我仍然不敢相信Android Studio甚至在没有测试基本功能的情况下就发布东西!至少发出一些有意义的警告!!

–乔什
2015年8月31日在11:11



GUI应该会弹出一条消息“我们检测到您没有针对正确的Android API版本。要我修复它吗?”。相反,我必须停止在飞机上工作,等到可以搜索stackoverflow。

–某处有人
2015年9月2日在22:31



#2 楼

发生这种情况是因为更新后,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'])感到困惑” compil'com.android.support:appcompat-v7:22.2 .1'“,在我的Android Studio(版本1.3.1)中,在项目窗格(通过单击最左侧的1:Project标签打开)中,我在Gradle脚本下看到两个名为“ build.gradle”的条目。第二个旁边有(Module:app)。我双击将其打开。然后在底部的“依赖项”部分中,将v7:23.0.0更改为v7:22.2.1。我保存了(并按照Studio的提示进行了同步)-似乎可以编译了。

–布莱恩(Bryan)
15年8月27日在18:57

如何进入MAC上的项目结构页面?

–rosu alin
2015年12月2日在10:28

@Sourav即使在完成这些更改后,错误也无法解决。我仍然在v23 / values-23.xml文件中有这些错误。我更改了项目结构页面中的值,重新构建了应用程序。但是仍然面临这个问题:(

–螃蟹
16年1月7日在13:03

在Mac上,快捷方式是⌘+; 。或者,您可以转到文件>项目结构。

– Tomanow
16/12/19在15:20



#3 楼

当您更新Android Studio时,默认情况下会使用API​​版本23,
是其出现的主要原因。因此,

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



如果更改为23后发生错误,则只需从SDK Manager下载

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

。如果已下载,则:

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。平台并检查是否下载了Android 6.0。

如果未下载,请先下载。下载完成后,单击“应用”。



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


从列表中单击应用。
单击属性
将Compile SDK版本更改为API 23
将Build Tools版本更改为23.0。 0



别忘了重建您的项目。

然后您的错误就会消失。

评论


我了解您定义解决方案的方式,但是请尝试使用完整的描述来描述您的帖子

–纳粹艾哈迈德(Naveed Ahmad)
2015年9月3日在7:46

@NaveedAhmad好的,我要编辑我的帖子。感谢您的建议。

– Ravikant Paudel
2015年9月3日7:59



我添加了与上述问题有关的帖子stackoverflow.com/a/32370099/2915785

–纳粹艾哈迈德(Naveed Ahmad)
2015年9月3日在8:02

嘿,请添加相同的appcompat版本,它解决了我的问题

–vuhung3990
2015年9月4日在7:10



在这种情况下,屏幕截图有助于像我这样的傻瓜。

–ern0
16-9-7在20:47



#4 楼

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

#5 楼

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


您可以转到SDK Manager,然后在SDK Platform下安装具有API级别23的Android5.X。
在“项目结构”下,更改编译SDK版本为API 23,构建工具版本为23.0.0

,那么它应该可以毫无问题地构建。

#6 楼

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


#7 楼

之所以会出现此问题,是因为现在编译SDK版本必须与Android支持库的主要版本匹配。
在我的情况下,我的Android Support Library版本为23,因此我不得不针对Android SDK version 23进行编译,而我必须对此进行更改build.gradle文件:

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

,不要忘了与gradle文件同步项目

#8 楼

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'
}


#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'及其完成。 (在下面的屏幕截图中向您显示)



#10 楼

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

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



可能会有所帮助。

#11 楼

如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版本的最新版本。

#12 楼

您的编译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中对其进行检查,如下所示:


#13 楼

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

#14 楼

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


#15 楼

这就是帮助我的事情:添加特定的android平台

应该做的是...我的情况是cordova,但对于ionicphonegap和其他类似的框架也是如此:


列出为您的项目安装的所有平台:cordova platform list。您将看到类似这样的内容:




删除android平台:cordova platform remove android
然后添加特定的android平台:cordova platform add android@5.0.0

祝你好运! :)

#16 楼

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

#17 楼

一切都很好,但是没有人解释在哪里下载SDK生成工具



#18 楼

另一个解决方案:
导航到
\sdk\extras\android\m2repository\com\android\support\appcompat-v7.x.x


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

#19 楼

在模块上: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的活动,例如活动:

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


}


#20 楼



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

#21 楼

升级Android Studio。

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

#22 楼

如果您正在使用phonegap(跨平台)并且在上面遇到了同样的问题,
只需使用以下命令删除android平台即可。
phonegap平台请删除android
并再次添加。
phonegap平台添加android
然后为我解决了问题。

#23 楼

正如其他人已经提到的那样,您的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文件中。

#24 楼

如果即使下载最新的SDK和Android Studio后仍然遇到错误,请按照以下步骤操作:


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

我希望它对某人有帮助这样他就不会再遭受这几天的痛苦了。