2014-04-18 15 views
9

Ich habe ein Android-Projekt mit nativem Code. Ich bin in der Lage, nativen Code von der Befehlszeile aus zu erstellen, indem ich ndk-build Befehl ohne Fehler oder Warnungen aufrufen. Aber wenn ich es in ADT öffne, zeigt es den folgenden Fehler an.Android NDK Build, Methode konnte nicht aufgelöst werden

enter image description here

Fehlermeldung: Method CallStaticIntMethod could not be resolved. Es gibt viele Dateien mit ähnlichen Fehlern im Projekt ist.

Ich überprüfte Konfiguration und hier ist was ich habe. Android bauen, Werkzeugkette und umfasst richtig konfiguriert (siehe Bilder unten)

enter image description here

enter image description here

enter image description here

Erforderlich umfasst sind auch sichtbar im Projekt-Explorer und sie gültig sind (nicht leer und zeigen Sie auf Header-Dateien korrigieren).

enter image description here

Aber wenn ich das Projekt und Build es Clean, sind die Fehler immer noch da. Irgendwelche Ideen, wie man das löst?

Konfiguration: ADT 22.6.2, NDK R9D (64-Bit), OSX 10.9.2

Antwort

11

Nachdem einige mit Vorlieben kämpften, fand ich endlich eine Lösung. Dies ist ein bug im NDK-Plugin, das an AOSP gemeldet wurde, aber noch nicht behoben wurde. Eine Vergangenheit der Antwort wird in Kommentar # 50 beschrieben. Hier ist die Reihenfolge, die für uns funktioniert hat.

  1. öffnen Projekteigenschaften ->C/C++ Build- ->Werkzeug Chan Editor
  2. Im Abschnitt Used ToolsAndroid GCC Compiler mit GCC C Compiler ersetzen. Wenn der Abschnitt leer ist, fügen Sie einfach GCC C Compiler Eintrag dort hinzu. enter image description here
  3. öffnen Projekteigenschaften ->C/C++ Allgemeine ->Pfade und Symbole und fügen Sie Verzeichnisse, in denen Sie Ihre h-Dateien aufgenommen werden befinden. Verwenden Sie Nach oben Schaltfläche, um einen Ordner mit Ihren lokalen Includes (/AudioPlayer/jni in meinem Fall) an die erste Stelle hinzuzufügen. Dann fügen Sie Plattform und Toolchains hinzu. Built-in-Includes sollten ganz unten bleiben. enter image description here In meinem Fall waren die vollständigen Pfade zur Toolchain wie folgt. Dies sind integrierte Pfade der ursprünglichen Android GCC Compiler Toolchain, die wir in Schritt 2 ersetzt haben.

    /Tools/android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.6/include 
    /Tools/android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.6/include-fixed 
    
  4. Drücken OK Taste, sauber und neu bauen das Projekt. Alle Fehler müssen verschwinden. Wenn sie bleiben, versuchen Sie, sie aus Probleme Projekt zu entfernen und erneut zu erstellen.

Update: Ich habe einen anderen Platz zu finden, wo Sie Pfade hinzufügen können Dateien enthalten. Es scheint jedoch abhängig von der Eclipse-Version zu sein. Projekteinstellungen -> C/C++ Allgemein -> Prozessor Include Pfade, Makros usw. -> CDT Benutzereinstellungen Einträge -> Hinzufügen. Nachdem ich die oben aufgeführten Pfade hinzugefügt habe, gibt es keine Kompilierungsprobleme mehr. Entwicklung macht wieder Spaß.

+1

Ich musste die Schritte 1 und 2 nicht tun, also vielleicht nicht benötigt. Sonst hat diese Antwort gut für mich funktioniert. Vielen Dank. – haffax

+0

Hallo, ich habe diese Lösung ausprobiert. Meine alle Fehler im C-Code sind verschwunden, aber der Projektname zeigt immer noch ein Fehlersymbol und dadurch kann ich das Projekt nicht ausführen. Ich weiß nicht genau, was falsch läuft. Bitte weiter empfehlen –

0

Ja, es ist von der IDE verursacht nicht zu wissen, wo alle Ihre Header und alle Libs Sie wieder verknüpfen sind. Die Fehler werden vom Autocomplete/Bug-System der IDE generiert. Sie können Ihre Includes entweder in Eclipse korrigieren oder sie als Fehler in den Einstellungen entfernen.

-1

Ich hatte einen ähnlichen Fehler und löste es, indem ich auf Projekt-> Eigenschaften-> Erkennungsoptionen und ändern Sie das Erkennungsprofil von verwalteten Build-System zu GCC, nach dem Wechsel zu GCC C Complier von Android GCC Compiler und Aktualisieren der Include-Verzeichnisse .

+0

Wie unterscheidet sich diese Antwort von beworners Antwort vor 6 Monaten? Siehe auch "Ich auch" Antworten in [Was ist eine "geschützte" Frage?] (Http://meta.stackexchange.com/q/52764) – jww

+0

Dies ist eine andere Lösung. Beworners Antwort funktionierte nicht für mich. Nachdem ich seine Lösung versucht habe, habe ich das Problem behoben, indem ich das Erkennungsprofil unter den Erkennungsoptionen geändert habe. Ich bin mir nicht sicher, ob Beworners Antwort etwas mit der Behebung des Problems für mich zu tun hatte, ich dachte nur, ich würde erwähnen, dass ich seine Lösung zuerst probierte, nur für den Fall, dass beide Schritte notwendig waren. –

Verwandte Themen