转发,请保持地址:http://blog.csdn.net/stalendp/article/details/8807603
做NDK开发的时候,调试是比较头疼的事情;但是没有调试,有些具体的错误就无法了解。这里我流水似的介绍一下在真机下的ndk调试方案,以下是我的笔记:
NDK进行调试的时候,遇到了几个问题:
1) 需要对Android手机有root权限来设置执行一些命令
2)配置ndk-build
3)配置adbserver
4)配置adb client
调试的整体流程:
在进行调试之前,ndk-adb脚本要从手机上获取一些文件来做调试前准备(bug a);之后,将建立一个远程调试构架来调试应用程序。其中服务器端(adbserver)负责与手机通讯,本地客户端(client)将通过服务器端调试手机程序。
=============
bug A)权限问题
=============
在调试准备阶段,ndk-adb脚步将从手机端获取相关信息,比如 1) 位于/data/data下的app信息;还有和机器相关的应用程序: gdb.setup, app_process 和 libc.so 等文件(通过查看ndk-adb的执行日志,后两个文件分别位于手机的/system/bin 和 /system/lib下);这些目录都默认都是root的,为了在调试时能够访问,需要修改root权限为system。不然会产生如下的错误:run-as: Package 'com.example.tttt'
has corrupt installation
解决方案:修改权限。
-------
sss$ adb shell
$ su
# chmod 771 /data/data
# chown system.system /data/data
参考文章:http://stackoverflow.com/questions/4873124/android-native-debug-ndk-gdb-on-htc-desire-run-as-flaw
=============
bug B)没有调试信息的问题
=============
需要在编译阶段,在ndk-build命令上加参数“NDK_DEBUG=1”
错误消息为:Verify if the application was built with NDK_DEBUG=1
具体为:打开工程的properties,修改如下图(去掉Use Default build command,在build Command中加入相关参数):
参考文章:http://tools.android.com/recent/usingthendkplugin
=============
bug C)配置远程调试--server端
=============
就是使用系统的脚本进行,命令为:
ndk-gdb--verbose --force --start --project <project/dir> --adb=/Applications/adt-bundle-mac/sdk/platform-tools/adb
建立Eclipse工具,如下图所示:
=============
bug D)配置远程调试--client端
=============
在配置client端时,有5个变量要提供;项目名称,gdb的实际位置,本地server的端口号;还有两个是运行ndk-adb进行调试准备阶段的产物(请参考bug A中的描述,分别为:gdb.setup, app_process; 因为client端只需要跟本地的server通讯,需要把gdb.setup拷贝一份,并把最后一行“target remote :5039”去掉。
具体请参考文章结尾的参考资料。
图例如下:
==============
关于对手机的root
==============
最后关于手机刷机的技术,HTC G7需要用到的软件为: unrevoked v3.2.0.92_0.93(需要跟手机的nboot匹配)。
具体请参考http://unrevoked.com/rootwiki/doku.php/public/windows_hboot_driver_install
具体请参考 NOTE:HTC刷机
关于Eclipse中配置JNI开发环境,请参考NOTE: NDK在Eclipse中的集成开发
》》参考资料
配置NDK环境:http://www.eclipse.org/sequoyah/documentation/native_debug.php
书籍:《Android NDK Beginner's Guide》的最后一章: Chapter11 Debugging and Troubleshooting
分享到:
相关推荐
这里的"android-sdk-NDK17.2.4988734.rar"是一个特定版本的NDK压缩包,版本号为17.2.4988734,包含了编译、调试和优化Android原生代码所需的各种库、工具和头文件。 NDK的核心功能主要包括以下几个方面: 1. **...
Linux用户需要解压“android-ndk-r25b-linux.zip”,将其添加到PATH环境变量中,以便在终端中直接使用ndk-build、ndk-gdb等命令。此外,Linux下的开发环境设置,如编译器配置、交叉编译等,也需要熟悉。 总结来说...
Android SDK和NDK是开发Android应用的关键工具,它们在构建原生代码和本地库时起着至关重要的作用。本文将详细介绍这两个组件以及如何利用它们进行高效开发。 Android SDK(Software Development Kit)是谷歌提供的...
这个"android-ndk-r23b-windows.zip"压缩包包含了NDK的第23个版本,专为Windows操作系统设计。NDK是Android应用开发中的一个重要组成部分,它允许开发者使用原生代码(如C、C++)来编写部分应用程序,从而利用底层的...
在"bugsnag-android-ndk-master"这个压缩包中,包含了项目的主要源代码和资源,你可以通过以下步骤将其集成到你的Android项目中: 1. **设置环境**:首先,你需要在你的Android项目中包含Bugsnag的Gradle依赖。这...
这个压缩包“android-ndk-r25b-windows.zip”包含了NDK的第25个版本,专为Windows操作系统设计。NDK的主要功能是让开发者能够在Android应用中使用原生代码,例如C、C++,以实现高性能计算或利用硬件加速等功能。 **...
Android NDK,全称为Native Development Kit,是Google提供的一款用于Android平台的C和C++开发工具集。...通过“android-ndk-r26b-windows.zip”,Windows用户可以方便地获取并开始他们的原生代码开发之旅。
Android SDK NDK是Android开发中的一个重要工具,全称为Android Software Development Kit Native Development Kit。NDK允许开发者使用C和C++语言编写部分应用代码,以提高性能或利用特定硬件功能。在标题"android-...
`android-ndk-r25b-darwin.zip` 是针对macOS系统的NDK版本,版本号为r25b,包含了一系列用于构建、编译和调试原生代码的工具。 在Android应用开发中,NDK的主要作用和知识点包括: 1. **JNI (Java Native ...
9. **调试**:NDK提供了一些工具,如NDK-gdb,用于在Android设备或模拟器上调试本地代码。随着Android Studio的发展,现在的调试工具更加便捷,例如使用LLDB。 10. **安全考虑**:虽然NDK提供了更多的功能,但也...
4. **使用NDK编译原生代码**:通过CMake或ndk-build脚本编译.so库文件,然后在Android应用中引用。 四、原生代码开发与调试 使用NDK开发原生代码,通常涉及以下过程: 1. **编写C/C++代码**:创建源文件夹结构,...
9. **崩溃日志和调试**:NDK提供了一些工具,如ndk-stack,帮助开发者分析和调试原生代码的崩溃日志,gdb则可用于原生代码的调试。 10. **多平台兼容性**:尽管这个版本是针对Linux的,NDK也提供了Windows和macOS的...
#### 三、使用ndk-stack进行调试 ##### 3.1 查看堆栈信息 要查看C/C++代码的堆栈信息,可以使用`adblogcat`命令,并结合`ndk-stack`来获取具体的堆栈调用情况。具体命令格式如下: ```bash adb logcat | ndk-...
Android NDK,全称为Native Development Kit,是Google提供的一款用于Android平台的C和C++原生代码开发...在macOS环境下,"android-ndk-r26b-darwin.zip"为开发者提供了在原生环境中构建和调试Android原生代码的平台。
10. **构建系统**:NDK提供了基于CMake和ndk-build的构建系统,帮助开发者管理项目依赖和构建流程。 在压缩包内的“android-sdk-NDK20.0.txt”文件可能是NDK的安装指南、版本说明、更改日志或者是一些配置文件,它...
- 在Android Studio中,可以通过添加`externalNativeBuild`配置到`build.gradle`文件,使用CMake或NDK-Build集成JNI代码。 - 构建过程会自动编译本地代码,生成的`.so`文件会被打包到APK中。 6. **注意事项** - ...
这个“android-ndk-r23b-linux.zip”文件是NDK的一个特定版本,即r23b,专为Linux操作系统设计。在Android应用开发中,NDK扮演着至关重要的角色,它允许开发者使用原生代码(如C和C++)来编写部分应用,以提升性能或...
"android-ndk-r16b-windows-x86_64.zip" 是NDK的第16个版本,特别为Windows 64位操作系统设计。 在Android应用开发中,通常我们使用Java或Kotlin编写大部分代码,但由于这些语言运行在Dalvik或ART虚拟机上,它们的...
Android SDK NDK19.2 是一款针对Android平台的重要开发工具集,主要用于原生代码的编译和优化。NDK(Native Development Kit)是Google提供的一款SDK扩展,它允许开发者使用C、C++等系统级语言来编写部分或全部应用...