背景
android的ndk代码编写一直被认为是很痛苦的一件事情,除了android程序员对c++的陌生外,还有一个主要原因是无法断点调试。无法断点调试很难发现和排查问题,大大影响开发效率。实际上android studio从2.2开始就完全支持ndk开发,并且可以进行断点调试。
实际应用中发现,真正使用新版studio构建c/c++工程的项目极少。这里有个误区是android studio其实是支持ndk-build和cmake两种构建方式的,但是几乎所有的博客在给教程的时候都是用的官方推荐的cmake构建方式。老项目使用ndk-build构建,工程大的mk文件也很复杂,迁移和学习成本都很大。ndk-build和cmake只是编译方式的不同,两者均可以利用lldb进行断点调试,对于其它功能支持也是一样的。
从大的方向上来看,使用cmake构建很美好,cmake作为通用跨平台编译方案,以后肯定有更好的前景。但是对于android本身来说,大家相对都更熟悉ndk-build方案,而如果都能支持相同的功能,显然直接把ndk-build方案迁移过去成本最小。
迁移步骤
下面给出ndk代码的迁移步骤(以下假设你的工程结构是studio工程结构)。build.gradle整体配置如下:
0、首先,在app/src/main/中新建cpp文件夹,将原工程jni中的文件全部复制过来到cpp文件夹中。