Error al recuperar el elemento primario para el elemento: no se encontró ningún recurso que coincida con el nombre dado después de actualizar a AppCompat v23

780

Siempre he programado Android con Eclipse y decidí comenzar a migrar a Android Studio . Decidí usar el mismo SDK que ya tenía para Eclipse, luego:

  • Comenzó un nuevo proyecto
  • Establecer SDK 4.0 mínimo (API Nivel 14)
  • Elija la opción de actividad en blanco
  • Nombres predeterminados usados ​​para Nombre de actividad y Nombre de diseño
  • Hit Finish

Después de unos segundos, Gradle finaliza la compilación y me arroja dos errores con los siguientes mensajes en el archivo Teste4 \ app \ build \ intermedios / exploded-aar \ com.android.support \ appcompat-v7 \ 23.0.0 \ res \ values -v23 \ values-v23.xml:

Error: (2) Error al recuperar el elemento primario para el elemento: no se encontró ningún recurso que coincida con el nombre dado 'android: TextAppearance.Material.Widget.Button.Inverse'.

Error: (2) Error al recuperar el elemento primario para el elemento: no se encontraron recursos que coincidan con el nombre dado 'android: Widget.Material.Button.Colored'.

En Archivo -> Estructura del proyecto -> Módulos: aplicación (columna izquierda) -> pestaña Propiedades , tengo configuradas las siguientes versiones:

  • "Compilar la versión de SDK": Android 5.1 (API Nivel 22)
  • "Versión de herramientas de compilación": 23.0.2

¿Qué debo hacer para arreglar esto?

Ya probé lo que se sugirió en la pregunta Stack Overflow appcompat-v7: 21.0.0 ': No se encontró ningún recurso que coincida con el nombre dado: attr' android: actionModeShareDrawable ' , pero no funcionó.

Vini.g.fer
fuente

Respuestas:

1147

Su versión de SDK de compilación debe coincidir con la versión principal de la biblioteca de soporte.

Como está utilizando la versión 23 de la biblioteca de soporte, debe compilar con la versión 23 del SDK de Android.

Alternativamente, puede continuar compilando con la versión 22 del SDK de Android cambiando a la última biblioteca de soporte v22.

Bryan Herbst
fuente
10
Puede cambiarlo manualmente en su build.gradle, o puede usar la GUI abriendo las propiedades del proyecto y yendo a la pestaña "dependencias".
Bryan Herbst
11
Esta pregunta y respuesta no tienen nada que ver con qué versión se ejecutará su aplicación. Una aplicación dirigida a 22 puede funcionar bien en un dispositivo que ejecuta 23. El problema descrito aquí es que la versión 23 de la biblioteca de soporte requiere que apunte a 23, ya que la biblioteca de soporte hace referencia a algunas API en el SDK de 23.
Bryan Herbst
42
Para aquellos como yo que somos nuevos en Android Studio y estamos confundidos acerca de cómo "usar la GUI abriendo las propiedades del proyecto", en mi Android Studio (v1.3.1), voy a Archivo, Estructura del proyecto, luego a la izquierda panel de mano en la parte inferior es una entrada en Módulos (llamada "aplicación" en mi caso). Hago clic en eso y luego veo una pestaña Dependencias.
Bryan
119
¡Todavía no puedo creer que Android Studio publique cosas sin siquiera probar algo TAN básico! ¡Al menos pon algunas advertencias significativas!
Josh
30
La GUI debería haber aparecido un mensaje "hemos detectado que no estás apuntando a la versión correcta de la API de Android. ¿Quieres que lo solucione?". En cambio, tengo que dejar de trabajar en el avión y esperar hasta que pueda buscar stackoverflow.
Alguien en alguna parte
137

Esto sucede porque después de las actualizaciones, Android Studio usa la versión 23 de la API de manera predeterminada.

Lo siguiente funcionó para mí:

Presione Ctrl+ Shift+ Alt+ Spara llegar a la página de estructura del proyecto. Vaya a la pestaña de propiedades y cambie 23.0.0 a 22.0.1 (o equivalente a lo que estaba usando anteriormente) en el área de herramientas de construcción y reconstruya su proyecto.

Si eso no funciona, vaya a gradle: app y luego

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

Edite v7: 23.0.0 a v7: 22.2.1 como se muestra arriba y sincronice gradle. Esto definitivamente funcionará.

Sourav Nanda
fuente
10
Para los novatos como yo que están confundidos acerca de cómo "ir a gradele: app y luego compilar fileTree (dir: 'libs', incluir: ['* .jar']) compilar 'com.android.support:appcompat-v7:22.2 .1 '", en mi Android Studio (versión 1.3.1), en el panel del proyecto (que abrí haciendo clic en la pestaña 1: Proyecto a la izquierda), veo dos entradas en Gradle Scripts llamadas" build.gradle " . El segundo tiene (Módulo: aplicación) al lado. Hice doble clic para abrirlo. Luego, en la sección de dependencias en la parte inferior, cambié la v7: 23.0.0 a la v7: 22.2.1. Guardé (y sincronicé según lo solicitó Studio) - parecía compilar bien.
Bryan
44
¿Cómo puedo ingresar a la página de estructura del proyecto en MAC?
rosu alin
44
@Sourav Incluso después de hacer estos cambios, el error no se resolvió. Todavía tengo estos errores en el v23/values-23.xmlarchivo. He cambiado los valores en la página de estructura del proyecto, reconstruir la aplicación. Pero aún enfrenta el problema :(
Prabs
En mac, el atajo es ⌘ +; . Alternativamente, puede ir a Archivo> Estructura del proyecto.
Tomanow
115

Cuando actualiza su Android Studio, utiliza la versión 23 de la API de forma predeterminada, que es la razón principal de su aparición. Entonces,

Al principio, verifique su versión de AppCompat en build.gradle (Módulo: aplicación) Es decir,

Ingrese la descripción de la imagen aquí

Si después de cambiar a 23 se produce un error, simplemente descargue

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

del SDK Manager. Si ya está descargado, entonces:

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

Haga clic en el botón SDK Manager y abra el cuadro de diálogo.

Ingrese la descripción de la imagen aquí

Haga clic en la plataforma SDK y verifique si Android 6.0 está descargado o no.

si no, descargue eso primero. Después de completar la descarga, haga clic en Apply.

Ingrese la descripción de la imagen aquí

Ahora necesita aplicar cambios a su proyecto desde la configuración. Luego presione Ctrl+ Alt+ Shift+S para abrir la configuración

  1. Haga clic en la aplicación de la lista.
  2. Haga clic en propiedades
  3. Cambie su versión de Compile SDK a API 23
  4. Cambie su versión de Build Tools a 23.0.0

Ingrese la descripción de la imagen aquí

No olvides reconstruir tu proyecto.

Entonces su error se habrá ido.

Ravikant Paudel
fuente
1
Entendí tu forma de definir la solución, pero trata de describir tu publicación con una descripción completa
Naveed Ahmad
1
@NaveedAhmad Ok, voy a editar mi publicación. Gracias por tu sugerencia .
Ravikant Paudel
1
Agregué una publicación relacionada con el problema anterior stackoverflow.com/a/32370099/2915785
Naveed Ahmad
1
oye, agrega la misma versión de appcompat, resolvió mi problema
vuhung3990
2
En tales casos, las capturas de pantalla ayudan a tontos como yo.
ern0
70

Si ha intentado cambiar el destino a una versión anterior de GooglePlayServices o AppCompatv7 y no funciona, verifique si tiene alguna dependencia de bibliotecas de proyectos, este proyecto estará dirigido a la última versión de cualquiera de estas bibliotecas. Me sucedió con el proyecto de la Biblioteca de Google Maps Utils:

reemplazar:

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

a

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

Entonces puede continuar con la orientación completa API 22

Si aún no se compila, a veces es útil establecer compileSdkVersion API en 23 y targetSdkVersion en 22.

Pelanes
fuente
35

Estoy de acuerdo con la respuesta anterior. Su versión de SDK de compilación debe coincidir con la biblioteca de soporte. Aquí esta lo que hice.

  1. Puede ir a SDK Manager y, en la plataforma SDK, instalar Android 5.X con API nivel 23.
  2. En Estructura del proyecto, cambie la versión de compilación del SDK a API 23 y la versión de herramientas de compilación a 23.0.0

Entonces debería construir sin problema.

Stucky
fuente
22

Debe establecer compileSdkVersion en 23.

Dado que la API de Android 23 elimina los paquetes Apache HTTP en desuso, por lo que si se utilizan para las solicitudes del servidor, tendrá que añadir useLibrary 'org.apache.http.legacy'a build.gradlecomo se indica en este enlace:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"
    ...

    //only if you use Apache packages
    useLibrary 'org.apache.http.legacy'
}
Dharma Sai Seerapu
fuente
15

Este problema se plantea porque ahora la versión del SDK de compilación debe coincidir con la versión principal de la biblioteca de soporte de Android.

En mi caso, tengo la Android Support Libraryversión 23, así que tuve que compilar contra el Android SDK version 23, y tuve que cambiar esto en mi build.gradlearchivo:

ingrese la descripción de la imagen aquí

Bueno, algunos de ustedes necesitarán instalar el SDK, Android 6.0 (API 23)

ingrese la descripción de la imagen aquí

y no te olvides de sincronizar proyectos con archivos gradle

Jorgesys
fuente
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'
}
dhiku
fuente
9

Encontré la solución, el problema comenzó cuando actualicé sdk, después de eso usé diferentes buildToolsVersion ('22 .0.1 ') y estaba usando una biblioteca de soporte diferente como compilar' com.android.support:appcompat-v7:23.0.0 ' , mostrándote en la imagen de abajo

ingrese la descripción de la imagen aquí

Esto estaba planteando el problema de " android.widget.Material ...". Luego utilicé la misma versión para la biblioteca de soporte como compilar 'com.android.support:appcompat-v7:22.0.1' y está HECHO. (Mostrando en la siguiente captura de pantalla)

ingrese la descripción de la imagen aquí

Naveed Ahmad
fuente
9

Debe compilar su proyecto con la última versión, así que actualice e instale desde su SDK. Sincroniza tu proyecto con sync project with Gradle fileButton.
También puede continuar con la versión existente, pero verifique que esté instalada correctamente debajo de la imagen que indica a API 22 que está instalada correctamente.ingrese la descripción de la imagen aquí

Y sincronice su proyecto si es necesario.

ingrese la descripción de la imagen aquí

puede ayudar.

Inzimam Tariq IT
fuente
8

Como señaló Tanis.7x, la versión de la biblioteca de soporte (23) no coincide con targetSdkVersion (22)

Puede solucionar esto haciendo lo siguiente:

En el build.gradearchivo de su módulo de aplicación, cambie la siguiente línea de código

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

A

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

Esto usará la última versión de la versión de appcompat que es compatible con SdkVersion 22.

RWIL
fuente
7

Su versión de SDK de compilación debe coincidir con la versión principal de la biblioteca de soporte. Esta es la solución a tu problema. Puede verificarlo fácilmente en sus Gradle Scripts en el build.gradlearchivo. Fx: si tu compileSdkVersiones 23 tu biblioteca de compilación debe comenzar en 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'
}

Y siempre verifique que su Android Studoi tenga el nivel de API compatible. Puede verificarlo en su SDK de Android, así: ingrese la descripción de la imagen aquí

Oskar
fuente
6

En mi caso, era una versión superior de Google-play-services. Los configuré en 7.0.0 (no 8.x) y todo estuvo bien.

Alecs
fuente
5

Quería bajar de API 23 a 22 y obtuve este error. Tuve que cambiar todos los build.gradle archivos en un proyecto para poder compilar.

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'
}
CoolMind
fuente
4

Esto es lo que me ayudó: agregar una plataforma Android específica

Lo que debe hacerse es la siguiente ... En mi caso fue cordovapero el mismo es relevante para ionic, phonegapy otros marcos como los siguientes:

  1. enumerar todas las plataformas instaladas para su proyecto: cordova platform list. Verás algo como esto:

ingrese la descripción de la imagen aquí

  1. quitar la plataforma Android: cordova platform remove android.

  2. a continuación, añadir la plataforma Android específica: cordova platform add [email protected].

¡Buena suerte! :)

Lentyai
fuente
3

Tengo los mismos problemas Resolví mi problema actualizando gradle.build para cada submódulo a la última versión del compilador.

sonida
fuente
2

Todo es genial, pero ninguno de ustedes explicó dónde descargar las herramientas de compilación del SDK

Todo es genial, pero ninguno de ustedes explicó dónde descargar las herramientas de compilación del SDK

Stav Bodik
fuente
1

Otra solución: navegar a

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

abierto .aararchivo con 7-Zip o WinRAR, en res Eliminar carpeta values-23carpeta y guardar los cambios.

Ali Zarei
fuente
1

en el módulo: aplicación (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'
}

proyecto: nameAppXXXX (Gradle)

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

    }
}

allprojects {
    repositories {
        jcenter()
    }
}

y edite su actividad de AppCompatActivity para, por ejemplo, Actividad:

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


}
Alex Zaraos
fuente
1

SDK Manager

Asegúrese de que todos estos estén actualizados.

Ganesh Kanna
fuente
1

Actualiza Android Studio.

Tuve este problema con Android Studio 1.3.1 y ninguna de las otras respuestas me funcionó, pero después de actualizar a 1.5.1 no hubo problemas.

Matthew Read
fuente
1

Si está utilizando phonegap (multiplataforma) y tiene el mismo problema anterior, simplemente elimine la plataforma de Android con el siguiente comando.

plataforma phonegap eliminar android

Y agrégalo de nuevo.

plataforma phonegap agregar android

Entonces problema resuelto para mí.

Edukondalu Thaviti
fuente
0

Como otros ya han mencionado, compile sdk versiondebe coincidir con su support library'sversión principal. Sin embargo, esto también es relevante para subprojectssi tiene alguno.

En caso de que lo haga, puede configurar sus subprojectsversiones sdk de compilación con el siguiente script:

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

Agregue este script en su build.gradlearchivo raíz .

TheBaj
fuente
-1

Si recibe errores incluso después de descargar el SDK más reciente y Android Studio, esto es lo que hice:

  1. Descargue el SDK más reciente
  2. Estructura de proyecto de archivo abierto ( Ctrl+ Alt+ Shift+ S)
  3. En módulos, seleccione aplicación
  4. En la pestaña de propiedades: Cambie la versión del SDK de compilación a API 23 Android 6.0 marshmallow (más reciente)

Espero que ayude a alguien para que no sufra como lo hice durante estos dos días.

xsushil
fuente