2014-04-17 18 views
7

Na mojej platformie Windows zainstalowana jest najnowsza wersja pakietu ADT (20140321) i ndk (r9d). Instalacja jest tak czysta, jak to tylko możliwe. Zmienne środowiskowe NDK_ROOT, PATH itp. Są poprawnie zdefiniowane.Eclipse ADT - nierozwiązana integracja jni.h

Aplikacja, nad którą pracuję, ma trochę natywnego kodu C++. Kod buduje grzywnę zarówno poza środowiskiem Eclipse, jak i Eclipse.

Problem polega jednak na tym, że redaktor skarży się, że jni.h jest nierozstrzygniętym włączeniem.

Projekt -> Właściwości -> C/C++ Ogólne -> ŚcieżkiAndSymboly zawiera katalogi, a jednym z katalogów jest C: \ adt \ ndk \ platforms \ android-19 \ arch-arm \ usr \ include. Zweryfikowałem, że jni.h jest obecny w tym katalogu.

Sprawdziłem już wszystkie inne wiadomości na tym forum, ale nie mogłem znaleźć żadnych konkretnych kroków. Doceń twoje wskazówki. Pozdrowienia.

Odpowiedz

1

Miałem ten sam problem kilka dni temu. Znalazłem poprawkę w innym pytaniu tutaj w stackoverflow, ale teraz nie mogę znaleźć linku.

W Eclipse: kliknij prawym przyciskiem myszy na projekcie> Właściwości> C/C++ Ogólne> Analiza kodu> Uruchomienie i wyłączenie obu opcji ("Uruchom z kompilacją" i "Uruchom w trakcie pisania").

Wygląda na to, że występuje problem z CDT i Indexerem, dzięki czemu ukrywasz problem. Redaktor nadal będzie narzekał, ale teraz powinieneś być w stanie uruchomić i zdebugować aplikację.

1

Rozwiązałem to przez adt-bundle-windows-x86_64-20140321:

  1. Brak jakichkolwiek zmiennych środowiskowych jest ustawiony, tylko wskazał NDK lokalizację pod Preferencje> Android> NDK.
  2. Utworzono nowy, czysty obszar roboczy Eclipse.
  3. Usunięto z mojego projektu z kodu C++ kolejnych plików/folderów:

.settings
.classpath
.cproject
.project
project.properties

  1. Eclipse> Nowy> Inne> Android> Android Project z istniejącego kodu> następnie wskaż folder z projektem, pozwól Eclipse go wykryć, zaznacz "Skopiuj projekt do przestrzeni roboczej" i kliknij Ok/Dalej, cokolwiek.
  2. Czysty projekt.
  3. Kliknij prawym przyciskiem myszy projekt> Narzędzia Android> Dodaj natywną obsługę
  4. Przebuduj, ewentualnie ponownie uruchom obszar roboczy.

Również ten problem rozwiązany z Eclipse 4.3 poprzednio zignorował system kompilacji i flagi zdefiniowane przez użytkownika. Teraz składanie makr w zależności od tych flag itp. Działa dobrze.

Jeśli bardziej ogólnikowy - wtyczka NDK może poprawnie zdefiniować dla Ciebie prawe obejmuje i wszystko inne wymagane do poprawnego działania, ale musisz wyczyścić projekt ze złamanej bzdury.

25

Podczas aktualizacji do Eclipse Kepler napotkałem podobny problem z działającym projektem z kodem opartym na Androidzie NDK. Obserwowałem podobne rzeczy: pliki nagłówkowe byłyby poprawnie wyświetlane w projekcie "zawiera", rzeczywista kompilacja (przez ndk-build) działała bez zarzutu, ale edytor Eclipse nie mógł zlokalizować żadnych nagłówków w standardowych katalogach systemowych (wszystkie nagłówki z < > nawiasy).

Próbowałem wiele różnych poprawek, w tym przełączanie zestawów narzędzi, odbudowywanie indeksów itp. Bez powodzenia.

W końcu usunąłem charakter C w całości z projektu i dodałem go ponownie za pomocą menu "Narzędzia Android" w Eclipse.

Zdejmowanie C naturę:

Jedynym sposobem udało mi się znaleźć wiarygodnego usunął C naturę od projektu było edytując ręcznie Eclipse .project pliku projektu.

  1. Zamknij projekt Eclipse (np. Zamykając Eclipse).

  2. Otwórz plik .project w edytorze tekstów lub xml. Będą co najmniej 2 <buildCommand> węzły, które należy usunąć. Usuń węzeł <buildCommand> o nazwie org.eclipse.cdt.managedbuilder.core.genmakebuilder i wszystkich jego elementach podrzędnych oraz węźle <buildCommand> o nazwie org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder i jego elementach podrzędnych. Wreszcie, usuń wiersze:

    <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. całkowicie usunąć plik .cproject.

Dodawanie powrotem rodzimej przyrody Android

Reopen projektu w Eclipse. Następnie kliknij projekt prawym przyciskiem myszy w Eksploratorze projektu, a następnie w menu kontekstowym "Narzędzia Android" wybierz "Dodaj wsparcie natywne ...".

Android Tools -> Add Native Support...

Patrząc na zmiany dokonane w plikach .project i .cproject przed i po tej zmianie, wydaje się, że to przede wszystkim dał nowe numery wersji do narzędzi Android NDK. W każdym razie rozwiązało to problem dla mnie.

+1

Zrobiłeś lewę. Sprowadzałem niektóre projekty JNI do luny i miałem nierozwiązane jni.h i inne problemy. To zresetowało projekt do mojego środowiska. Dziękuję Ci. – ervinbosenbacher

+1

To działało. Próbowałem to naprawić podobny błąd dla neonu Eclipse i zadziałało. Utknąłem przez wiele dni, próbując naprawić wiele błędów, które wyrosły z tego błędu. Głównie związane z błędami strony właściwości. Wielkie dzięki. – Harish

3

po dodaniu natywnego wsparcia, kliknij prawym przyciskiem myszy projekt, dodaj uwzględnienia w c/C++ ogólne -> ścieżki i symbole >> zawiera, na przykład dodaj uwzględnij jako% NDK_HOME% \ platforms \ android-19 \ arch-arm \ usr \ include

Powiązane problemy