JNI和NDk2

201 阅读1分钟

在Android Studio 2.2 之后,工具中增加了 CMake 的支持,你可以这么认为,在 Android Studio 2.2 之后你有2种选择来编译你写的 c/c++ 代码。一个是 ndk-build + Android.mk + Application.mk 组合,另一个是 CMake + CMakeLists.txt 组合。这2个组合与Android代码和c/c++代码无关,只是不同的构建脚本和构建命令。本篇文章主要会描述后者的组合。(也是Android现在主推的)

在上一篇文章就算ndk-build + Android.mk + Application.mk的方式,第二种方式可查看这篇文章www.jianshu.com/p/be8ad0505…

ABI

ABI(Application binary interface)应用程序二进制接口。不同的CPU 与指令集的每种组合都有定义的 ABI (应用程序二进制接口),一段程序只有遵循这个接口规范才能在该 CPU 上运行,所以同样的程序代码为了兼容多个不同的CPU,需要为不同的 ABI 构建不同的库文件。当然对于CPU来说,不同的架构并不意味着一定互不兼容。 armeabi 设备只兼容 armeabi; armeabi-v7a设备兼容armeabi-v7a、armeabi; arm64-v8a设备兼容arm64-v8a、armeabi-v7a、armeabi; X86设备兼容X86、armeabi; X86_64设备兼容X86_64、X86、armeabi; mips64设备兼容mips64、mips; mips只兼容mips; 当我们开发 Android 应用的时候,由于 Java 代码运行在虚拟机上,所以我们从来没有关心过这方面的问题。但是当我们开发或者使用原生代码时就需要了解不同 ABI 以及为自己的程序选择接入不同 ABI 的库。(库越多,包越大,所以要有选择)