il pacchetto R non esiste


114

Ho Rcapito che il temuto pacchetto non esiste, mi sta uccidendo. Il codice va bene Ho delle app sul mercato che eseguono il codice.

Ora sta effettuando semplici webviewapplicazioni. o.0

R.string.app_nameè un errore mio main.xmle string.xmlva bene. Sono così confuso.

Ho riaperto una versione precedente di un "borrow"po 'di codice ed è stata inondata di R. errors.ho fatto una pulizia e nulla è cambiato tranne che per l'importazione R.androidaggiunta in alto.

Ho persino caricato Netbeans e ottengo la stessa cosa. Clean non funziona. Posso scrivere il R.javafile da solo?

Cos'è questa Rcosa? non lo è R. dovrebbe corrispondere aR.java


1
controlla la cartella res per eventuali errori, se hai alcuni progetti aggiunti come libreria controllali anche tu
Sunny Kumar Aditya

1
Premi Alt + Invio sulla riga setContentView (R.layout ... per aggiungere l'importazione.
live-love

Risposte:


127

Per chiunque si sia imbattuto in questo, ho riformattato rinominando le cartelle dello spazio dei nomi. Ho appena dimenticato di modificare anche AndroidManifest ed è per questo che ho ricevuto questo errore.

Assicurati di controllare anche questo.


1
Sembra che io sia in grado di accedere a R solo dalle mie classi di attività. Ho ricevuto questo errore durante il tentativo di accedervi da altri file di classe.
Joe Lapp

84

Giusto per rendere questo semplice:

import your.app.package.R;

Ovviamente, la sostituzione your.app.packagecon il pacchetto dell'app.

In tutte le classi che utilizzano riferimenti a risorse R, rimuovere qualsiasi altro importcon .R, ieimport android.R;


3
Quando si utilizza Cordova, questa è la soluzione corretta. Testato con Cordova 3.0.9
Peter

1
In realtà, errore mio. Ciò consente al progetto Cordova di COSTRUIRE correttamente, tuttavia la schermata iniziale NON viene ancora visualizzata ... Quindi questa soluzione non risolve effettivamente il problema in questione.
Peter,

Questo è quello che dovevo fare quando converto un progetto di test Eclipse in un modulo Android Studio.
RightHandedMonkey

Se stai usando phonegap e aggiungi la dichiarazione di importazione sopra all'interno del tuo file di plugin, assicurati di rimuovere la piattaforma e aggiungere di nuovo. Come questo phonegap platform remove androidephonegap platform add android
Fawaz

54

TL; DR , se viene visualizzato l'errore "il pacchetto R non esiste", le possibili ragioni sono

  • qualche errore nei file di risorse XML
    -> correggi gli errori XML
  • il pacchetto corrente è diverso dal Rpacchetto (vedere l' package attributo in AndroidManifest.xml)
    -> Rclasse di importazione , ad esempio import com.example.android.R;
    -> o utilizzare il pacchetto appropriato nel sorgente, ad esempio package com.example.android;
    -> o modificare la attributo pacchetto in AndroidManifest.xml in <manifest xmlns:android="..." package="com.example.android" ...>, se appropriato
  • gli RID utilizzati provengono dalle risorse di sistema
    -> non importare android.R, ma anteporre agli ID offensivi android., ad esempio, android.R.layout.simple_list_item_2
    puoi importare android.Rinvece di anteporre gli ID ovviamente, ma poi non puoi più importare la Rclasse dell'applicazione e devi anteporre gli ID dell'applicazione, ad esempiocom.example.android.R.id.main_menu .

La R classe viene generata automaticamente dalle risorse dell'applicazione. Contiene le ids per queste risorse ed è contenuto nel pacchetto denominato in <manifest> tag nel AndroidManifest.xmlfile corrispondente .

Se non sono presenti errori nei file XML delle risorse, il file R.java origine verrà generata in una sottodirectory del pacchetto di seguito gen/e compilata.


C'è un'altra Rclasse situata nel androidpacchetto. Questa android.Rclasse contiene alcune classi nidificate, che a loro volta contengono se idaltri valori per le risorse di sistema .


Per usare una classe in Java, devi nominare la classe con l'intero pacchetto, ad es

java.util.List<Object> list = new java.util.ArrayList<Object>();

oppure importa la classe e poi usala senza pacchetto

import java.util.List;
import java.util.ArrayList;
List<Object> list = new ArrayList<Object>();

Puoi anche usare una classe senza nominare il pacchetto, se sia la classe corrente che la classe utilizzata sono nello stesso pacchetto, ad es.

package com.example.android;
public class A {
    /* ... */
}
package com.example.android;
public class B {
    public void useA() {
        A a = new A();
    }
}

1
Nel mio caso, il problema era classpath "com.android.tools.build:gradle:3.3.0". L'ho cambiato in classpath "com.android.tools.build:gradle:3.2.1" e il problema è stato risolto.
Mohit Rajput

25

Mai, mai provare a scrivere la classe R da soli!

Hai importato la classe R giusta nei tuoi file?

fare

import android.R;

invece di

import com.example.R;

sembra essere il problema per molte persone. Dopo aver pulito e costruito, a volte le mie classi importano quello sbagliato.


3
Ma non capisco che la cosa R non fosse presente quando inizialmente ho codificato e rispettato il programma.
Taz Ryder

12

se si sta sviluppando in Android Studio e si è eseguito il refactoring del nome del pacchetto, è necessario modificare il nome del pacchetto nel file manifest di Android e nel file gradle dell'app.

 applicationId "change here your package name"

e nel file manifest

 package="change here your package name"

Sì. Ad esempio, lettere maiuscole leggermente diverse del nome dell'app.
Steve White

9

R.java è un file generato automaticamente, di solito non viene compilato se si verificano errori nel file xml.

No Non puoi scrivere il tuo file R.java, deve essere generato dal compilatore di risorse.

Verifica la presenza di errori in tutti i tuoi file xml.


1
Che tipo di errori e come dovrebbe individuarli un principiante?
user1725145

6

La classe R è il codice Java generato automaticamente dai tuoi file XML (layout dell'interfaccia utente, stringhe di internazionalizzazione, ecc.) Se il codice funzionava prima (come sembra), devi dire al tuo IDE di rigenerare questi file in qualche modo :

  • in IntelliJ, seleziona Strumenti> Android> Genera sorgenti per <progetto>
  • (Se conosci la strada in un altro IDE, sentiti libero di modificare questa risposta!)

Questa era la risposta che ho cercato. Grazie .. +1
Adhikari Bishwash

5

Suppongo che funzionasse, ma ora non funziona ..

Ciò può accadere se si modifica il nome del PACCHETTO all'interno del file MANIFEST

<manifest
   package="com.example.android...."

Se vuoi cambiare il nome del pacchetto

  1. Modificare manualmente il nome del pacchetto nel file manifest.
  2. Fai clic sulla tua classe R.java e premi F6. Ti consentirà di spostare la classe su un altro pacchetto e tutti i riferimenti a quella classe verranno aggiornati.

Sei un dio! Stavo cambiando il mio progetto da com.example.rickydam.txtbooksa com.txtbooks.txtbookscreando un nuovo progetto e ho spostato tutto nel nuovo progetto ma non è riuscito a trovare R. Ho provato a invalidare le cache, sincronizzarmi con gradle, pulire il progetto, ricostruire il progetto, reinstallare gli strumenti SDK ... Non funzionava niente! Ma la tua soluzione ha risolto il mio problema! Grazie ancora! Continua a programmare!
Ricky Dam

4

Ho appena riscontrato questo errore durante l'utilizzo di Bazel per creare un'app Android:

error: package R does not exist
                + mContext.getString(R.string.common_string),
                                      ^
Target //libraries/common:common_paidRelease failed to build
Use --verbose_failures to see the command lines of failed build steps.

Assicurati che il tuo android_library/ android_binarystia usando un AndroidManifest.xmlcon l' package=attributo corretto e, se stai usando l' custom_packageattributo android_libraryo android_binary, assicurati che sia scritto correttamente.


3

Elimina import android.R; da tutti i file .. una volta pulito il progetto e compilato il progetto .... Verrà generato


3

Esempio: il mio pacchetto è com.example.mypc.f01 , per correggere l'errore aggiungi la riga di seguito all'attività:

import com.example.mypc.f01.R;


3

Di seguito sono riportate alcune tecniche che puoi utilizzare per rimuovere questo errore: -

  1. Pulisci il tuo progetto, Buidl-> clean Project
  2. Ricostruisci progetto, Compila -> Ricostruisci progetto
  3. Apri manifest e controlla se mancano risorse
  4. Layout del check-in per un particolare ID se mancante aggiungilo
  5. Se i passaggi precedenti non hanno funzionato, riavvia Android Studio invalidando la cache

2

Nel mio caso mi sono reso conto che stavo creando più pacchetti nel progetto. All'interno del manifest di Android ho scoperto che il nome del provider conteneva erroneamente il valore di MyContentProvider invece di .provider.MyContentProvider. Il mio pacchetto principale (con l'interfaccia utente) era co.companyname.database.provider invece di co.companyname.database.

Quindi sulle istruzioni di importazione per la classe interessata ho semplicemente fatto clic con il pulsante destro del mouse e ho chiesto ad Android Studio (0.8.6) di ottimizzare le mie istruzioni di importazione. Ho anche notato che se cerchi .R nella barra di ricerca AS nell'angolo in alto a destra dell'IDE puoi trovare un file R.java generato automaticamente che fa parte del tuo pacchetto. A questo punto non devi cambiare nulla. Studio dovrebbe correggere il progetto dopo aver corretto il file manifest di Android e ricostruito.

Un altro elemento è che in una classe stavo facendo uso di toString (). Length () per valutare una stringa ma li ho scambiati con TextUtils.IsEmpty (stringVal); Non riesco a pensare a nient'altro che ho fatto per risolvere il problema.

Spero che questo aiuti qualcuno.

NB - Tutto questo è con AS 0.8.6

PS

R.java viene generato automaticamente, quindi leggi l'intestazione: / * FILE GENERATO AUTOMATICAMENTE. NON MODIFICARE. * * Questa classe è stata generata automaticamente dallo strumento * aapt dai dati delle risorse trovati. * Non dovrebbe essere modificato a mano. * /


2

Quando l'ho sperimentato, ho creato un nuovo progetto e ho copiato i file dal mio vecchio progetto a quello nuovo.

  1. Inizia un nuovo progetto
  2. Aggiungi i vecchi file nel nuovo progetto (copia e fai clic destro su Layout, drawables, com.packagename, ...) per incollare i miei vecchi file di progetto

Tuttavia, ho ancora lo stesso problema: R does not exist . Poi mi sono reso conto di aver copiato e incollato Manifest dal mio blocco note nei manifesti di Android Studio e non avevo cambiato il nome del pacchetto nel file manifest.

Pertanto, una volta modificato il nome del pacchetto nel manifest con il nuovo nome del progetto, il nuovo progetto che avevo creato ha funzionato bene.


1

Quali file stai importando nei file ottenendo l'errore R?

La mia comprensione del file R è che vengono generati automaticamente elenchi di riferimento per tutti gli attributi all'interno dell'app Android. Pertanto, non puoi modificarlo da solo.

Stai usando Eclipse per costruire questo progetto? I progetti più vecchi hanno ricevuto questi errori prima di aggiornare Eclipse? Quali sono i riferimenti che ricevono errori?

Verifica di non aver importato un altro file R da un altro codice copiato in un'altra app.


Ho avuto problemi con R quando il file AndroidManifest.xml e il file project.properties all'interno del progetto non mostravano la stessa versione di destinazione / minima di Android.
Music Monkey

1

Mi imbatto in questo problema ogni volta che cambio computer e provo a importare vecchi progetti da file trasferiti tramite USB.

La mia soluzione alternativa è creare un nuovo progetto e copiare (trascinare) i file nell'IDE (attualmente utilizzando Netbeans) e ricostruirli. Questo è un fastidio e una soluzione un po 'complicata, ma risolve il problema.

Se ciò accade a te, nel peggiore dei casi potresti dover eseguire il backup dei file, eliminare il progetto e trascinare i file lì e ricompilare. Si spera che non si arrivi a questo, ma questa sarebbe la tua opzione nucleare.


1

Puoi provare

Menu principale di Android Studio> File> Invalida cache / riavvio ...

Fare clic sul pulsante invalida cache / riavvia per riavviare il progetto

Risolvi nuovamente R.xxxx.xxx se alcuni frammenti di classe R di classe non si sono risolti correttamente

quindi ricostruisci il tuo progetto

Spero che sia d'aiuto


0

Se riscontri questo errore in Android Studio:

Controlla i file del modulo Gradle -> defaultConfig -> impostazione applicationId.

Controlla il tag AndroidManifest.xml -> manifest package.

Controlla le dichiarazioni del pacchetto in tutti i file java src.

Sincronizza, pulisci e ricostruisci con Gradle.

Non creare MAI il tuo file R. R viene generato automaticamente dai file java di origine e dalle impostazioni di compilazione.


0

Avevo: "errore: il pacchetto R non esiste" e presumevo che javac non avesse accesso a R.java.
Quindi ho aggiunto% PROJ_LOC% \ gen a sourcepath e ha funzionato! SOURCEPATH =% PROJ_LOC% \ src;% PROJ_LOC% \ gen

Non sto usando Android Studio o Ant (o XML).


0

Se questo errore è apparso dopo aver risolto i conflitti di unione, potrebbe essere d'aiuto semplice Build -> Clean project.


0

Mi sono appena sbarazzato dell'errore nel mio progetto. Avevo importato un progetto di esempio, avevo cambiato le cartelle del pacchetto ma non avevo aggiornato il pacchetto in uno dei file java.

La causa più probabile di questo errore "il pacchetto R non esiste" è che il nome del pacchetto in Java o nel file manifest non è corretto. Assicurati che sia corretto e sincronizzato, quindi esegui una build pulita.


0

A volte, viene risolto quando reimportare il progetto in Android Studio.


0

Percorso errato: il progetto "incassa" i puntatori alle immagini e se sono state apportate modifiche al nome del percorso, ad esempio pacchetto o cartelle Refactored. Quindi scrivi semplicemente di nuovo la lettera R e l'editor suggerisce il percorso giusto e funzionerà. In questo caso i nomi dei file sono corretti e il contenuto a cui si fa riferimento nel puntatore R. è presente ma il percorso è sbagliato, quindi clean e build non funzioneranno.


0

Un altro caso di rottura di R. è l' elaborazione delle annotazioni .

Alcune elaborazioni potrebbero fare riferimento a classi situate in determinate cartelle o livelli di cartelle. Se sposti le classi richieste in un'altra posizione, puoi ottenere R. come classe sconosciuta.

Purtroppo il puntatore di errore a questo problema non è evidente in Android Studio.


0

Nessun vantaggio di scrivere R.java da soli perché viene modificato ad ogni build,

Ricorda solo di usare R. qualcosa ad esempio: R.raw.filename dall'interno delle classi che ha un valore del pacchetto simile al valore del pacchetto all'interno di AndroidManifest.xml

perché gli ID risorse R. sono definiti per l'applicazione o la libreria corrente e vengono tutti controllati se esistono in fase di compilazione, quindi non ha senso consentire loro di essere accessibili da "codice" che non ha come destinazione l'applicazione o la libreria corrente e può essere utilizzato in altri luoghi.


0

Ho dimenticato di aggiungere il "nome" del mio "pacchetto" all'inizio della mia classe java. Controlla se il tuo è effettivamente aggiunto.


-2

Risolvo il mio problema:

il pacchetto R non esiste

.

Vai al AndroidManifest.xmlfile e modificato il minSDKVersion="17"da 19


Mi permetto di dissentire. Non dovresti avere minSDKVersion nel file AndroidManifest.xml secondo gli standard attuali. Se lo hai, rimuovilo dal file AndroidManifest.xml è un codice ridondante. MinSDKVersion e targetSdkVersion dovrebbero essere definiti solo nel file build.gradle.
Ajay B
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.