这篇文章将为大家详细讲解有关Android工作室怎样调试对应因此文件C/c++代码,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
在C/c++跨平台开发中,我们知道在Windows上可以通过VS,进行单步断点调试,这非常方便。但是我们如果编译好的动态库是这样,想要跟踪下其流程及各个阶段,如,怎么跟踪FFmpeg/VLC等库内部多路分配器流程,或是编解码器流程呢?今天通过一个小演示进行调试库文件C/c++代码。
<强>一、下载NDK和构建工具要编译和调试本地代码(本机代码),你需要下面的组件:强>
1, Android原生开发工具包(NDK):让你能在Android上面使用C和c++代码的工具集。
2, CMake外部构建工具。如果你准备只使用ndk-build的话,可以不使用它。
3, LLDB: Android工作室上面调试本地代码的工匠。
注意:要在Android工作室中使用CMake或者ndk-build,你需要使用Android Studio 2.2或更高的版本,同时需要配合使用Android插件Gradle 2.2.0及以上的版本。
<强>安装上述组件:强>
- <李>
如SDK工具不显示,LLDB CMake和NDK,说明你配置了国内镜像站点!
李> <李>要能上谷歌官网才会显示,之前也是通过国内镜像,一直没显示出来!
李>工具比;Android比;SDK经理祝辞点击SDK工具选项卡。勾选LLDB, CMake和NDK。
说明:虽说是支持C/c++,但是不完全支持C/c++的全部特性,必须得按照jni的约定来:具体可以参照jni手册c++标准:选择c++库
- <李>
工具链默认值:默认CMake设置
李> <李>c++ 11:支持c++ 11特性!
李> <李>异常支持(-fexceptions):
李>如果你想使用有关c++异常处理的支持,就勾选它。勾选之后,Android工作室会在模块层的构建。gradle文件中的cppFlags中添加-fexcetions标志。
运行时类型信息支持(-frtti):如果你想支持RTTI,那么就勾选它。勾选之后,Android工作室会在模块层的构建。gradle文件中的cppFlags中添加-frtti标志。
说明:
- <李>
native-lib。cpp:自动生成的c++源文件
李> <李>CMakeLists。txt: CMake脚本根据构建脚本的指令去编译一个c++源文件,也就是native-lib。cpp,并将编译后的产物扔进共享对象库中,并将其命名为libnative-lib。所以,然后Gradle将其打包到APK中。
李> <李>外部构建文件存放CMake或ndk-build构建脚本的地方。有点类似于构建。gradle文件告诉gradle如何编译你的应用程序一样,CMake和ndk-build也需要一个脚本来告知如何编译你的本地库。
李>1,只需配置android标签节点下的buildTypes
buildTypes {,, 调试才能{ ,,,jniDebuggable 真实的 ,,,jniDebuggable =,真的 ,,} }
2,配置AndroidManifest属性:android: debuggable=皌rue"
& lt; application android:标签=癅string/app_name",,,,,,, ,,,,,,android: debuggable=皌rue"比; & lt;才能activity android: name=?HelloJni",,,,,,, ,,,,,,android:标签=癅string/app_name"比; & lt;才能intent-filter> & lt;才能action android: name=癮ndroid.intent.action.MAIN",/在,,,,,, & lt;才能category android: name=癮ndroid.intent.category.LAUNCHER",/比; & lt;才能/intent-filter> & lt;才能/activity> & lt;/application>
3,配置运行/调试配置
,选择运行下拉项,选编辑配置,弹出配置窗体
b点击?新建configuraionts,选安卓原生条目
c,配置下本地执行的名称如:hellojniNative。
d,选择真机或模拟器调试。
<强>断点调试运行强>