问题1:JNI是什么?
答:JNI是Java语言的机制。Java可以通过JNI调用C/C++代码,C/C++代码也可以通过JNI调用Java代码。
问题2:NDK是什么?
答:NDK是代码库,功能有两个:
(1) 将.c/.cpp文件转换成.so文件
(2) 将.so文件和Android应用一起打包成apk
问题3:我们要做什么?
答:做以下五个步骤
(1) 创建.cpp / .c文件
(2) 使用NDK将.cpp / .c文件转化成.so文件
(3) 使用JNI在Java中调用.so文件中的C/C++的函数
(4) 使用NDK将.so文件打包成.apk
(5) 在手机上运行
问题4:CMake方式和ndk-build方式是什么?
答:当我们想将.cpp /.c转化成.so文件时, Android Studio提供了两种方式:
第一种是通过ndk-build工具,此时我们需要编辑Android.mk文件。
第二种是通过CMake方式,此时我们需要编辑CMakeLists.txt文件
CMake方式更加先进,但是需要Android Studio 2.2 及以上版本的支持。
问题5:本文中介绍什么呢?
答:两个都介绍,但是先介绍先进的CMake,再介绍落后一点的ndk-build,如果同学们学会了CMake,ndk-build可以先不用看了。但是由于在某种意义上,ndk-build的适用性更广,所以大家在CMake不管用的时候,可以去尝试ndk-build的方式。
三、 实践:CMake方式
1. 新建Android Studio工程,不用勾选include C++ support
2. 打开SDK Manager,保证NDK已经安装
3. 创建JNI文件夹
4. 在创建出来的cpp文件夹中建立C/C++ Source File,起名为hello_world.cpp
5. 回到MainActivity,声明native方法helloFucker(String name)