尝试调试NDK时无法检测到应用程序ABI。

22

我正在尝试使用Eclipse中的ADT 20.0.3调试一个带有本地代码的Android应用程序,但是它给了我这个错误:

[2012-10-04 12:09:12 - ndk_android] Unknown Application ABI: 
[2012-10-04 12:09:12 - ndk_android] 
[2012-10-04 12:09:12 - ndk_android] Unable to detect application ABI's

我的jni文件已经成功构建,我可以运行带有本地代码的应用程序。

我的构建文件Application.mk如下所示:

APP_OPTIM        := debug
APP_ABI := armeabi armeabi-v7a
APP_STL := gnustl_static

LOCAL_LDLIBS := $(ANDROID_NDK)/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/libgnustl_static.a

有人知道这个错误的原因吗?有人尝试过在ADT 20中使用本地调试吗?

我正在遵循这里的指南:http://tools.android.com/recent/usingthendkplugin

编辑:

在清理和删除临时文件/文件夹/设置后,我仍然遇到了相同的错误。 然后我安装了一个干净的Eclipse。 安装CDT,然后安装ADT,似乎解决了这个问题。 我认为问题出在Sequoyah或Eclipse中的其他插件/设置上。

这个问题已经解决了,但现在我又遇到了另一个问题。 断点不起作用,但我会把它放在另一个问题中讨论。


是的,Sequoyah与ADT 2.x不兼容。 - Alex Cohn
5个回答

11

转到首选项 -> Android -> NDK。如果您设置了正确的路径,它将起作用。 这种方式对我有效。


我在“首选项-Android”下找不到NDK。我的情况有问题吗?请帮忙。 - Shirish Herwade

3

我认为问题出在Sequoyah或Eclipse中的其他插件/设置上。我安装了一个干净的Eclipse。安装了CDT,然后是ADT,这似乎解决了这个问题。


1

尝试清理OBJ和libs目录,并仅构建一个ABI。例如,在NDK_DEBUG=1旁边添加APP_ABI=armeabi


0

我通过在Application.mk文件中添加APP_PLATFORM条目并确保清单文件中提到的最小sdk版本相同来解决了这个问题。

例如,在我的情况下, 在Application.mk文件中添加APP_PLATFORM:=21 在清单文件中添加minSdkVersion 21。

此外,您需要在jni函数定义处而不是java端的jni本地函数声明处设置断点。

希望能对您有所帮助。


0

我在使用NDK r16b时遇到了这个错误,但当我切换到r10e时就解决了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接