基于已有项目的NDK环境配置

作者: 逝我 | 来源:发表于2016-12-27 23:23 被阅读936次

    最近有朋友跟我留言,关于以前的项目,没有勾选Include C++ Support的项目,怎样配置,才能支持NDK开发 ,特写一篇文章予以说明 。这个问题被我搁置了几天,一来是因为最近在赶项目没时间,二来我也没这样做过,所以得自己做一下试验 。

    对于这类问题 , 其实可以做一下简要的分析:

    勾选了Include C++ Support为我们做了什么 ?

    ① 为我们配置好的NDK环境
    ② 创建了CPP目录
    ③ 创建CMakeLists.txt文件,主要用于cmake工程构建配置
    ④ 在gradle中做了如下配置

    // 配置cmake build 参数
    externalNativeBuild {
        cmake {
            arguments "-DANDROID_TOOLCHAIN=clang"
            abiFilters "armeabi-v7a", "armeabi","x86"
        }
    }
    
     // cmake构建的配置文件
    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
    

    分析完之后 , 我们照着配置就OK了 , 下面为Demo流程 。

    已有项目配置NDK开发环境

    一 , 配置NDK环境

    NDK config project

    二 , 新建CPP

    将项目目录视图,切换到project视图,在main目录下,新建cpp目录

    new cpp dir

    三 ,创建CMakeLists.txt

    选中app右键新建文件,文件名为CMakeLists.txt,然后将以前创建好的NDK的CMakeLists.txt复制过来,或者直接复制粘贴文件也是可行的 。

    创建CMakeLists.txt文件

    四 , 配置gradle
    配置好gradle之后,NDK环境才算是真正搭建好 。

    config gradle

    五 , 编写测试

    很简单的代码

    test

    显示结果:

    ndk

    结语

    这种问题的思路,其实很简单 , 建立在已有的案例基础上,这种问题是最好解决的 , 首先要观察和分析已有案例的和现有项目的区别,然后,通过手动补齐配置和一些参数变量等等 。

    相关文章

      网友评论

      • d3a40ad8fafe:运行成功了,但是我有一个问题就是,当我在activity中写public static native String sayHello();点击Alter+enter时它自己创建了一个jni文件夹生成了相应的.c文件,没有在自己手动创建的cpp中创建,这个是什么原因?
        逝我:@LynnMin 可以转载,注明出处即可。
        d3a40ad8fafe::joy: 好像不支持.cpp文件,问题我找到了,按LZ的方法完全可行的
        d3a40ad8fafe:还有就是我觉得LZ写得很好,我想转载到我的CSDN上,我会标明出处的,并标明为转载而非原创:blush:
      • 大大大大大大的大大:为什么我按照你的配置不行啊 mac android studio
        大大大大大大的大大:@一小沫一 那怎么搞
        王人冉:http://blog.csdn.net/w690333243/article/details/78184056 不需要勾选C++support 不需要copy之前的CMakeLists.txt CMake只是一种编译方式,还有mk文件的方式,mk是比较好理解的
      • 水天相映:为什么as自动生成的cpp文件在java里右键生成方法直接在默认cpp里没有生成头文件 而自己写的cpp就算重新写cmake点create method还是会生成jni文件夹和头文件 请问博主知道怎么配置的吗
        逝我:@水天相映 没遇到你说的那种情况 , 主要是路径要配置准确 , 这点尤为重要,不然在Java代码中生成C方法,AS会创建临时文件来生成C方法 。你仔细检查一下CMakeLists.txt还有gradle的配置 ,可以与这些有关 。
      • smartapple:难得楼主这么用心,辛苦了。我之前是尝试着使用javah 生成头文件的方式 来写,参考网上使用as 写jni ,可是最后总会出现莫名的错误。明天试试博主的方式,成与不成 ,最后均再回复:yum:
        逝我:@四条眼的小胖子 :beers: 相互学习 !
        smartapple:@四条眼的小胖子 一大早就迫不及待的测试了一下 完美 再次感谢博主 :relaxed:

      本文标题:基于已有项目的NDK环境配置

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