1. 前言
1.1 Android SDK介绍
Android是基于Linux内核的一个手机操作系统,谷歌提供了开发包(Android SDK),程序员可以通过开发包开发Android App(应用程序)。Android SDK提供Java语言接口,因此Android应用是使用Java开发的。
1.2 使用纯Java开发App的缺点
在某些场合下,使用纯Java开发Android应用程序不完美,比如:
- 有高性能算法,Java语言无法满足
- 有跨平台需求,希望将App移植到iOS
- 已有代码的重用
1.3 引入NDK
早在Android 1.6(2009年)时,google就提供了NDK(native development kit),NDK包括了一套Android的交叉编译环境和开发库,利用它可以编写C/C++程序,并编译成Android环境下使用的动态库,Java代码通过Jni规范,调用C/C++写的动态库。
目前最新的Android Studio 2.2中,集成了C/C++开发环境,开发人员在使用C/C++更加简单了。
2. 课程内容
NDK中文官方开发技术文档地址
下载配置NDK
配置NDK
如果不配置NDK路径,会报NDK没有配置错误
JNI开发HelloWorld
把 Include C++ support的勾打上
选择C++11和Toolchain Default均可,C++11有更多的新特性和功能
点击Finish后,进入工程目录,如图所示,除了java文件夹外多了一个cpp文件夹,cpp就是存放c和c++代码的文件夹
配置NDK开发环境中遇到的坑
Failed to find CMake
什么,CMake是什么鬼,原来,在Android Studio 2.2 后,NDK开发更加人性化了,使用了CMake,一款外部构建工具,可与 Gradle 搭配使用来构建原生库。如果您只计划使用 ndk-build,则不需要此组件。还有LLDB,一种调试程序,Android Studio 使用它来调试原生代码。
点击Install CMake and sync project,提示如下错误
|
|
原来是我使用了代理,因为之前Google的链接需要翻墙才能够使用,所以配置了某代理,但是该代理不管用,在设置中把代理去掉即可。在Google在中国开了发布会后,Google的链接可以使用了,Android开发官网也可以上了,而且翻译了大量的技术文档,方便了英语不太好的同学
打开 SDK Manager,安装上CMake和LLDB
更多更详细的NDK开发文档,请看Android官方中文文档向您的项目添加 C 和 C++ 代码
2.3 Android Java代码调用C++代码
Java部分代码
|
|
C++部分代码
|
|
2.4 C++代码调用Java代码
Java代码
|
|
C++代码
|
|
2.5 Java和C++字符串转换
|
|
2.6 javah和javap
javah用于生成native接口定义,比如
|
|
javap用于生成java函数的签名,比如
|
|