androidStudio关联静态库(.a)/动态库(.so)源码调试
来源:互联网 发布:淘宝主管岗位职责 编辑:程序博客网 时间:2024/05/23 01:12
阅读前提
- 针对windows平台
- 假设你有一定的NDK开发基础.
- 对CMake有一定的了解.
- windows下CMake方式生成Android平台的静态库/动态库:http://blog.csdn.net/LLJJYY001/article/details/77866049
- Android中使用具有依赖关系的动态库静态库注意:http://blog.csdn.net/LLJJYY001/article/details/78041544
需求
Android JNI开发的时候,需要对C++源码进行调试,如果C++源码就在项目中,那好办,阅读该文到一半就可以调试了,如果项目中只有C++对应的动态库静态库,源码另外存在,那怎么办?
参照物
配置得有一个项目吧,而这些我都准备好了.
本文使用的Android项目:https://github.com/lijiayan2015/NativeDemo
本文使用的C++项目源码:https://github.com/lijiayan2015/AndroidNativeLib
C++源码的项目可直接下载安装包解压后直接用.
AndroidStudio中配置
如果Android jni是以module(native)的形式存在的,如我的Android项目,需要在module(native)的gradle中配置如下:
android { //关键点***** publishNonDefault true compileSdkVersion 26 buildToolsVersion "26.0.1" defaultConfig { minSdkVersion 14 targetSdkVersion 26 versionCode 1 versionName "1.0"
在app的gradle中添加依赖,如下:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:26.+' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' //关键点*****start releaseCompile project(path: ':native', configuration: 'release') debugCompile project(path: ':native', configuration: 'debug') //关键点*****end }
AndroidStudio中快键键ctrl+alt+shift+S打开project structure窗口,也可以如图打开:
选中native,同时选中build Types–>debug(根据自己的需求,如果Release也想debug的话那就一起设置),然后将Debuggable 和Jni Debuggable 都设置为true.如果JNI开发没有分开,那就直接设置app
按如图方式打开Run/Debug Configurations窗口
按照如下标记步骤设置,其中设置Debug Type的时候选择Auto,如果选择Java或者Native的话只能调试java或者Native.
[修正:源码没有在AS中的,经过验证,直接拖到AS中也可以调试,所以该步可以不看了]
对于C++源码就在Android工程中的,经过上面6步就可以在需要调试的地方进行断点调试了.但是,如果需求跟我的一样,使用的是第三方静态库或者动态库,有源码但源码不在Android工程中,还需要设置 Symbol Directores ,设置什么鬼?我也不知道,@^_^,百度吧!怎么设置呢?直接点击"+ "按钮,定位到源码的最外层目录,如我当前的C++源码我放在了桌面,直接定位的桌面对应的文件夹,点击确定就可以了.将需要调试的源码拖到AS编辑窗口中(注意,将As缩小点然后打开源码文件拖动到编辑区域就可以了),如,假设我当前需要调试Add.cpp的方法,我的断点如图,shift+f9启动调试,看看是不是可以跟调试java代码一样的调试了.@^_^
上面的忘记一点,补充下.Native调试需要LLDB,打开SDK Manager中SDK Tools里面选中LLDB,然后进行安装.
最后
由于开启JNI debug调试,所以启动调试的时候要加载很多库,导致很慢很慢,我没有找到好的解决办法,如果哪位大神有好的解决方案,请告知!
以上就是AS中调试Native代码的以及关联静态库动态库源码的配置.
有问题请留言或者:lijiayan_mail@163.com
- androidStudio关联静态库(.a)/动态库(.so)源码调试
- 动态库so和静态库a
- 静态库.a和动态库.so
- Android 动态库/静态库(.a|.so)
- so-a--linux---静态--动态--链接库
- gcc生成.a.so静态库和动态库文件
- linux中静态库(.a)和动态库(.so)
- gcc生成.a静态库和.so动态库文件
- 静态库*.a和动态库*.so生成及调用
- Linux下静态库与动态库(.a、.so)
- 静态库.a和动态库.so说明
- Linux下动态库(.so)和静态库(.a)
- 静态库.a和动态库.so说明
- gcc生成.a静态库和.so动态库文件
- Linux下动态库(.so)和静态库(.a)
- Linux下动态库(.so)和静态库(.a)
- gcc 生成 .a静态库和 .so动态库
- Linux 动态库(.so)、静态库(.a)
- 服务器命令整理
- C#与C++的区别(三) 委托与事件
- Axure游戏原型设计实例应用(二)——Einsphoton
- JavaScript执行环境与作用域【链】
- java.lang包中不能被继承的类 -- JAVA 基础
- androidStudio关联静态库(.a)/动态库(.so)源码调试
- 027、类,抽象类,接口的综合小练习
- matlab下删除文件或文件夹
- centos7 安装mysql
- MySQL最新版安装配置教程
- 使用CodeWarrior编译时出现Warning:C12056 SP debug info incorrect because of optimization or inline assembler
- Python与设计模式(二)——builder
- Qt5显示中文
- spark+carbondata使用