上面提到了“交叉编译”,我们最后再解释一下什么是交叉编译。大家都知道编译器在将中间代码连接成当前计算机可执行的二进制程序时,连接程序会根据当前计算机的CPU、操作系统的类型来转换。而根据运行的设备的不同,CPU的架构也是不同,大体有如下三种常见的CUP架构:
arm结构 :主要在移动手持、嵌入式设备上。我们的手机几乎都是使用的这种CUP架构。
x86结构 : 主要在台式机、笔记本上使用。如Intel和AMD的CPU 。
MIPS架构:多用在网关、猫、机顶盒等设备。
若想在使用了基于x86架构CPU的操作系统上编译出可以在基于arm结构CPU的操作系统上运行的代码,就必须使用交叉编译。所以综上所述:交叉编译就是在一个平台下(比如:CPU架构为X86,操作系统为Windows)编译出在另一个平台上(比如:CPU架构为arm,操作系统为Linux)可以执行的二进制代码。Google提供的NDK就可以完成交叉编译的工作。
好了,上面的基本概念介绍完以后,我们正式进入AS下NDK开发的讲解。
1.首先,你需要把NDK下载下来NDK下载。下载完成后解压到任意目录即可(路径中不要带有中文字符)。我的就直接放在D盘的ndk目录下:
2.在AS中为你的项目配置NDK。首先新建一个Android工程JNIDemo,Ctrl + shift + alt + s打开Project Structrue把我们刚才下载好的NDK配置进去,点击OK。
3.配置好NDK后,简单的为我们的项目布局文件添加一个TextView和一个Button,当点击Button的时候,我们通过调用底层自己写好的C/C++代码来返回一个字符串,最后呈现在TextView