自从AndroidStudio更新到2.2,就有了CMake和传统JNI两种开发NDK的方法,主要就是在目录结构和build.gradle上的区别,下面我们将分别介绍目录区别和build.gradle种配置的区别(提示:在第一次用CMake时,最好在新建项目时勾选Include C++ Support,这样这个项目的NDK开发就是CMake方式,这估计也是Android以后主推的方式,建好项目,熟悉CMake方式的目录结构,这样对以后建普通项目再转CMake开发NDK有很大帮助,后面会讲到普通项目转NDK开发)

目录上的区别:

传统JNI:

CMake:

这两种方式在目录上的区别就是两点:

1.以前的jni目录改成cpp,位置不变

2.之前对c文件的编译配置Android.mk文件放在jni目录下,现在改成CMakeLists.txt文件

(提示:其实Android.mk文件和CMakeLists.txt可以放在任意目录下,不过最好放在当前工程目录下任意位置。后面说build.gradle配置区别就知道了)

build.gradle的区别:

  传统JNI:
      

CMake:

从上面两幅图可以发现,只有两个红框中的内容有区别,对于传统JNI,其实第二个红框中的内容可以不需要,它所有的配置都在

ndk{
moduleName "hello"
abiFilters "x86"
}

里面配置,Android.mk文件中的内容都不会起作用(提示:但是却不能删除它,在下面普通Android项目转NDK开发就知道),这点有区别于Eclipse开发环境。还有一点,传统JNI开发,需要在项目根目录下的gradle.properties文件中配置

android.useDeprecatedNdk=true

否则Build项目的时候会报错。


CMake的配置大部分都在CMakeLists.txt文件中配置,只有较少的一部分放到


cmake {
cppFlags "-std=c++11"
}

里面配置。CMake的语法规则可以百度。

普通Android项目转NDK开发项目:

对于普通Android项目,都可以通过鼠标右击选择Link C++ Project with Gradle转为NDK项目,

通过选择CMake或者ndk-build使开发NDK采用CMake或者JNI方法,不过此种转化方法必须符合CMake或者JNI的目录

结构,也就是说,在上图操作完成之前,必须先在项目中建好符合CMake或者JNI规则的目录,假如CMakeLists.txt

文件中有对xx.cpp/xx.c的引用,那么必须在cpp目录下新建好对应的xx.cpp/xx.c,同理,android.mk文件要是引

用cpp/c文件,那么就要在jni目录新建好对应得文件.(androidstudio2.2之后新建NDK项目只能得到CMake方式,

所以要想JNI开发,只能普通项目转)。

文章转自:http://blog.csdn.net/u012527560/article/details/51752070

最新文章

  1. Log4net - 项目使用的一个简单Demo
  2. tableview左滑按钮 tableviewcell自定义左滑按钮
  3. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数016,xld,xld轮廓
  4. Sublime Text 添加eclipse快捷键
  5. JavaScript 运行时错误: 无法获取未定义或 null 一种解决方案
  6. Hibernate之:各种主键生成策略与配置详解
  7. HDU 1104 Remainder
  8. iOS8 Size Classes的理解与使用
  9. GAC(Global Assembly Cache)注册/卸载 dll
  10. <<深入Java虚拟机>>-第三章-垃圾收集器与内存分配策略-学习笔记
  11. 基于jeasyui的遮罩扩展[修复链式bug]
  12. json中换行问题
  13. Centos7的目录结构
  14. oralce问题
  15. 32 C++常见错误集锦
  16. Nim or not Nim? HDU - 3032
  17. Java 8 forEach
  18. jenkins权限配置不对导致jenkins无法登陆
  19. maven 引入仓库外部jar
  20. js 获取客户端mac地址

热门文章

  1. Web大前端面试题-Day9
  2. 10.31 正睿停课训练 Day13
  3. Unity 4.0 中的新动画系统——MecAnim
  4. 喵哈哈村的魔法考试 Round #19 (Div.2) 题解
  5. 使用gulp对js、css、img进行合并压缩
  6. Git:本地建服务器及入门使用方法
  7. uva 10816 Travel in Desert(简单的好题~两种方法)
  8. 递归与迭代的联系以及优缺点(以c++为例)
  9. windows server 2008 R2安装图片浏览器/照片查看器方法
  10. AutoRegister ASM AOP 字节码 案例 原理 MD