程序员自我修养之JAVA与JNI流程以及检测崩溃工具搭建

一、JAVA层调用C++层流程

   1. 在build.gradle(:app) 写入文件配置

      a. defaultConfig 里面加入配置参数

      b.  在defaultConfig外面配置JNI的路径

     2. 创建CMakeLists文件以及编写.so库

       CMakeList 语法参考此文档:https://www.jianshu.com/p/56a3fd12f76e

   3.Java层代码编写

     4.  CMakeLists生成.so库位置

    5. JNI层代码编写,流程已经跑通

二、JNI层调用java层代码

      JNI层反射和Java层反射相似

三、ASAN背景介绍

        1.堆栈和堆缓冲区上溢/下溢

        2.释放之后的堆使用情况

        3.超出范围的堆栈使用情况

        4.重复释放/错误释放

四、把asan.so接入Android

      1. gradle写入环境变量

        2. CMakeLists写入介入三方库使用

        3. 拿到堆栈使用add2Line去解析奔溃的堆栈,即可知道问题原因

Android/sdk/ndk/16.1.4479499/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-addr2line(add2line的目录)  -e  libnative-lib.so(崩溃的so库)  0x704a151578  0x704a1514d8(崩溃的堆栈)


demo: https://github.com/zhang1shun1wei/ASan_demo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容