2014-04-17 6 views
7

Sulla mia piattaforma Windows, ho installato l'ultima versione di bundle adt (20140321) e ndk (r9d). L'installazione è pulita come non mai. Le variabili di ambiente NDK_ROOT, PATH, ecc. Sono tutte definite correttamente.Eclipse ADT - Inclusione non risolta jni.h

L'app su cui sto lavorando ha un codice nativo C++. Il codice si adatta bene sia all'esterno di Eclipse che all'interno di Eclipse.

Il problema, tuttavia, è che l'editor si lamenta che jni.h è un'inclusione non risolta.

Progetto -> Proprietà -> C/C++ Generale -> Paths AndSymbols mostra include le directory e una delle directory è C: \ adt \ ndk \ piattaforme \ android-19 \ arch-arm \ usr \ include. Ho verificato che jni.h è presente in questa directory.

Ho già controllato tutti gli altri messaggi su questo forum ma non ho trovato alcuna procedura concreta. Apprezzo la tua guida. Saluti.

risposta

1

Ho avuto lo stesso problema qualche giorno fa. Ho trovato una soluzione in un'altra domanda qui in StackOverflow, ma ora non riesco a trovare il collegamento.

In Eclipse: fare clic con il tasto destro del mouse sul progetto> Proprietà> C/C++ Generale> Analisi del codice> Avviare e disabilitare entrambe le opzioni ("Esegui con build" e "Esegui durante la digitazione").

Sembra che ci sia un problema con CDT e l'indicizzatore, facendo questo si nasconde il problema. L'editor continuerà a lamentarsi, ma ora dovresti essere in grado di eseguire e eseguire il debug dell'applicazione.

1

ho risolto questo per ADT-fascio-windows-x86_64-20140321:

  1. Non tutte le variabili di ambiente è impostata, appena segnalato posizione NDK in Preferenze> Android> NDK.
  2. Ho creato un nuovo spazio di lavoro Eclipse pulito.
  3. eliminati dal mio progetto con il codice successivo file/cartelle C++:

.settings
.classpath
.cproject
.project
project.properties

  1. Eclipse> Nuovo> Altro> Android> Progetto Android da codice esistente> quindi posiziona la cartella con il tuo progetto, lascia che Eclipse lo rilevi, seleziona "Copia progetto nello spazio di lavoro" e fai clic su Ok/Avanti, qualunque sia.
  2. Pulire il progetto.
  3. Fare clic con il tasto destro sul progetto> Strumenti Android> Aggiungi supporto nativo
  4. Ricostruisci, riavvia eventualmente lo spazio di lavoro.

Anche questo problema risolto con Eclipse 4.3 sistema di generazione precedentemente ignorato e flag di compilazione definiti dall'utente. Adesso la piegatura delle macro dipende da questi flag ecc. Funziona bene.

Se il plug-in NDK più generale è in grado di definire correttamente per l'utente giusto e qualsiasi altra cosa necessaria per funzionare correttamente, ma è necessario pulire il progetto da schifezze rotte.

25

Mi sono imbattuto in un problema simile con un progetto di lavoro con codice basato su NDK Android dopo l'aggiornamento a Eclipse Kepler. Ho osservato cose simili: i file di intestazione sarebbero stati correttamente elencati in "include" nel progetto, la build effettiva (via ndk-build) funzionava bene, ma l'editor di Eclipse non è riuscito a individuare alcuna intestazione nelle directory di sistema standard (tutte le intestazioni con < > parentesi).

Ho provato molte correzioni diverse, incluso il cambio degli strumenti, la ricostruzione degli indici, ecc. Senza successo.

Infine, ho rimosso completamente la natura C dal progetto e l'ho riattivata tramite il menu "Strumenti Android" in Eclipse.

Rimozione della natura C:

L'unico modo che ho trovato per rimuovere in modo affidabile la natura C dal progetto era di file di editing mano di Eclipse .project per il progetto.

  1. Chiudere il progetto Eclipse (ad es. Chiudendo Eclipse).

  2. Aprire il file .project in un editor di testo o xml. Ci saranno almeno 2 <buildCommand> nodi che devono essere rimossi. Rimuovere il nodo <buildCommand> con nome org.eclipse.cdt.managedbuilder.core.genmakebuilder e tutti i relativi figli e il nodo <buildCommand> con nome org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder e i relativi figli. Infine, rimuovere le righe:

    <nature>org.eclipse.cdt.core.cnature</nature> <nature>org.eclipse.cdt.core.ccnature</nature> <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature> <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>

  3. Rimuovere completamente il file .cproject.

L'aggiunta di nuovo la natura dei nativi Android

riaprire il progetto in Eclipse. Quindi fai clic con il pulsante destro del mouse sul progetto in Esplora progetti e dal menu contestuale "Strumenti Android", seleziona "Aggiungi supporto nativo ...".

Android Tools -> Add Native Support...

Guardando le modifiche apportate nei file .project e .cproject prima e dopo questo cambiamento, sembra che in primo luogo ha dato nuove numeri di versione per gli strumenti NDK Android. In ogni caso, ha risolto il problema per me.

+1

Il trucco. Stavo importando alcuni progetti JNI in luna e avevo problemi irrisolti su jni.h e altri. Questo ha resettato il progetto nel mio ambiente. Grazie. – ervinbosenbacher

+1

Questo ha funzionato. Ho provato questo per correggere un errore simile per il neon di Eclipse e ha funzionato. Sono rimasto bloccato per giorni cercando di correggere molti errori che sono emersi da questo errore. Principalmente errori di pagina di proprietà. Molte grazie. – Harish

3

dopo aver aggiunto il supporto nativo, fare clic con il pulsante destro del mouse, aggiungere include in c/C++ generale -> percorsi e simboli >> include, ad esempio aggiungi include come% NDK_HOME% \ piattaforme \ android-19 \ arch-arm \ usr \ include