Android NDK build, Method could not be resolved
Asked Answered
F

3

9

I have an Android project with native code. I'm able to build native code from command line by calling ndk-build command with no errors or warnings. But when I open it in ADT it shows the following error.

enter image description here

Error message: Method CallStaticIntMethod could not be resolved. There are many files with similar errors in the project.

I double checked configuration and here is what I have. Android build, tool chain and includes are properly configured (see pictures below)

enter image description here

enter image description here

enter image description here

Required includes are also visible in the Project Explorer and they are valid (not empty and point to correct header files).

enter image description here

But when I Clean the project and Build it, the errors are still there. Any ideas on how to solve this?

Configuration: ADT 22.6.2, NDK r9d (64-bit), OSX 10.9.2

Fed answered 18/4, 2014 at 13:59 Comment(0)
F
11

After some struggling with preferences, I finally found a solution. This is a bug in NDK plugin which was reported to AOSP but not yet fixed. A past of the answer is described in comment #50. Here is the sequence which worked our for me.

  1. Open Project Properties -> C/C++ Build -> Tool Chan Editor
  2. In the section Used Tools replace Android GCC Compiler with GCC C Compiler. If section is empty, just add GCC C Compiler entry in there. enter image description here
  3. Open Project Properties -> C/C++ General -> Paths and Symbols and add directories, where your h-files to be included are located. Use Move up button to add a folder with your local includes (/AudioPlayer/jni in my case) to the first place. Then add platform and toolchains includes. Built-in includes should stay at the very bottom. enter image description here In my case the full paths to the toolchain includes were like below. These are built-in paths of original Android GCC Compiler toolchain, which we have replaced at step 2.

    /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. Press OK button, clean and re-build the project. All errors must go away. If they stay, try to remove them from Problems view and re-build project once again.

Update: I have found another place, where you can add paths to include files. However it appears to be Eclipse version dependent. Project Settings -> C/C++ General -> Processor Include Paths, Macros etc. -> CDT User Settings Entries -> Add. After I added the paths listed above, there is no compilation issues anymore. Development is fun again.

Fed answered 18/4, 2014 at 17:20 Comment(2)
I did not have to do steps 1 and 2, so maybe not needed. Else this answer worked well for me. Thanks.Lochia
Hi, i have tried this solution. My all errors in C code gone but the project name still shows error symbol and due to this i am unable to run the project. I don't know exactly whats going wrong. Please suggest furtherLatricelatricia
H
0

Yes, its caused by the IDE not knowing where all of your headers and any libs you linking again are. The errors are generated by the IDE's autocomplete/bug system. You can either fix your includes within eclipse or remove them as errors in the preferences. 

Happenstance answered 18/4, 2014 at 15:21 Comment(0)
O
-1

I had a similar error and solved it by going to project->properties->discovery options and changing the discovery profile from managed build system to GCC, after changing to GCC C Complier from Android GCC Compiler and updating the include directories.

Ozell answered 28/9, 2014 at 0:25 Comment(2)
How is this answer any different from beworker's answer 6 months earlier? Also see "me too" answers in What is a “protected” question?Tegucigalpa
this is a different solution. beworker's answer didn't work for me. after I tried his solution, I fixed the problem by changing the discovery profile under discovery options. I'm not sure whether beworker's answer had anything to do with fixing the problem for me, I just thought I would mention that I tried his solution first just in case both steps were necessary.Ozell

© 2022 - 2024 — McMap. All rights reserved.