zoukankan      html  css  js  c++  java
  • Android Studio22-NDK-LLDB调试

    Android Studio2.2更好的支持NDK开发,并可以像开发java一样的DEBUG程序,不需要添加gradle-experimental插件,就可调试代码!

    一,下载 NDK 和构建工具

    要编译和调试本地代码(native code),你需要下面的组件:

    (1)The Android Native Development Kit (NDK) : 让你能在 Android 上面使用 C 和 C++ 代码 的工具集。

    (2)CMake  外部构建工具。如果你准备只使用 ndk-build 的话,可以不使用它。

    (3)LLDB : Android Studio 上面调试本地代码的工匠。


    注意:要在 Android Studio 中 使用 CMake 或者 ndk-build,你需要使用 Android Studio 2.2 或更高的版本,同时需要

    配合使用 Android Plugin for Gradle 2.2.0 及以上的版本。

    安装上述组件:

    注:如SDK Tools 不显示LLDBCMake NDK,说明你配置了国内镜像站点!!

    要能上google官网才会显示,之前也是通过国内镜像,一直没显示出来!

    Tools > Android > SDK Manager >点击 SDK Tools 选项卡。

    勾选 LLDBCMake 和 NDK 

    已单独下载了 android-ndk-r11b所这里不再下载NDK!(最好勾选下载最新NDK)

    点击 Apply ,然后点击 OK 。

    二,新建项目:

    勾上 include C++ support

    在最后一步时可选择不同的C++库如图:

    说明:

    虽说是支持C/C++,但是不完全支持C/C++的全部特性,必须得按照 jni的约定来:参照 jni完全手册!教程参照:Jni入门: 官网demo

    C++ Standard: 选择C++库

    Toolchain Default默认 CMake 设置 

    C++ 11:支持C++11特性!

    Exceptions Support(-fexceptions):

    如果你想使用有关 C++ 异常处理的支持,就勾选它。勾选之后,Android Studio 会在 module 层的 build.gradle 文件中的 cppFlags 中添加 -fexcetions 标志。

    Runtime Type Information Support(-frtti):

    如果你想支持 RTTI,那么就勾选它。勾选之后,Android Studio 会在 module 层的 build.gradle 文件中的 cppFlags 中添加 -frtti 标志。

    完成后结构如下:

    说明:

    native-lib.cpp: 自动生成的C++源文件

    CMakeLists.txt:

    CMake 脚本根据构建脚本的指令去编译一个 C++ 源文件,也就是 native-lib.cpp ,并将编译后的产物扔进共享对象库中,并将其命名为 libnative-lib.so ,然后 Gradle 将其打包到 APK 中。

    External Build Files 

    存放 CMake 或 ndk-build 构建脚本的地方。有点类似于 build.gradle 文件告诉 Gradle 如何编译你的 APP 一样,CMake 和 ndk-build 也需要一个脚本来告知如何编译你的 native library。

    注意 :

    Android.mk与Application.mk,都是由工具自动管理,再也不用写了,当然也可自定义.

    编写请参照:android.mk分析一文!

    如果要在native-lib.cpp文件中添加多少方法,必须添加在 extern c { } 中,或者在每个方法前加 extern c , 否则会报找不到方法!

    配置后,默认的是C++的,如要改成C语言后缀的,直接把native-lib.cpp,改在C,并去掉 extern c,

    在CMakeLists.txt文件中native-lib.cpp也修改后缀名!

    最后调试,与java断点调试是一样的!





  • 相关阅读:
    差分约束
    关系运算图。。。(差分约束)
    克鲁斯卡尔算法+并查集
    整体代换(数学)
    魔性の分块 | | jzoj1243 | | 线段树の暴力
    论人品 | | noip1015模拟考
    hash 表 | | jzoj 1335 | | 脑残+手残 | | 集合的关系
    凸轮大总结
    Floyd | | jzoj[1218] | | [Usaco2009 Dec]Toll 过路费 | | BZOJ 1774 | | 我也不知道该怎么写
    topsort | | jzoj[1226] | | NOIP2003神经网络
  • 原文地址:https://www.cnblogs.com/ut2016-progam/p/6066844.html
Copyright © 2011-2022 走看看