R não pode ser resolvido - erro Android
-
23-08-2019 - |
Pergunta
Eu apenas o download e instalado o novo SDK Android. Eu queria criar uma aplicação simples para test drive-lo.
O assistente criou este código:
package eu.mauriziopz.gps;
import android.app.Activity;
import android.os.Bundle;
public class ggps extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
Eclipse me dá o erro
R não pode ser resolvido
na linha
setContentView(R.layout.main);
Por quê?
PS: Eu tenho um arquivo XML chamado main.xml
sob res/layout/
Solução 7
O que Will disse estava certo
R é uma classe gerada automaticamente que contém as constantes usadas para identificar seus> recursos. Se você não tem um arquivo R.java (seria gen / eu.mauriziopz.gps / R.java em> Eclipse com o 1.5 SDK) Eu recomendaria fechar e reabrir seu projeto ou indo> Projeto> Construir tudo (e selecionando "criar automaticamente" enquanto há como recomendado pelo> Josef). Se isso não funcionar, do que tentar fazer um novo projeto, se o problema é recriado que> postar aqui novamente e vamos entrar em mais detalhes.
mas eu descobri que havia um outro problema que estava causando o primeiro. As ferramentas no diretório SDK não tem as permissões para ser executado, então foi como a não existia para Eclipse, portanto, não construir o arquivo R.java
.
Assim, modificando a permissão e selecionando "criar automaticamente" resolveu o problema.
Outras dicas
Depois de rastrear esse problema também, achei que esta nota na documentação do Android:
http://source.android.com/source/using-eclipse.html
* Nota: Eclipse, por vezes, gosta de adicionar uma declaração "import android.R" no topo de seus arquivos que os recursos de uso, especialmente quando você perguntar para Eclipse tipo ou de outro modo gerenciar importações. este fará com que o make para quebrar. Veja para fora para estes importação errônea declarações e excluí-los. *
Ao atravessar os tutoriais de amostra do Android, muitas vezes eu ia usar o Ctrl + Mudança + O comando para "Organizar Importações" e gerar qualquer falta declarações de importação. Às vezes, isso iria gerar a declaração incorreta de importação que iria esconder a classe R.java
que é gerado automaticamente quando você construir.
Cada vez que eu tive um problema com R não foi gerado, ou até mesmo desapareceram, isso foi devido a algum problema no arquivo de layout XML que impediu a aplicação de ser construído.
Sempre que você começa
R não pode ser resolvido
, em seguida, verifique o diretório /res
e deve haver algum arquivo que tem algum erro nele e que está impedindo que a aplicação seja construída. Por exemplo, pode ser um arquivo de layout ou pode ser devido a algum recurso que falta é, mas você já definiu no arquivo XML.
Se você tiver qualquer (!) Imagens adicionais, mesmo não utilizados (!) Ou não referenciadas em uma pasta como res / drawables-mdpi que não cumpram com as convenções de nomeação de arquivo (pode conter apenas [a-z0-9_.] ), a classe R.java pode não gerar, fazendo com que a cadeia de eventos todos os outros cargos referidos. Espero que ajude!
meu projeto tem incluir um r.java.at o início, R.layout.main trabalho bom.Mas, após a adição de algum código que não funciona, eo erro é R.layout.main não pode resolvido. qual é o problema?
Olhe para suas importações. As chances são de que a linha:
import android.R;
estará lá. Se for esse o caso, removê-lo, de modo que seu projeto vai resolver R não com o padrão classe Resources Android, mas com a auto-gerada a partir de seu / res / pasta.
E outra coisa que pode causar este problema:
Eu instalei a nova ADT (v. 22). Ele parou de criar pasta gen
que inclui R.java
. A solução foi também instalar novas Ferramentas de Construção do Android SDK do Android SDK Manager.
R.java
é um arquivo que os plugins do Eclipse Android cria enquanto
a construção de sua aplicação. R.java
é criado sob o "gen"
diretório. Este arquivo é gerado a partir da informação nas "res"
diretório. Se você executar selecione "Projeto" -> "Clean ..." no Eclipse
menu, ele irá remover e regenerar o arquivo R.java
.
O problema "R não pode ser resolvido" acontece quando você mudar de
nome do pacote no arquivo AndroidManifest.xml
. Ele usa o seu Android
empacotar nome para criar um subdiretório sob o diretório "gen", onde
ele armazena o arquivo R.java
.
Eclipse pode ter problemas execução limpo, porque ele está confuso sobre
onde o arquivo R.java
é quando você mudou o pacote Android
nome. ou você pode renomear o gen
sob subdiretório para corresponder ao seu
novo nome de pacote, ou você pode mudar o seu nome do pacote de volta para o velho
nome. Fazer a limpeza e, em seguida, mudar o nome do pacote para o novo nome
você quer. Isso funciona melhor se você parar de Eclipse de tentar construir
enquanto você está mudando o nome do pacote. Sob o menu "Projeto"
desmarque a opção "criar automaticamente" e também quando o
"Clean ..." diálogo pergunta se ele deve "iniciar uma compilação imediatamente"
desmarque a caixa para que ele não tente construir enquanto você está mudando o
nome do pacote. Depois de ter alterado o nome que você pode transformar "Desenvolver
Automaticamente" novamente.
Note que, se o seu AndroidManifest.xml
nome do pacote de arquivos não corresponde
o nome do pacote Java, Eclipse vai acabar automaticamente adicionando um
"Import .java
que tem todas as referências a R. Se você mudar de AndroidManifest.xml
nome do pacote, por vezes, Eclipse não atualiza tudo isso adicionado
importações. Se isso acontecer, use o Eclipse refatoração ( ALT +
Mudança + R ) para alterar a instrução de importação em um dos seus arquivos Java
o seu novo nome de pacote AndroidManifest.xml
. É melhor fazer isso
enquanto tiver desativado "criar automaticamente".
R é uma classe gerada automaticamente que contém as constantes usadas para identificar seus recursos. Se você não tem um arquivo R.java (seria GEN / eu.mauriziopz.gps / R.java em Eclipse com o 1.5 SDK) Eu recomendaria fechar e reabrir seu projeto ou indo para Projeto> Construir tudo (e selecionando "Construir automaticamente" enquanto há como recomendado por Josef). Se isso não funcionar, do que tentar fazer um novo projeto, se o problema é recriado de pós aqui novamente e vamos entrar em mais detalhes.
Fechar todos os arquivos, projeto limpo, reinicie o Eclipse.
Vale a pena conferir em AndroidManifest.xml
. O package
atributo tem o valor correto.
Isto é:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="your.correct.package.name"
...
Depois de mudar isso, o R.java
será gerado-re.
Este erro também pode ser causada pela adição de uma atividade para um namespace que é diferente do namespace raiz para o seu pacote.
Por exemplo, se com.example.myapp
é o namespace raiz para o seu pacote, você pode então adicionar uma atividade para o namespace com.example.myapp.activities
.
Isto irá produzir o erro "R não pode ser resolvido".
Para corrigir a importação a R no namespace padrão em sua atividade deve ser:
import com.example.myapp.R;
Junto com as grandes sugestões nas respostas anteriores, certifique-se seu alvo Android está definido:
- Clique com o botão direito do mouse em seu projeto
- Escolha Propriedades
- Escolha Android no menu à esquerda
- Tick uma caixa ao lado da Construir projeto apropriado Target.
- Clique em Aplicar e OK
Edit: Um ano mais tarde eu encontrei uma outra causa. Eu tinha uma imagem .jpg na minha pasta drawable com o mesmo nome como uma imagem de .png. Fazendo referência a esta imagem no meu código deve ter confundido o programa e ele deu o erro "R não pode ser resolvido".
Certifique-se de que você instalou a ferramenta de construção gerente de formulário SDK Android
projeto com o botão direito Propriedades-> Java Buildpath selecione Biblioteca e adicionar android-support.jar a seguir estes passos.
Vá para Projeto-> Propriedades-> caminho de construção Java do que seleccionar a ordem e guia de exportação. Set android-suporte .jar biblioteca verificado e se-lo em cima da lista. E limpo e rebuild..It obras para a maioria dos casos
Eu só tinha este problema pela milionésima vez e percebi que estava causando isso: eu criei um arquivo XML com letras maiúsculas no nome. Todos os seus nomes de arquivos XML em /res
deve coincidir com [a-z0-9\\._]
.
Mais simples -. Às vezes você só precisa salvar o arquivo XML que estava trabalhando para obter o autogenerator para chutar
Salve o arquivo (por exemplo main.xml) exclua o arquivo R.java e ver se o R.java regenerado resolve o problema R determinação.
R
é uma classe gerada. Se você estiver usando as ferramentas de Desenvolvimento do Android (ADT) é gerado sempre que o projeto é construído. Você pode ter 'criar automaticamente' desligado.
Verifique os nomes de arquivos XML. Certifique-se de que eles estão todos em letras minúsculas.
Também certifique-se de que quaisquer nomes de recursos de imagem também são todos em letras minúsculas. Eu tinha uma letra maiúscula em nome do meu arquivo jpg, e isso fez com que o não resolvido direita erro R em meu projeto.
Este erro surgiu na minha instalação do x64 Linux Mint. Descobriu-se que o resultado foi uma falha no binário ADB
, porque o pacote ia32-libs
não foi instalado. Simplesmente executando apt-get install ia32-libs
e relançar Eclipse Corrigido o erro.
Se a sua distro x64 não tem ia32-libs, você vai ter que ir Multiarch.
Verifique # 4 e # 5 sobre este post: http://crunchbang.org/forums/viewtopic.php?pid=277883#p277883
Espero que isso ajude alguém.
Você pode precisar de ferramentas de atualização do SDK. Relançar Android SDK Manager novamente e instalar um novo item: SDK Android Build-ferramentas.
Eu tive esse problema também. Descobriu-se que eu tinha excluído inadvertidamente o "app_name" recurso de cadeia a partir do arquivo strings.xml
, que estava causando um erro de silêncio. Uma vez eu adicionei-lo de volta, a classe R foi gerado com sucesso e tudo era voltar a funcionar.
Tente fazer o seu novo nome de arquivo de layout XML minúsculas. Por exemplo, o uso my_file.xml
vez de myFile.xml
.
No entanto, outro R.java
razão pode não ser gerada automaticamente é se você tiver diretórios como res / drawable-hdpi , res / drawable-mdpi ou res / drawable -ldpi .
1.6+ parece ser OK com esses diretórios, mas o 1.5 não quer que eles. Quando eu removi os diretórios, R.java
começou autogenerating para mim novamente.
Eu tinha os exemplos de Android 8 e estava tentando usar Android 7 SDK. Quando fechei o projeto e reabriu a pasta do aplicativo e escolheu usar Android 8 SDK, foi capaz de encontrar o arquivo R. Espero que isso ajude.
No meu caso, eu tinha um erro no meu AndroidManifest.xml
. Outros disseram que seus arquivos XML deve estar livre de erros, mas eu estava apenas olhando no res / pasta. Encontrar e corrigir tantos erros possíveis eo problema pode muito bem resolver-se.
Muitas vezes isso é por causa do número da versão MinSDK você forneceu ao criar o projeto. Exemplo:
Se você quiser 2.1 a ser o mínimo, Android 2.1 é realmente API Nível 7.
Você pode ver o que estou falando quando você navega na SDK você baixou e instalou. Navegue até o local da instalação do SDK para (C:\android-sdk-windows
por exemplo) e abra a pasta com o nome "plataformas". Você vai ver algo como "android-7" listada como uma pasta, e se você abrir que há um arquivo source.properties
que, quando aberto com um editor de texto, irá mostrar-lhe a versão da plataforma correspondente.
Quando você cria um projeto, e você deve selecionar uma API "Build Target", a última coluna na lista com o nome mostra "API Level" o número que você está procurando ao preencher a configuração MinSDK.
Este é provavelmente um dos mais erros comuns que resulta no arquivo R.java
não sendo criados no âmbito do Projecto> gen> packagename> R.java.
Remove main.out.xml
. Eu sou novo para isso e ainda não sabe o que este arquivo é usado para, mas removê-lo limpo o problema.
Infelizmente nenhuma das perguntas existentes ajudou. Desde o meu problema parece plataforma específica, este só pode funcionar se você estiver em Ubuntu de 64 bits (Atualmente, estou usando o Ubuntu 12). No começo eu não vi o "Problemas" Window, que já sugeriu uma solução, que em 64 Bit Ambiente você precisa dos 32 libs bits, o que pode estar faltando:
sudo apt-get install ia32-libs
Eu instalei o pacote e reconstruir meu projeto, que corrigiu o problema para mim.