Search code examples
androidpythonandroid-ndkadtndk-gdb

Android Application ABI and Native Debugging


I was getting 'Unable to detect application ABI's' when trying to natively debug in Eclipse. I didn't get anywhere so I tried ndk-gdb (ndk-gdb.py as I am on Windows).

But using ndk-gdb gives me :

ERROR: The device does not support the application's targetted CPU ABIs!

       Device supports:  armeabi-v7a armeabi

       Package supports: .

This happens because the ndk-gdb.py function :

def get_build_var(var):
    global GNUMAKE_CMD, GNUMAKE_FLAGS, NDK, PROJECT
    text = subprocess.check_output([GNUMAKE_CMD,
                                  '--no-print-dir',
                                  '-f',
                                  NDK+'/build/core/build-local.mk',
                                  '-C',
                                  PROJECT,
                                  'DUMP_'+var] + GNUMAKE_FLAGS
                                  )                                  

    # replace('\r', '') due to Windows crlf (\r\n)
    #  ...universal_newlines=True causes bytes to be returned
    #     rather than a str
    return text.decode('ascii').replace('\r', '').splitlines()[0]

returns a '.' when asked for APP_ABI. I have dummped the subprocess make call parameters and when I execute the make call from the command line I get the correct response of 'armeabi-v7a armeabi'

I don't think this is to do with python as the error is so similar to my Eclipse only problem.


Solution

  • Try to run ndk-build DUMP_APP_ABI and make sure the output is clean. Check you Application.mk for weird encoding and/or CRLFs.

    All use of $(info …) or $(__ndk_info), etc. should be disabled for this target.