【问题标题】:Debugging native code in android under eclipse fails在eclipse下调试android中的原生代码失败
【发布时间】:2013-06-09 15:07:12
【问题描述】:

我正在尝试使用Debug As->Android Native Application 选项在“csipsimple”android 应用程序中调试本机代码。我使用this 教程来做到这一点。我不断收到这些错误:

[2013-06-09 17:24:24 - SipHome] Unknown Application ABI: 
[2013-06-09 17:24:24 - SipHome] Android
[2013-06-09 17:24:24 - SipHome] Unknown Application ABI: 
[2013-06-09 17:24:24 - SipHome] NDK:
[2013-06-09 17:24:24 - SipHome] Unknown Application ABI: 
[2013-06-09 17:24:24 - SipHome] Uses
[2013-06-09 17:24:24 - SipHome] Unknown Application ABI: 
[2013-06-09 17:24:24 - SipHome] local
[2013-06-09 17:24:24 - SipHome] Unknown Application ABI: 
[2013-06-09 17:24:24 - SipHome] settings
[2013-06-09 17:24:24 - SipHome] Unknown Application ABI: 
[2013-06-09 17:24:24 - SipHome] 
[2013-06-09 17:24:24 - SipHome] Unknown Application ABI: 
[2013-06-09 17:24:24 - SipHome] 
[2013-06-09 17:24:24 - SipHome] Unknown Application ABI: 
[2013-06-09 17:24:24 - SipHome] 
[2013-06-09 17:24:24 - SipHome] Unknown Application ABI: 
[2013-06-09 17:24:24 - SipHome] 
armeabi
[2013-06-09 17:24:24 - SipHome] Unable to detect application ABI's

我试过了

Unable to detect application ABI's when trying to debug NDK(不相关,我没用红杉),

http://www.cocos2d-x.org/boards/6/topics/24216(没用)

https://groups.google.com/forum/?fromgroups#!topic/android-ndk/icsQtRy1FZQ(只神秘地工作过一次)

http://www.mjbshaw.com/2012/11/android-ndk-eclipse-fixing-unknown.html(不是问题)

http://en.it-usenet.org/thread/12874/17301/(没用)

我在 Ubuntu 12.10 下使用带有 Android NDK r8e 的 ADT 包 v22 (eclipse 4.2.1)。

csipsimple 使用 jni 和 swig 调用原生代码。

我很绝望,救救我!

【问题讨论】:

  • Eclipse > Preferences > Android > NDK 有正确的路径吗?
  • 我们也看到了这个问题,但只是在迁移到 NDK r9 之后。

标签: android eclipse android-ndk ubuntu-12.10 csip-simple


【解决方案1】:

对于 NDK R9(也适用于其他人,但行号可能不同):

${NDK}/build/core/add-application.mk
line 138

在行首添加“#”。

# $(call __ndk_info,WARNING: APP_PLATFORM $(APP_PLATFORM) is larger than \
    android:minSdkVersion $(APP_MIN_PLATFORM_LEVEL) in $(APP_MANIFEST))

一个字符,30 秒修复……去调试原生代码。

【讨论】:

  • 这让应用程序启动,但它似乎仍然无法调试(在 C++ 代码中命中断点)。我们得到如下输出:“run-as: Package 'com.our.app' is unknown 验证应用程序是否使用 NDK_DEBUG=1 构建”
  • 解决方案有效,但请阅读上面的评论,由 eodabash.. 应用程序没有得到调试..
  • 命中断点与上述 APP_PLATFORM 警告无关。可能无法命中断点的原因有很多。尝试使用 Android 工具从命令行手动构建。例如:1) "ndk-build NDK_DEBUG=1" ... 2) "ant debug" ... 和 3) ndk-gdb --launch=com.your.app.activity ... 启动应用并验证可以设置断点。如果 ndk-gdb 无法调试 c++,那么 Eclipse 也不会。此外,有时先将应用程序作为 Java 应用程序运行和调试,然后再次运行以进行本机调试,有时会有所帮助。
  • 在 Eclipse 中...确保在项目的 C/C++ 设置中为构建命令添加了 NDK_DEBUG=1 选项。
【解决方案2】:

在让它工作,然后重新创建我的应用程序以查看什么工作后,我发现了以下内容:

在 AndroidManifest.xml 中,您必须设置 min/target SDK 版本以匹配您的手机。

[jc@jc-u13:anotherJniDebugTest]$ adb shell getprop|grep build.version
[ro.build.version.codename]: [REL]
[ro.build.version.incremental]: [5c6c6b0b1b]
[ro.build.version.release]: [4.3.1]
**[ro.build.version.sdk]: [18]**

因此,我的清单版本必须是 18。如果我将版本设置为 17,我会收到上述错误

【讨论】:

    【解决方案3】:

    您是否使用信息、警告等功能在您的任何 Android.mk 文件中记录消息?就像$(info my-log-message) 看起来像你做的,它正在记录字符串:

    Android NDK:使用本地设置

    如果是这样,请将它们全部删除,然后重试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-05
      • 1970-01-01
      • 1970-01-01
      • 2015-08-23
      • 1970-01-01
      • 2022-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多