Acabei de baixar e instalar o novo Android SDK. Eu queria criar um aplicativo simples para testá-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);
}
}
mas o Eclipse me dá o erro
R não pode ser resolvido
conectados
setContentView(R.layout.main);
Por quê?
PS: Eu tenho um arquivo XML nomeado main.xml
em res/layout/
.
android
eclipse
compiler-errors
android-resources
android-sdk-tools
Maurizio Pozzobon
fonte
fonte
Respostas:
Depois de rastrear esse problema também, encontrei esta nota na documentação do Android:
http://source.android.com/source/using-eclipse.html
Durante os tutoriais de amostra do Android, usava o comando Ctrl+ Shift+ Opara "Organizar importações" e gerar quaisquer instruções de importação ausentes. Às vezes, isso geraria a instrução de importação incorreta que ocultaria a
R.java
classe que é gerada automaticamente quando você cria.fonte
Cada vez que eu tive um problema com o R não foi gerado, ou mesmo desapareceu, isso ocorreu devido a algum problema no arquivo de layout XML que impedia a criação do aplicativo.
fonte
android:icon="@drawable/XXX"
declaração em um<item>
recurso de menu, mas não havia sinal vermelho que o recurso extraível XXX não foi encontrado. Em outros casos,"@drawable/YYY"
foi sinalizado quando YYY não foi encontrado, mas não neste caso. Por algum motivo.Sempre que você chegar
verifique o
/res
diretório e deve haver algum arquivo com algum erro e que impeça a criação do aplicativo. Por exemplo, pode ser um arquivo de layout ou pode ser devido à falta de algum recurso, mas você já o definiu no arquivo XML.Se você tiver imagens adicionais, mesmo não utilizadas (!) Ou não referenciadas (!) Em uma pasta como res / drawables-mdpi que não estejam em conformidade com as convenções de nomenclatura de arquivos (podem conter apenas [a-z0-9_.]), O A classe R.java pode não gerar, causando a cadeia de eventos em todas as outras postagens mencionadas. Espero que ajude!
fonte
Veja suas importações. As chances são de que a linha:
estarei lá. Se for esse o caso, remova-o, para que seu projeto resolva R não com a classe Android Resources padrão, mas com a gerada automaticamente a partir da sua pasta / res /.
fonte
E outra coisa que pode causar esse problema:
Eu instalei o novo ADT (v. 22). Parou de criar uma
gen
pasta que incluiR.java
. A solução foi também instalar novas ferramentas de compilação do SDK do Android no Android SDK Manager.Solução encontrada aqui
fonte
R.java
é um arquivo que os plug-ins do Android Eclipse criam ao criar seu aplicativo.R.java
é criado no diretório "gen". Este arquivo é gerado a partir das informações no diretório "res". Se você executar, selecione "Projeto" -> "Limpar ..." no menu Eclipse, ele removerá e gerará novamente oR.java
arquivo.O problema "R não pode ser resolvido" acontece quando você altera o nome do pacote no
AndroidManifest.xml
arquivo. Ele usa o nome do pacote do Android para criar um subdiretório no diretório "gen" onde ele armazena oR.java
arquivo.O Eclipse pode ter problemas ao executar a limpeza, porque está confuso sobre onde está o
R.java
arquivo quando você alterou o nome do pacote Android. Você pode renomear o subdiretóriogen
para corresponder ao seu novo nome de pacote ou alterar o nome do pacote novamente para o nome antigo. Faça a limpeza e altere o nome do pacote para o novo nome desejado. Isso funciona melhor se você parar o Eclipse de tentar construir enquanto estiver alterando o nome do pacote. No menu "Projeto", desmarque a opção "Compilar automaticamente" e também quando a caixa de diálogo "Limpar ..." perguntar se deve "Iniciar uma compilação imediatamente" desmarque a caixa para que não tente compilar enquanto estiver alterando o nome do pacote. Depois de alterar o nome, você pode ativar "Criar automaticamente" novamente.Observe que, se o
AndroidManifest.xml
nome do pacote de arquivos não corresponder ao nome do pacote Java, o Eclipse acabará adicionando automaticamente uma "importação <nome do pacote do Android> .R;" em todos os seus.java
arquivos que tenham referências a R. Se você alterar oAndroidManifest.xml
nome do pacote, algumas vezes o Eclipse não atualiza todas essas importações incluídas. Se isso acontecer, use a refatoração do Eclipse ( ALT+ Shift+ R) para alterar a instrução de importação em um de seus arquivos Java para o novoAndroidManifest.xml
nome do pacote. É melhor fazer isso enquanto você desabilitou o "Build Automaticamente".fonte
import com.example.main.package.name.R;
O que Will disse estava certo
mas descobri que havia outro problema que estava causando o primeiro. As ferramentas no diretório SDK não tinham permissões para serem executadas, portanto era como se não existisse para o Eclipse, portanto, não construiu o
R.java
arquivo.Então, modificar a permissão e selecionar "Criar automaticamente" resolveu o problema.
fonte
cd $ANDROID_SDK_ROOT/build-tools/<version>
. Em seguida,chmod a+x
em arquivos comoaapt
,aidl
,dexdump
,dx
, etc.ANDROID_SDK_ROOT
deve ser definido em seu ambiente, e ele irá apontar para a instalação SDK. Por exemplo/opt/android-sdk
,. É importante definir os doisANDROID_SDK_ROOT
eANDROID_NDK_ROOT
porque as ferramentas do Android os utilizam internamente. Consulte Diretório NDK recomendado? na lista de usuários do NDK.R é uma classe gerada automaticamente que contém as constantes usadas para identificar seus recursos. Se você não tiver um arquivo R.java (seria gen / eu.mauriziopz.gps / R.java no Eclipse com o SDK 1.5), recomendo fechar e reabrir seu projeto ou vá para Projeto> Construir tudo (e selecionando "Criar automaticamente" enquanto estiver lá, conforme recomendado por Josef). Se isso não funcionar, tente criar um novo projeto, se o problema for recriado, publique aqui novamente e entraremos em mais detalhes.
fonte
Feche todos os arquivos, limpe o projeto, reinicie o Eclipse.
fonte
Vale a pena conferir
AndroidManifest.xml
. O atributopackage
tem o valor correto.Isso é:
Depois de alterar isso, o
R.java
será gerado novamente.fonte
Este erro também pode ser causado pela adição de uma atividade a um espaço para nome diferente do espaço para nome raiz do seu pacote.
Por exemplo, se
com.example.myapp
for o espaço para nome raiz do seu pacote, você poderá adicionar uma atividade aocom.example.myapp.activities
espaço para nome.Isso produzirá o erro "R não pode ser resolvido".
Para corrigir a importação, o R no espaço para nome padrão em sua atividade deve ser:
fonte
Juntamente com as ótimas sugestões nas respostas anteriores, verifique se o destino do Android está definido:
Edit: Um ano depois, encontrei outra causa. Eu tinha uma imagem .jpg na minha pasta de desenho com o mesmo nome que uma imagem .png. A referência a esta imagem no meu código deve ter confundido o programa e deu o erro "R não pode ser resolvido".
fonte
Verifique se você instalou o gerenciador sdk do formulário da ferramenta de compilação do Android
projeto, clique com o botão direito do mouse em propriedades-> Java BuildPath, selecione Biblioteca e adicione android-support.jar, siga estas etapas.
Vá para Projeto-> Propriedades-> Caminho de Construção Java e selecione a guia Ordem e exportação. Defina a biblioteca .jar de suporte ao Android verificada e coloque-a no topo da lista. E limpe e reconstrua .. Funciona na maioria dos casos
fonte
Eu tive esse problema pela milionésima vez e percebi o que estava causando: Criei um arquivo XML com letras maiúsculas no nome. Todos os seus nomes de arquivos XML
/res
devem corresponder[a-z0-9\\._]
.fonte
Solução mais simples - Às vezes, você só precisa salvar o arquivo XML em que estava trabalhando para ativar o gerador automático.
Salve o arquivo (por exemplo, main.xml), exclua o arquivo R.java e veja se o R.java regenerado resolve o problema de resolução de R.
fonte
Verifique os nomes dos arquivos XML. Certifique-se de que todos estejam em letras minúsculas.
Verifique também se todos os nomes de recursos de imagem estão todos em LOWER CASE. Eu tinha uma letra maiúscula no nome do meu arquivo jpg e isso causou o erro não resolvido do R em todo o meu projeto.
fonte
R
é uma classe gerada. Se você estiver usando o Android Development Tools (ADT), ele será gerado sempre que o projeto for criado. Você pode ter o 'Build Automaticamente' desativado.fonte
Este erro surgiu na minha instalação do x64 Linux Mint. Aconteceu que o resultado foi uma falha no
ADB
binário, porque oia32-libs
pacote não foi instalado. Simplesmente executarapt-get install ia32-libs
e reiniciar o Eclipse corrigiu o erro.Se sua distribuição x64 não possui ia32-libs, você precisará usar o Multiarch.
Verifique os itens 4 e 5 deste post: http://crunchbang.org/forums/viewtopic.php?pid=277883#p277883
Espero que isso ajude alguém.
fonte
Pode ser necessário atualizar / instalar as ferramentas do SDK. Reinicie o Android SDK Manager novamente e instale um novo item: Android SDK Build-tools.one por uma exclusão, corrija qual deles funciona para você.
fonte
Pode ser necessário atualizar as ferramentas do SDK. Reinicie o Android SDK Manager novamente e instale um novo item: Android SDK Build-tools.
fonte
Eu tive esse problema também. Aconteceu que eu excluí inadvertidamente o recurso de cadeia "app_name" do
strings.xml
arquivo, o que estava causando um erro silencioso. Depois que eu o adicionei novamente, a classe R foi gerada com sucesso e tudo voltou a funcionar.fonte
Tente deixar o novo nome do arquivo de layout XML em minúsculas. Por exemplo, use em
my_file.xml
vez demyFile.xml
.fonte
Ainda outro motivo que
R.java
pode não ser gerado automaticamente é se você tiver diretórios como res / drawable-hdpi , res / drawable-mdpi ou res / drawable-ldpi .O 1.6+ parece estar bem com esses diretórios, mas o 1.5 não os deseja. Quando removi esses diretórios,
R.java
comecei a gerar automaticamente novamente para mim.fonte
Primeira verificação: existe algum erro em qualquer layout xml ou não; se for, resolva-a primeiro.
Caso contrário, remova a dependência de junção do projeto e reconstrua o projeto.
fonte
Muitas vezes, isso ocorre devido ao número da versão do MinSDK que você forneceu ao criar o projeto. Exemplo:
Se você deseja que o 2.1 seja o mínimo, o Android 2.1 é na verdade o nível 7 da API.
Você pode ver do que estou falando quando navega no SDK que você baixou e instalou. Navegue até o local em que você instalou o SDK (
C:\android-sdk-windows
por exemplo) e abra a pasta chamada "plataformas". Você verá algo como "android-7" listado como uma pasta e, se abrir, existe umsource.properties
arquivo que, quando aberto com um editor de texto, mostra a versão da plataforma correspondente.Ao criar um projeto e você deve selecionar uma API "Criar destino", a última coluna nessa lista chamada "Nível da API" mostra o número que você está procurando ao preencher a configuração do MinSDK.
Este é provavelmente um dos erros mais comuns que resulta no
R.java
arquivo não ser criado em Projeto> gen> nome do pacote> R.java.fonte
Retire
main.out.xml
. Eu sou novo nisso e ainda não sei para que serve esse arquivo, mas removê-lo resolveu o problema.fonte
Basta ir à lista de menus do Android Top. clique no menu Build , em Build, clique em Rebuild Project .
fonte
Eu tinha os exemplos do Android 8 e estava tentando usar o Android 7 SDK. Quando fechei o projeto e reabri a pasta do aplicativo e optei por usar o Android 8 SDK, ele foi capaz de encontrar o arquivo R. Espero que isto ajude.
fonte
No meu caso, tive um erro no meu
AndroidManifest.xml
. Outros disseram que seus arquivos XML devem estar livres de erros, mas eu estava procurando apenas na pasta res /. Encontre e corrija o maior número possível de erros, e o problema pode resolver-se.fonte
Caso alguém esteja interessado (talvez eu esteja salvando sua vida aqui), tive o erro,
R.xml
não posso ser resolvido, um pouco diferente em um projeto GLS. Hmmmm. Depois de pesquisarR.java
, encontrei uma classe gerada automaticamenteXML.java
, (acho) que não estava lá.Solução? Ele precisava de uma nova pasta em
res
:res\xml
e um arquivo chamadodefault_values.xml
lá. Então tudo estava bem.Caso você não tenha esse arquivo, é:
fonte