AndroidStudio2.2 Preview3中NDK开发之CMake和传统 JNI在目录结构和配置文件上的区别(转载)
自从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的区别:
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
最新文章
- Log4net - 项目使用的一个简单Demo
- tableview左滑按钮 tableviewcell自定义左滑按钮
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数016,xld,xld轮廓
- Sublime Text 添加eclipse快捷键
- JavaScript 运行时错误: 无法获取未定义或 null 一种解决方案
- Hibernate之:各种主键生成策略与配置详解
- HDU 1104 Remainder
- iOS8 Size Classes的理解与使用
- GAC(Global Assembly Cache)注册/卸载 dll
- <;<;深入Java虚拟机>;>;-第三章-垃圾收集器与内存分配策略-学习笔记
- 基于jeasyui的遮罩扩展[修复链式bug]
- json中换行问题
- Centos7的目录结构
- oralce问题
- 32 C++常见错误集锦
- Nim or not Nim? HDU - 3032
- Java 8 forEach
- jenkins权限配置不对导致jenkins无法登陆
- maven 引入仓库外部jar
- js 获取客户端mac地址
热门文章
- Web大前端面试题-Day9
- 10.31 正睿停课训练 Day13
- Unity 4.0 中的新动画系统——MecAnim
- 喵哈哈村的魔法考试 Round #19 (Div.2) 题解
- 使用gulp对js、css、img进行合并压缩
- Git:本地建服务器及入门使用方法
- uva 10816 Travel in Desert(简单的好题~两种方法)
- 递归与迭代的联系以及优缺点(以c++为例)
- windows server 2008 R2安装图片浏览器/照片查看器方法
- AutoRegister ASM AOP 字节码 案例 原理 MD