Android NDK开发(一):准备工作(CMake方式)
来源:互联网 发布:nginx lua 全局函数 编辑:程序博客网 时间:2024/06/03 14:55
前言
NDK即Native Development Kit,是Google在Android开发中提供的用于快速创建native工程的一系列工具的集合,帮助开发者快速开发C/C++的动态库,并自动将so和java应用一起打包成apk,极大地减轻了开发人员的打包工作。
而我们经常还会听到JNI,那么JNI和NDK之间有什么区别呢?首先JNI即Java Native Interface,是Java语言提供的一种Java和C/C++通信机制,Java可以通过JNI来调用本地的C/C++代码,本地的C/C++可以通过JNI来调用Java代码。
总得来说,JNI是Java语言提供的一种特性,是Java调用native的一种机制,可以说JNI和Android并没有实质的关系。而NDK是Google公司帮助Android开发者通过C/C++编写应用的开发工具集合,包含了C/C++的头文件、库文件、说明文档和示例代码。
Android Studio CMake方式
Android Studio目前可以有两种方式配置NDK的开发环境,个人将其分为传统的配置方式和CMake方式
传统的配置方式需要配置Android.mk、Application.mk和gradle,这种方式复杂而且配置繁琐,在这里就不做赘述。这里要着重强调的是CMake方式,Android Studio 2.2已经对NDK开发做了很好的支持。下面介绍CMake方式:
首先创建工程,在Android Studio中File->New->New Project,会出现下图
这里我们需要注意的是将Include C++ support打上对勾,由于目前是最新的Android Studio(3.0),已经很好的支持了Kotlin,所以下面有Include Kotlin support,最好勾上,这样可以方便的进行Kotlin语言的开发。至于警告,是因为我这张图是为了展示给你们看,后来添加的,但是之前已经有这个程序了,可不用管。接下来就是Next->Next->Next->Next->Finish。
点开项目目录结构,可以看到Android Studio替我们多生成了三个文件夹,分别是.externalNativeBuild、cpp和CMakeLists.txt。
.externalNativeBuild是系统自动生成的,包含一些硬件信息,可以不用管。
cpp文件中默认是有一个C++文件native-lib.cpp,我们也可以自己手动添加C/C++文件,内容需要自己编写。下面是默认生成的,当然我们可以修改相应的代码。
CMakeList.txt是CMake脚步配置的文件,配置的是关于库的一些信息,需要自己配置。下面两张图就是默认生成的,我们需要注意的就是这里的native-lib需要和System.loadLibrary(“native-lib”)中的一致。首先需要说明的是#号是注释的意思,相当于//。add_library:创建一个library,添加C/C++文件;find_library:表示依赖NDK中的库,一般不需要手动去更改;target_link_libraries:表示将目标库与NDK中的库进行连接。如果有多个库时,可以添加多个add_library和target_link_libraries。
再来看看gradle配置:
最后来看Java代码:
这里需要注意的就是需要加上System.loadLibrary(…)去加载库文件,同时C/C++在Java中的声明必须加上native关键字。
下载NDK和构建工具
依次选择File -> Project Structure:
如果之前没有下载过NDK,会显示download NDK,点击就可以下载NDK,最终我的配置是这样的:
依次选择Tools -> Android -> SDK Manager -> SDK Tools:
依次选中CMake、LLDB和NDK。要编译和调试本地代码,需要这些组件。
NDK:让你能在Android上面使用C/C++代码的工具集,提供了一系列的工具,帮助开发者快速开发C/C++ ,极大地减轻了开发人员的打包工作。
CMake:外部构建工具。如果你准备只使用ndk-build的话,可以不使用它。
LLDB:Android Studio上面调试本地代码的工具。
一键生成方法名
当以上配置都完成时,编写一个Native方法,直接Alt + Enter就可以生成对应的方法,这样就可以在对应的C/C++文件中找到该函数的实现。
展望
下一篇博客我将利用Android Studio从零开始编写C/C++代码,进行NDK开发。
参考链接:http://blog.csdn.net/banketree/article/details/12167145
- Android NDK开发(一):准备工作(CMake方式)
- Android项目开发前准备工作(一)
- Android NDK开发一 NDK环境搭建及cmake简介
- Android studio NDK成长记录(一)CMake
- Android 使用CMake编译NDK(一)CMakeLists.txt
- Android Studio 2.2 NDK 开发 之 cMake 方式
- Android项目开发前准备工作(一),android项目开发
- android NDK开发(一)
- Android-NDK开发(一)
- Android NDK 开发:CMake 使用
- CMake语法简介(androidstudio中利用CMake开发NDK)
- linux 下 采用CMake 方式开发php扩展(一)
- Android 开发笔记(准备工作)
- Android Studio 2.2 NDK CMake方式入门
- Android Studio 2.2 NDK CMake方式入门
- 【转载】Android Studio 2.2 NDK cMake 方式
- NDK开发(一):Android NDK环境搭建
- Android JNI/NDK开发(一)NDK真的很难吗?
- Camera之Demosaic---双线性插值
- PHP 判断时间是否为当天时间
- 98. Validate Binary Search Tree
- leetcode习题解答:32. Longest Valid Parentheses
- 【unix学习】文件处理4—sed + wget + awk命令
- Android NDK开发(一):准备工作(CMake方式)
- WEB前端入门-HTML5基础概述
- UI Testing初探之元素定位
- 八大排序算法总结与Java实现
- 如何添加一个百科推词条
- git flow
- 《设计模式》pdf下载
- 人脸识别卷土重来
- 复杂性思维第二版 三、小世界图