[英]How to get breakpoint in NDK native code and debug native code in Android Studio?
我正在使用NDK开发Android应用程序。 我有两个项目。 一个是我的本机库,它使用NDK并生成.so文件。
我正在使用Android Studio,但是使用ndk-build禁用自动构建和启用构建。 我使用的是Windows 7。
现在生成.so文件后,我复制了我的主应用程序项目中的那些,它也使用ndk-build编译JNI函数,我在其中调用我的库的函数。 我希望到目前为止我很干净。 如果没有,那么我会根据要求提供更多细节。
现在我正在使用Android Studio在设备中运行我的应用程序,我可以在java代码中设置断点并调试该代码,但我无法调试JNI调用以及我在单独项目中的本机代码。 我需要调试我的库代码。 有没有办法实现这个目标?
我见过VisualGDB,但付费。 所以让我知道是否有任何替代方案来满足我的调试要求。我已经搜索了很多但没有得到任何具体的解决方案。
我可以看到Android Studio中的选项附加到android进程,我可以看到我的运行设备,但我不知道如何使用它,所以我可以通过本机库代码进行调试(这是在没有任何活动的单独项目中)。
如果需要更多详细信息,请与我们联系
在Android Studio 2.0预览中,这个过程有点不同(我认为更容易):
如果它不起作用,请检查您的本机配置是否选择了调试类型“Hybrid” :在播放按钮的右侧,单击小三角形,选择“编辑配置”,选择“app-native”配置,进入在“Debugger”选项卡中选择“Debug type:Hybrid”。
Android Studio 1.3+支持本机调试。
要进行设置,请按以下步骤操作:
- 修改gradle-wrapper.properties,local.properties和build.gradle文件,如本指南所示
- 同步gradle
创建并选择新的构建配置:
单击运行按钮旁边的下拉菜单 - >编辑配置,单击加号,选择Android Native,在右侧填写选项(我在本机调试器选项卡中使用LLDB),您应该设置。
在C ++中设置断点
- 点击调试按钮并耐心等待(有时调试器需要一段时间)
我已经能够使用Android Studio 1.3(稳定通道)在Lubuntu 14.04下调试本机代码。 虽然其他人在Windows下已经取得了成功,但我还是无法在Windows 8.1中进行原生调试 (我已尝试使用Android Studio 1.3,1.3.2和1.4预览版3)。
更新 Android Studio 1.4 Beta刚刚问世。 我测试了它,并且能够在Windows 8.1上进行原生调试。
我能够设置断点并进入本机代码,但只有满足以下所有条件时:
它现在在Android Studio 1.5中使用Gradle Experimental Plugin
如果本机代码中的断点不起作用的另一个检查点:
android:extractNativeLibs="false"
行或在AndroidManifest.xml中将其设置为true extractNativeLibs="false"
偶尔会导致1或2。
如果您尝试了所有内容之后仍然无法获得本机断点,并且您的本机库已被多个AS项目引用,那么就有一个简单的解决方案。
只需在setting.gradle和build.gradle中重命名本机库
之前:
//in setting.gradle
include ":myNativeLib"
project(":myNativeLib").projectDir = new File("...")
//in app's build.gradle
api project(':myNativeLib')
后:
//in setting.gradle
include ":myNativeLib2"
project(":myNativeLib2").projectDir = new File("...")
//in app's build.gradle
api project(':myNativeLib2')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.