2012-10-02 15 views
38

Sto provando a utilizzare IntelliJ IDEA per lavorare su un'app Android con un collega che giura da esso, ma non sono in grado di costruire uno qualsiasi dei progetti Android che mi invia perché ogni volta che provo una build viene visualizzato un errore che dice package R does not exist.IntelliJ IDEA - Impossibile creare nulla, ottenere sempre "il pacchetto R non esiste"

Ho provato tutto quello che riesco a pensare. Esempi e altre cose da notare sono:

  • Rendere sicuro di avere una versione del file local.properties punta alla radice della mia cartella SDK Android.

  • Fiddling con varie impostazioni nella finestra di dialogo della struttura del progetto (non le elenco tutte).

  • Il progetto su cui sto lavorando ha due progetti di libreria con anche la classe R e funzionano bene.

  • L'intellisense all'interno dell'IDE riconosce la classe R e fornisce le cose che mi aspetto.

Qualsiasi aiuto sarebbe molto apprezzato. Sento che mi manca qualcosa di base.

+0

provato un qualche tipo di aggiornamento/pulito? Questo di solito risolve questi problemi R (che sono comuni con i progetti importati) – keyser

+0

Provato e ri-provato, purtroppo non aiuta. Ho il sospetto che ci sia qualcosa con i percorsi di costruzione o qualcosa del genere - sa che cos'è il pacchetto R quando sto codificando, ma non quando costruisce ... –

+2

Si potrebbe voler controllare il percorso di compilazione del progetto (ed eventualmente il _ Opzione "Compila risorse IDE" _). – keyser

risposta

34

Sono zecca nuovo a IntelliJ quindi mi scuso se questo non funziona per voi. Stavo vivendo lo stesso problema e la soluzione era aggiungere AndroidFacet al tuo progetto.

(io sono su un Mac, quindi le indicazioni qui può essere un po 'fuori, e ci sono modi probabilmente migliori per trovare questa finestra, se è così fatemi sapere!)

  1. Fare clic destro del progetto e andare verso il basso a Open Module Settings (sembra F4 funziona anche)
  2. Selezionare Facets nella colonna più a sinistra
  3. Fare clic sul pulsante +
  4. Aggiungi un AndroidFacet al progetto, e voilà!
  5. Potrebbe essere necessario importare i R s ora, che potrebbe essere un dolore enorme ... quindi spero che qualcuno possa carillon in un modo semplice per l'auto-import

Spero che questo aiuti qualcuno!

+0

Non avrò bisogno di provare questo come sono riuscito a aggirare questo alla fine da un percorso diverso (vedi i miei commenti sopra), ma ups per voi per una risposta dettagliata, utile –

+0

ha lavorato per me! Anche se sembra che l'aspetto che dovevo aggiungere avesse lo stesso nome del progetto stesso. (WTF è una sfaccettatura?) – user426364

+1

Sono quasi certo che un 'facet' in IntelliJ è come un aspetto della tua applicazione che aggiunge requisiti/complessità al progetto. Quindi, per esempio, stiamo scrivendo un'applicazione Java con il lato "leggero" che si tratta di un progetto Android Java. Immagino che lo usano per un sacco di cose, ma francamente lo uso solo per Android. – xbakesx

1

Prova Crea nuovo progetto e selezionare "Crea progetto da fonti esistenti"

+0

Capisco quello che stai suggerendo, ma questo sembra un po 'un poliziotto. Preferirei capire quali sono le impostazioni che causano il problema, soprattutto perché sono presenti tutti i file e le cartelle .iml e .idea esistenti. –

13

Se ci si imbatte in questo con un pacchetto che è stato creato prima è necessario "Ricostruire". Build-> Ricostruisci progetto. L'eliminazione di gen non lo fa poiché IDEA salva l'effettiva R generata da qualche altra parte.

+0

Questo ha funzionato per me. Grazie. – gnoejh

4

Ho iniziato a giocare con IntelliJ da quando ho avuto problemi con il nuovo Android Studio e volevo provare qualcosa che fosse un po 'più stabile (non l'ho mai usato prima). Ho finito per ottenere il temuto errore "pacchetto R non esiste". Nella mia esperienza, questo è solitamente qualcosa incasinato in un file XML. Per me, il problema era in realtà con AndroidManifest.file xml per un modulo di libreria Android che avevo creato per ActionBarSherlock. Per qualsiasi motivo, quando ha creato il file AndroidManifest.xml che non si preoccupò di utilizzare il file AndroidManifest.xml che è venuto con ABS ed ha messo il seguente in:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="com.example.ActionBarSherlockLibrary_4_3_1" 
      android:versionCode="1" 
      android:versionName="1.0"> 

    <application 
     android:label="@string/app_name" 
     android:icon="@drawable/ic_launcher"> 
     <activity 
      android:name="ACTIVITY_ENTRY_NAME" 
      android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 
       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 

Quando ho creato questo modulo ho scelto File > Nuovo modulo ... Ho quindi selezionato il modulo libreria sotto la sezione Android e per la radice del contenuto ho navigato nella posizione dei file per ABS (altri campi auto compilati correttamente e non li ho modificati). Ho quindi fatto clic su Finisci e mi è stato richiesto se volevo conservare il file locale o il file di memoria per project.properties. Ho scelto di mantenere il file locale e dopo non mi ha richiesto nessun altro.

Non ho idea del motivo per cui ha incasinato il file AndroidManifest.xml (forse quello che ho fatto sopra era sbagliato ... ???), ma per risolverlo ho appena copiato il file AndroidManifest.xml originale che avevo scaricato con la libreria e ha sostituito il file AndroidManifest.xml incasinato. Successivamente ho creato Build> Rebuild Project e ha risolto gli errori "package R does not exist".

Un altro pensiero, @xbakesx menziona le impostazioni di Facets e per tutti i moduli che si stanno utilizzando come librerie, è necessario assicurarsi che "Modulo libreria" sia selezionato in Facets per quel modulo. All'inizio ho avuto alcuni problemi quando stavo cercando di capire come configurare le librerie in IntelliJ/Android Studio (in realtà ho usato solo Eclipse).

2

Nel mio caso ho dovuto cancellare la cache del compilatore intellj. sulla mia macchina Windows è stato somelike questo:

%USERPROFILE%\.IdeaIC12\system\compile-server\<my project> 
25

Un'altra possibile soluzione per quelli elencati qui è quello di verificare che il nome del pacchetto nella vostra AndroidManifest.xml corrisponde a quello del vostro pacchetto attuale:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.yourpackagename" >

Il mio pacchetto stava funzionando bene fino a quando ho refactored il nome del pacchetto, tutto refactored tranne il nome del pacchetto nel file manifest (vedi sopra) che ha causato l'errore "Il pacchetto R non esiste".

+0

commetti lo stesso errore ... Grazie mille –

+0

mi ha salvato la giornata !! – penduDev

+0

Grazie. Ho trovato questo, ero disperato cercando di capire questo fuori – maraujop

4

Ho appena riavviato IntelliJ e ha risolto magicamente. Provalo prima.

3

Aveva lo stesso problema: il problema era che il file Manifest non aveva l'impostazione Attività predefinita correttamente.

+0

Sì necessario per cambiare anche il nome del pacchetto nel manifest. Ho pensato che cambiare il nome del pacchetto nel file gradle fosse sufficiente. Grazie mille. –

1

Aggiungendo il mio $ 0.02 nel caso in cui qualcun altro abbia il problema che ho fatto. Nel mio caso avevo generato l'applicazione "Hello world" usando IntelliJ e ho dimenticato di cambiare il nome del pacchetto da "com.example". Ho quindi utilizzato IntelliJ per ridefinire il nome del pacchetto. Ciò ha causato l'avvio dell'errore.

Così ho fatto una ricerca globale per "com.example" ed è stata trovata nel file AndroidManifest come menzionato da altri. Tuttavia, la modifica non ha risolto il problema. "com.example" è stato trovato anche in "workspace.xml" nella directory ".idea". Ho cambiato tutte le occorrenze, fatto una ricostruzione e poi ha ricominciato a funzionare!

Questo sembra un bug in IntelliJ.

5

Nel mio caso, ho aggiunto alcune classi da un altro progetto e ho dovuto aggiungere l'importazione al pacchetto R dal mio progetto attuale:

import com.youcompanyname.yourprojectname.R; 
+0

Non credo sia corretto. – RyanDawkins

+1

* "ha aggiunto alcune classi da un altro progetto" * Si è appena verificato che ero in questa situazione e questo ha funzionato per me. **:) ** –

3

A tutte le persone senza speranza che hanno raggiunto fino a questo punto lungo la risposte: sento il tuo dolore.Ho passato un'ora a non fare nulla se non a provare tutte quelle cose di cui sopra e le proposte di altre fonti. Ho controllato due volte tutte le mie risorse xml, ho pulito le cache, ho ricostruito una dozzina di volte, ho riavviato anche l'intera macchina. Qui è ciò che in realtà ha funzionato per me:

Sotto 'Build Varianti' (in basso a sinistra), ho selezionato un diverso la costruzione Variant (nel mio caso il rilascio invece di debug) per il bersaglio che ha avuto il mancante Problema R Risolto.

1

In Android Studio, il mio problema è stato quando ho copiato una classe da utilizzare come modello per creare un'altra classe simile, richiede di importare automaticamente un sacco di cose, la maggior parte delle quali non era correlata al nuovo classe, così dissi cancella. con esso ha lasciato fuori import com.your.packagename.R; così R non era effettivamente importati nel file che stavo cercando di usarlo in.

può essere fissato con un alt-entrare quando si fa clic su R (dovrebbe essere evidenziato in rosso)

3

Ho refactored il nome di pacchetto e intellij non l'ha aggiornato nel manifest.

Quindi, se hai refactored il nomepacchetto, vai al manifest e aggiorna l'attributo "pacchetto" nella radice del file xml e salvalo e ricostruilo. Se si verificano errori, allora è probabilmente un packagename sbagliato nell'importazione (almeno questo è stato il mio caso) così appena risolverli

speranza che questo aiuta chiunque

Problemi correlati