说到NDK,那就要先说说cygwin。
cygwin:是一个相当于Android虚拟机一样的东西,它是Linux系统的虚拟机,作用是编译成为so文件,具体的等会详细说。
NDK:它可以让我们在开发环境中使用本地语言来开发应用,比如说c、c++;
接下来我们说说这些内容的关系和使用:
首先说关系:使用NDK9之前版本编写c代码时,需要借助cygwin工具完成编译so的过程。NDK相当于编写Android应用的SDK,属于第三方库文件。而如果使用NDK9,或者以后的版本,由于对Android的版本要求比较高,所以还没有应用广泛。
再来是使用:最重要的是使用NDK,那么如何使用呢?我们首先安装cygwin,在虚拟机中配置NDK的路径。(.bash_profile文件,在cygwin的home目录中。)
双击运行cygwin,
输入命令:$ cd $NDK
如果显示NDK的路径就说明配置成功了。
编写c代码,在cygwin中有默认的代码模板,我们可以修改它作为我们需要生成so文件的c代码
之后我们在cygwin中输入
$ $NDK/ndk-build
就可以生成so文件了。找到文件后将文件考入我们的项目中(libs/armeabi)没有则创建。
为什么要用NDK:
从好处来讲,我们的关键代码比如加密等需要使用c来编写,因为它可以很好的防止反编译程序。c的代码运行速度快。
我们为什么要使用NDK生成so文件呢?
在Windows系统中,使用编译工具编写的c代码编译后生成dll文件,Linux系统中编写c代码后生成so文件。而dll是不可以在Linux系统中运行的,所以我们就需要一个cygwin虚拟机模拟Linux系统,从而帮助我们生成so文件的操作。我们知道,Android应用时运行在Linux中,所以我们的c代码只有生成so文件才可以让应用运行在Linux平台上。