android - studio - ide java gradle




R non può essere risolto-Errore Android (20)

Ho appena scaricato e installato il nuovo SDK Android. Volevo creare una semplice applicazione per testarla.

La procedura guidata ha creato questo codice:

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

ma Eclipse mi dà l'errore

R non può essere risolto

in linea

setContentView(R.layout.main);

Perché?

PS: ho un file XML chiamato main.xml sotto res/layout/ .


il mio progetto include un r.java.at all'inizio, R.layout.main funziona bene.Ma, dopo aver aggiunto del codice non funziona, e l'errore è R.layout.main non può essere risolto.Qual è il problema ?

Guarda le tue importazioni. Le probabilità sono che la linea:

import android.R;

sarà là. In tal caso, rimuovilo, in modo che il tuo progetto risolva R non con la classe di risorse Android predefinita, ma con quella generata automaticamente dalla tua cartella / res /.


Assicurati di aver installato il modulo di sviluppo di Android modulo sdk manager

progetto clic destro proprietà-> Java BuildPath selezionare Libreria e aggiungere android-support.jar seguire questi passaggi.

Vai a Progetto-> Proprietà-> Percorso di costruzione Java di selezionare la scheda Ordine ed esportazione. Imposta la libreria .jar di Android-support e selezionala in cima all'elenco. E pulire e ricostruire .. Funziona per la maggior parte dei casi


Controlla i nomi dei file XML. Assicurati che siano tutti in minuscolo.

Assicurati anche che tutti i nomi delle risorse immagine siano anche tutti in LOWER CASE. Avevo una lettera maiuscola nel nome del mio file jpg e causava l'errore irrisolto R in tutto il mio progetto.


Dopo aver rintracciato anche questo problema, ho trovato questa nota nella documentazione di Android:

http://source.android.com/source/using-eclipse.html

* Nota: a volte a Eclipse piace aggiungere un'istruzione "import android.R" nella parte superiore dei file che utilizza risorse, specialmente quando si chiede a Eclipse di ordinare o gestire in altro modo le importazioni. Ciò causerà la tua rottura. Cerca queste dichiarazioni di importazione errate e cancellale. *

Mentre seguo le esercitazioni di esempio di Android, utilizzerei spesso il comando Ctrl + Shift + O per "Organizzare le importazioni" e generare eventuali istruzioni di importazione mancanti. A volte questo genererebbe la dichiarazione di importazione errata che nasconderebbe la classe R.java che viene generata automaticamente quando si crea.


Ho appena avuto questo problema per la milionesima volta e ho capito cosa stava causando: ho creato un file XML con lettere maiuscole nel nome. Tutti i nomi file XML in /res devono corrispondere a [a-z0-9\\._] .


Ho avuto anche questo problema. È risultato che avevo inavvertitamente cancellato la risorsa stringa "app_name" dal file strings.xml , che causava un errore silenzioso. Una volta che l'ho aggiunto, la classe R è stata generata con successo e tutto è stato ripristinato e funzionante.


Insieme agli ottimi suggerimenti delle risposte precedenti, assicurati che il tuo target Android sia impostato:

  1. Fai clic con il tasto destro sul tuo progetto
  2. Scegli Proprietà
  3. Scegli Android nel menu a sinistra
  4. Spunta una casella accanto al Target di costruzione del progetto appropriato.
  5. Fare clic su Applica e OK

Edit: Un anno dopo ho trovato un'altra causa. Ho avuto un'immagine jpg nella mia cartella drawable con lo stesso nome di un'immagine .png. Il riferimento a questa immagine nel mio codice deve aver confuso il programma e ha dato l'errore "R non può essere risolto".


La soluzione più semplice - A volte è sufficiente salvare il file XML su cui si stava lavorando per far avviare l'autogeneratore.

Salvare il file (ad es. Main.xml), quindi eliminare il file R.java e vedere se il R.java rigenerato risolve il problema di risoluzione R.


Ogni volta che ho riscontrato un problema con R non generato, o addirittura scomparso, ciò era dovuto a qualche problema nel file di layout XML che impediva la creazione dell'applicazione.


Ogni volta che ottieni

R non può essere risolto

quindi controlla la directory /res e deve esserci qualche file che contiene qualche errore e che impedisce l'esecuzione dell'applicazione. Ad esempio, potrebbe trattarsi di un file di layout o potrebbe essere dovuto ad alcune risorse mancanti, ma l'hai già definito nel file XML.

Se si dispone di immagini aggiuntive, anche inutilizzate (!) O non referenziate (!) In una cartella come res / drawables-mdpi che non soddisfano le convenzioni di denominazione dei file (può contenere solo [a-z0-9_.]), La La classe R.java potrebbe non generare, causando la catena di eventi a cui sono riferiti tutti gli altri post. Spero che sia d'aiuto!


Potrebbe essere necessario aggiornare gli strumenti SDK. Riavvia nuovamente Android SDK Manager e installa un nuovo elemento: Android SDK Build-tools.


Prima verifica c'è qualche errore in qualsiasi layout xml o meno, se poi lo risolvi prima.

Altrimenti rimuovi la dipendenza junit dal progetto e ricostruisci il progetto.


Quello che Will ha detto ha ragione

R è una classe generata automaticamente che contiene le costanti utilizzate per identificare le tue> risorse. Se non si dispone di un file R.java (sarebbe gen / eu.mauriziopz.gps / R.java in> Eclipse con l'SDK 1.5), consiglierei di chiudere e riaprire il progetto o andare su> Progetto> Crea tutto (e selezionando "Build Automatically" mentre ci sono come raccomandato da> Josef). Se questo non funziona, prova a creare un nuovo progetto, se il problema viene ricreato di> postare di nuovo qui e approfondiremo il problema.

ma ho scoperto che c'era un altro problema che stava causando il primo. Gli strumenti nella directory SDK non disponevano delle autorizzazioni per l'esecuzione, quindi era come se non esistesse per Eclipse, quindi non ha creato il file R.java .

Quindi modificare il permesso e selezionare "Build Automatically" ha risolto il problema.


Questo errore è apparso sull'installazione xxx di Linux Mint. Si è scoperto che il risultato era un errore nel binario ADB , perché il pacchetto ia32-libs non era installato. Semplicemente eseguendo apt-get install ia32-libs e rilanciando Eclipse ha corretto l'errore.

Se la tua distribuzione x64 non ha ia32-libs, dovrai usare Multiarch.

Controlla # 4 e # 5 su questo post: http://crunchbang.org/forums/viewtopic.php?pid=277883#p277883

Spero che questo aiuti qualcuno.


R è una classe generata automaticamente che contiene le costanti utilizzate per identificare le risorse. Se non si dispone di un file R.java (sarebbe gen / eu.mauriziopz.gps / R.java in Eclipse con l'SDK 1.5), consiglierei di chiudere e riaprire il progetto o andare a Progetto> Crea tutto (e selezionando "Build Automatically" mentre è lì come raccomandato da Josef). Se ciò non funziona, prova a creare un nuovo progetto, se il problema viene ricreato piuttosto che postare nuovamente qui e approfondiremo il problema.


Rimuovi main.out.xml . Sono nuovo a questo e non so ancora per cosa sia usato questo file, ma rimuoverlo ha risolto il problema.


Spesso questo è dovuto al numero di versione MinSDK fornito durante la creazione del progetto. Esempio:

Se vuoi che 2.1 sia il minimo, Android 2.1 è in realtà API di livello 7.

Puoi vedere di cosa sto parlando quando navighi nell'SDK che hai scaricato e installato. Passare al punto in cui è stato installato l'SDK su ( C:\android-sdk-windows ad esempio) e aprire la cartella denominata "piattaforme". Vedrai qualcosa come "android-7" elencato come una cartella e, se source.properties c'è un file source.properties che, una volta aperto con un editor di testo, ti mostrerà la versione della piattaforma corrispondente.

Quando crei un progetto e devi selezionare l'API "Crea target", l'ultima colonna in quell'elenco denominato "Livello API" mostra il numero che stai cercando quando si inserisce l'impostazione MinSDK.

Questo è probabilmente uno degli errori più comuni che si verificano nel file R.java che non viene creato in Project> gen> nomepacchetto> R.java.


Un altro motivo per cui R.java potrebbe non essere autogenerato è se si hanno directory come res / drawable-hdpi , res / drawable-mdpi o res / drawable-ldpi .

1.6+ sembra essere OK con queste directory, ma 1.5 non le vuole. Quando ho rimosso quelle directory, R.java iniziato a R.java per me di nuovo.


Vale la pena controllare su AndroidManifest.xml . Il package attributi ha il valore corretto.

Questo è:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="your.correct.package.name"
   ...

Dopo averlo modificato, R.java verrà rigenerato.


R.java è un file che i plugin Android Eclipse creano durante la creazione dell'applicazione. R.java viene creato nella directory "gen". Questo file è generato dalle informazioni nella directory "res". Se esegui seleziona "Progetto" -> "Pulisci ..." nel menu Eclipse, rimuoverà e quindi rigenererà il file R.java .

Il problema "R non può essere risolto" si verifica quando si modifica il nome del pacchetto nel file AndroidManifest.xml . Usa il nome del tuo pacchetto Android per creare una sottodirectory nella directory "gen" dove memorizza il file R.java .

Eclipse potrebbe avere problemi nell'esecuzione della pulizia, poiché è confuso su dove si trova il file R.java quando è stato modificato il nome del pacchetto Android. È possibile rinominare la sottodirectory in gen in modo che corrisponda al nuovo nome del pacchetto oppure è possibile modificare il nome del pacchetto con il vecchio nome. Pulisci e modifica il nome del pacchetto con il nuovo nome desiderato. Funziona meglio se impedisci a Eclipse di provare a creare mentre cambi il nome del pacchetto. Sotto il menu "Progetto" deseleziona l'opzione "Costruisci automaticamente" e anche quando la finestra di dialogo "Pulisci ..." chiede se deve "Inizia subito una costruzione" deseleziona la casella in modo che non provi a creare mentre stai cambiando il nome del pacchetto. Dopo aver cambiato il nome, puoi riattivare "Costruisci automaticamente".

Nota che se il tuo nome del pacchetto file AndroidManifest.xml non corrisponde al nome del tuo pacchetto Java, Eclipse finirà per aggiungere automaticamente un "importazione <nome del tuo pacchetto Android> .R;" linea in tutti i file .java che hanno riferimenti a R. Se si modifica il nome del pacchetto AndroidManifest.xml , a volte Eclipse non aggiorna tutte queste importazioni aggiunte. In tal caso, utilizzare il refactoring Eclipse ( ALT + Shift + R ) per modificare l'istruzione import in uno dei file Java nel nuovo nome del pacchetto AndroidManifest.xml . È meglio farlo mentre hai disabilitato "Build Automatically".







android-sdk-tools