Erro ao recuperar o pai do item: nenhum recurso encontrado que corresponda ao nome fornecido após a atualização para o AppCompat v23


780

Sempre programei o Android com o Eclipse e decidi começar a migrar para o Android Studio . Decidi usar o mesmo SDK que já tinha para o Eclipse, então:

  • Iniciou um novo projeto
  • Defina o SDK 4.0 mínimo (API Nível 14)
  • Escolha a opção Atividade em branco
  • Nomes padrão usados ​​para o nome da atividade e o nome do layout
  • Hit Finish

Após alguns segundos, Gradle conclui a compilação e lança dois erros com as seguintes mensagens no arquivo Teste4 \ app \ build \ intermediates / exploded-aar \ com.android.support \ appcompat-v7 \ 23.0.0 \ res \ values -v23 \ values-v23.xml:

Erro: (2) Erro ao recuperar o pai do item: nenhum recurso encontrado que corresponda ao nome especificado 'android: TextAppearance.Material.Widget.Button.Inverse'.

Erro: (2) Erro ao recuperar o pai do item: nenhum recurso encontrado que corresponda ao nome 'android: Widget.Material.Button.Colored'.

Em Arquivo -> Estrutura do projeto -> Módulos: app (coluna esquerda) -> guia Propriedades , tenho as seguintes versões configuradas:

  • "Compilar versão SDK": Android 5.1 (nível 22 da API)
  • "Versão das ferramentas de compilação": 23.0.2

O que devo fazer para corrigir isso?

Eu já tentei o que foi sugerido na pergunta Stack Overflow appcompat-v7: 21.0.0 ': nenhum recurso encontrado que corresponda ao nome dado: attr' android: actionModeShareDrawable ' , mas não funcionou.

Respostas:


1147

Sua versão do SDK de compilação deve corresponder à versão principal da biblioteca de suporte.

Como você está usando a versão 23 da biblioteca de suporte, é necessário compilar a versão 23 do Android SDK.

Como alternativa, você pode continuar compilando a versão 22 do Android SDK, alternando para a biblioteca de suporte mais recente v22.


10
Você pode alterá-lo manualmente no seu build.gradle, ou pode usar a GUI abrindo as propriedades do projeto e indo para a guia "dependências".
Bryan Herbst

11
Esta pergunta e resposta não têm nada a ver com a versão em que seu aplicativo será executado. Um aplicativo direcionado a 22 pode funcionar perfeitamente em um dispositivo executando 23. O problema descrito aqui é que a versão 23 da biblioteca de suporte exige que você direcione 23, pois a biblioteca de suporte faz referência a algumas APIs no SDK 23.
Bryan Herbst

42
Para aqueles como eu que são novos no Android Studio e estão confusos sobre como "usar a GUI abrindo as propriedades do projeto", no meu Android Studio (v1.3.1), vou para Arquivo, Estrutura do projeto e, à esquerda, O painel de mão na parte inferior é uma entrada em Módulos (chamada "app" no meu caso). Clico nisso e vejo uma guia Dependências.
Bryan

119
Ainda não acredito que o Android Studio libera coisas sem sequer testar algo tão básico !! Pelo menos coloque alguns avisos significativos !!
Josh

30
A GUI deveria ter exibido uma mensagem "detectamos que você não está segmentando a versão correta da API do Android. Deseja que eu a corrija?". Em vez disso, tenho que parar de trabalhar no avião e esperar até que eu possa pesquisar o fluxo de pilha.
Alguém em algum lugar

137

Isso acontece porque, depois das atualizações, o Android Studio usa a versão 23 da API por padrão.

O seguinte funcionou para mim:

Pressione Ctrl+ Shift+ Alt+ Spara acessar a página de estrutura do projeto. Vá para a guia de propriedades e altere 23.0.0 para 22.0.1 (ou equivalente ao que você estava usando anteriormente) na área da ferramenta de construção e reconstrua seu projeto.

Se isso não funcionar, vá para gradle: app e, em seguida,

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 mostrado acima, e sincronize o gradle. Isso definitivamente vai funcionar.


10
Para iniciantes como eu, que estão confusos sobre como "ir para gradele: app e compilar fileTree (dir: 'libs', inclua: ['* .jar'])) compile 'com.android.support:appcompat-v7:22.2 .1 '", no meu Android Studio (versão 1.3.1), no painel do projeto (que eu abri clicando na guia 1: Projeto à esquerda), vejo duas entradas em Scripts Gradle chamados" build.gradle " . O segundo tem (Módulo: app) ao lado. Cliquei duas vezes para abri-lo. Em seguida, na seção de dependências na parte inferior, alterei a v7: 23.0.0 para a v7: 22.2.1. Salvei (e sincronizei conforme solicitado pelo Studio) - parecia compilar ok.
Bryan

4
Como entrar na página de estrutura do projeto no MAC?
Rosu alin

4
@Sourav Mesmo depois de fazer essas alterações, o erro não foi resolvido. Ainda tenho esses erros no v23/values-23.xmlarquivo. Alterei os valores na página de estrutura do projeto, recrie o aplicativo. Mas ainda enfrentando o problema :(
Prabs

No mac, o atalho é ⌘ +; . Como alternativa, você pode ir para Arquivo> Estrutura do projeto.
Tomanow

115

Quando você atualiza seu Android Studio, ele usa a versão 23 da API por padrão, que é o principal motivo de sua ocorrência. Assim,

Inicialmente, verifique sua versão do AppCompat em build.gradle (Módulo: app) Ou seja,

Digite a descrição da imagem aqui

Se depois de mudar para 23 ocorrer um erro, basta fazer o download

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

do SDK Manager. Se já tiver baixado, então:

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

Clique no botão Gerenciador de SDK e abra a caixa de diálogo.

Digite a descrição da imagem aqui

Clique em Plataforma SDK e verifique se o Android 6.0 foi baixado ou não.

Caso contrário, faça o download primeiro. Após concluir o download, clique em Apply.

Digite a descrição da imagem aqui

Agora você precisa aplicar alterações ao seu projeto da configuração. Em seguida, pressione Ctrl+ Alt+ Shift+S para abrir a configuração

  1. Clique no aplicativo da lista.
  2. Propriedades do clique
  3. Alterar sua versão do SDK do Compile para API 23
  4. Altere a versão das ferramentas de compilação para 23.0.0

Digite a descrição da imagem aqui

Não se esqueça de reconstruir seu projeto.

Então seu erro se foi.


1
Eu entendi a sua maneira de definir a solução, mas tentar descrever o seu post com descrição completa
Naveed Ahmad

1
@NaveedAhmad Ok, eu vou editar meu post. Obrigado por sua sugestão .
Ravikant Paudel

1
Adicionei um post relacionado ao problema acima stackoverflow.com/a/32370099/2915785
Naveed Ahmad

1
hey, adicione mesma versão appcompat, ele resolveu o meu problema
vuhung3990

2
Nesses casos, as capturas de tela ajudam os bonecos como eu.
ern0

70

Se você tentou alterar o destino para uma versão anterior do GooglePlayServices ou AppCompatv7 e não funcionar, verifique se você tem alguma dependência de bibliotecas de projetos, este projeto terá como alvo a versão mais recente de qualquer uma dessas bibliotecas. Aconteceu comigo com o projeto da Biblioteca do Google Maps Utils:

substituir:

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

para

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

Em seguida, você pode continuar a API de segmentação completa 22

Se ainda não compilar, às vezes é útil definir a API compileSdkVersion como 23 e targetSdkVersion como 22.


35

Eu concordo com a resposta anterior. Sua versão do SDK de compilação deve corresponder à biblioteca de suporte. Aqui está o que eu fiz.

  1. Você pode acessar o SDK Manager e, na plataforma SDK, instalar o Android 5.X com nível 23 da API.
  2. Em Estrutura do Projeto, altere a versão do SDK de compilação para API 23 e a Versão das Ferramentas de Construção para 23.0.0

Então deve construir sem problema.


22

Você precisa definir compileSdkVersion como 23.

Desde API 23 Android removido os pacotes HTTP Apache obsoleto, por isso, se você usá-los para as solicitações do servidor, você vai precisar adicionar useLibrary 'org.apache.http.legacy'a build.gradlecomo indicado neste link:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"
    ...

    //only if you use Apache packages
    useLibrary 'org.apache.http.legacy'
}

15

Esse problema foi levantado porque agora a versão do SDK de compilação deve corresponder à versão principal da biblioteca de suporte do Android.

No meu caso, tenho a Android Support Libraryversão 23, então tive que compilar contra o Android SDK version 23e tive que mudar isso no meu build.gradlearquivo:

insira a descrição da imagem aqui

Bem, alguns de vocês precisarão instalar o SDK, Android 6.0 (API 23)

insira a descrição da imagem aqui

e não se esqueça de sincronizar projeto com arquivos gradle


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

9

Encontrei a solução, o problema começou quando atualizei o sdk, depois usei diferentes buildToolsVersion ('22 .0.1 ') e estava usando uma biblioteca de suporte diferente como a compilação' com.android.support:appcompat-v7:23.0.0 ' , mostrando você na imagem abaixo

insira a descrição da imagem aqui

Isso estava gerando um problema para " android.widget.Material ..." Então usei a mesma versão para a biblioteca de suporte, como a compilação 'com.android.support:appcompat-v7:22.0.1' e pronto. (Mostrando a captura de tela abaixo)

insira a descrição da imagem aqui


9

Você deve compilar seu projeto com a versão mais recente, para atualizar e instalar a partir do seu SDK. Sincronize seu projeto com o sync project with Gradle fileButton.
Você também pode continuar com a versão existente, mas verifique se ela está instalada corretamente abaixo da imagem, indicando a API 22 que está instalada corretamente.insira a descrição da imagem aqui

E sincronize seu projeto, se necessário.

insira a descrição da imagem aqui

isso pode ajudar.


8

Conforme apontado por Tanis.7x, a versão da biblioteca de suporte (23) não corresponde ao targetSdkVersion (22)

Você pode corrigir isso fazendo o seguinte:

No build.gradearquivo do seu módulo de aplicativo, altere a seguinte linha de código

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

Para

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

Isso usará a versão mais recente da versão appcompat compatível com o SdkVersion 22.


7

Sua versão do SDK de compilação deve corresponder à versão principal da biblioteca de suporte. Esta é a solução para o seu problema. Você pode verificá-lo facilmente em seus scripts Gradle em build.gradlearquivo. FX: se você compileSdkVersiontem 23 anos, sua biblioteca de compilação deve começar em 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'
}

E sempre verifique se o seu Android Studoi tem o nível de API suportado. Você pode verificá-lo no seu Android SDK, desta forma: insira a descrição da imagem aqui


6

No meu caso, era uma versão superior do Google-play-services. Eu os configurei para 7.0.0 (não 8.x) e tudo estava ok.


5

Eu queria fazer o downgrade da API 23 para 22 e obtive esse erro. Eu tive que mudar todos os build.gradle arquivos em um projeto 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'
}

4

Isto é o que me ajudou: Adicionando plataforma android específica

O que deve ser feito é o seguinte ... No meu caso, foi cordova, mas o mesmo é relevante para ionic, phonegape outras estruturas como estes:

  1. listar todas as plataformas instaladas para o seu projeto: cordova platform list. Você verá algo assim:

insira a descrição da imagem aqui

  1. remover a plataforma android: cordova platform remove android.

  2. em seguida, adicione a plataforma android específica: cordova platform add android@5.0.0.

Boa sorte! :)


3

Eu tenho os mesmos problemas. Resolvi meu problema atualizando gradle.build para cada submódulo para a versão mais recente do compilador.


2

Tudo está ótimo, mas nenhum de vocês explicou onde baixar as ferramentas de construção do SDK

Tudo está ótimo, mas nenhum de vocês explicou onde baixar as ferramentas de construção do SDK


1

Outra solução: navegue para

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

abra o .aararquivo com 7-zip ou winrar, na pasta res remova a values-23pasta e salve as alterações.


1

no módulo: 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'
}

projeto: nameAppXXXX (Gradle)

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

    }
}

allprojects {
    repositories {
        jcenter()
    }
}

e edite sua atividade de AppCompatActivity para, por exemplo, Atividade:

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

Atualize o Android Studio.

Eu tive esse problema com o Android Studio 1.3.1 e nenhuma das outras respostas funcionou para mim, mas após a atualização para a 1.5.1, não houve problemas.


1

Se você estiver usando o phonegap (multiplataforma) e tiver o mesmo problema acima, remova a plataforma Android usando o comando abaixo.

plataforma phonegap remover android

E adicione-o novamente.

plataforma phonegap adicionar android

Então problema resolvido para mim.


0

Como outros já mencionaram, você compile sdk versiondeve corresponder à sua support library'sversão principal. No entanto, isso também é relevante, subprojectscaso você tenha algum.

Caso contrário, você pode definir suas subprojectsversões de compilação sdk com o seguinte script:

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

Adicione este script ao seu build.gradlearquivo raiz .


-1

Se você estiver recebendo erros mesmo depois de baixar o SDK e o Android Studio mais recentes, aqui está o que eu fiz:

  1. Faça o download do SDK mais recente
  2. Abrir arquivo-estrutura do projeto ( Ctrl+ Alt+ Shift+ S)
  3. Nos módulos, selecione o aplicativo
  4. Na guia Propriedades: Altere a versão do SDK de compilação para API 23 Android 6.0 marshmallow (mais recente)

Espero que ajude alguém para que ele não sofra como eu sofri por esses dois dias.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.