Android Studio 2.2 NDK cMake 方式

作者: jarylan | 来源:发表于2017-02-07 16:43 被阅读2901次
    前言:Android Studio 推出 2.2 之后 ,解锁一个 NDK 开发新姿势 : cMake ;跟传统的(Android Studio 2.2 之前)有很多大的不同.

    首先来比较一下两者的目录结构:
    传统方式:


    image1.png

    cMake 方式:


    image2.png

    结构上还是有略微的差别的 ,接下来进入主题 。

    1、环境搭建

    这就不多说了,照着传统方式做,http://www.jianshu.com/p/e7c2c63fa70e

    另外,需要下载如下图这两个工具,


    image3.png

    在创建项目的时候,记得将此处打上勾,其他默认就行;


    Paste_Image.png

    然后 Android Studio 就会自动给你生成 jni demo;

    Paste_Image.png
    2、 拓展

    2.1 自定义方法 :

    比如你要自定义个 getBytes() 方法 ,直接声明这个方法,然后 利用快捷键 Alt+Enter 弹出提示,在 native-lib.cpp 中创建该方法(当然也可以自己按照命名方式自己去写)。如下图


    Paste_Image.png

    在 native-lib.cpp 中声明后记得在方法名的上面一行添加 extern"C",否则执行后会找不到该方法。

    Paste_Image.png

    注 :如要修改 byte 数组里面的值 , 需要如上图所示 ,通过转换修改再转换回来;因为在这里 java 基本数据类型都通过 <jni.h> 转换了,具体可以点击进入 jni.h 里面查看源码

    Paste_Image.png

    如果要声明一个新的 byte[] ,获取数组的长度,如下图

    Paste_Image.png

    2.2 debug

    直接在 .cpp 文件里面加断点 ; debug 运行就好了 ;

    2.3 修改 so 库名字

    第一步,将 cpp 文件夹下的文件名 修改
    第二步,将此句 System.loadLibrary("native-lib"); 的名字修改
    第三步,将 CMakeLists.txt 文件里面所有 "native-lib" 的字段修改
    然后先 Clean Project ,再重新编译一下项目( Ctrl + F9)


    Paste_Image.png

    2.4 导出 so 文件

    编译之后再如下图路径可以找到编译后的 so 文件:

    Paste_Image.png

    这里面有默认 7 中架构的 so 库; 如果你不需要生成那么多 ,可以在
    build.gradle 配置 ;

    Paste_Image.png

    Clean Project , 再重新编译 ,就只生成你配置的那几种了 ;

    补充 : 在现有项目中添加 C/C++

    分三步走:

    1. 创建新源文件(.cpp / .c)
      参考新建项目的方式在 src/main 路径下创建 cpp 文件夹 ; (也可在其他目录下创建,在第二点会配置这个路径);
      在 cpp 文件夹下创建你的 .cpp / .c 源文件 ;

    2. 创建 CMake 构建脚本
      在应用模块下 new 一个 file 文件,命名为 CMakeLists.txt 即可。
      内容可直接复制新建项目中生成的,注意将下图 1,3 点改为你自己定义的 moduleName , 第 2 点改为你刚刚创建源文件的路径


      asImage.png
    3. 在 Gradle 关联到原生库
      右键点击你要关联到原生库的模块(本文中直接右键 cpp 文件夹), 并从菜单中选择 Link C++ Project with Gradle; BuildSystem 选择 CMake,projectpath 就是 CMakeLists.txt 文件的路径。点击 ok 完成。
      你会在应用模块的 build.gradle 文件中 android 模块中出现了 如下代码(当然也可以手动配置)

    externalNativeBuild {
    cmake {
    path 'CMakeLists.txt'
    }
    }

    到这一步为止就已经配置好了 ;

    总结 :比起以往传统的方式, 用起 cMake 是要简单方便的多 ,特别是声明方法跟 debug ;
    以往传统的方式 : http://www.jianshu.com/p/e7c2c63fa70e

    相关文章

      网友评论

        本文标题:Android Studio 2.2 NDK cMake 方式

        本文链接:https://www.haomeiwen.com/subject/pgzpittx.html