关于NDK开发好处,这里就不再阐述了。直接进入话题,Android NDK编程环境搭建和编写第一个例子。 开发环境:Android Sudio 3.0.1 一、环境搭建 俗话说 “工欲善其事,必先利其器” ,首先我们得先下载 ndk,这个可以去官网下载,也可以直接在 Android Studio 里面下载。 在Setting,找到Android SDK 安装后 我已经安装NDK。如果还没有安装配置过NDK,Android Studio会提示下载Android NDK. 我们通过命令来检查ndk是否按照成功 这样就表示NDK已经安装成功了。 为了能省去在控制台输入命令的麻烦。我们可以借助Android Studio的插件功能。来配置javah -jni和ndk -build命令。 在External Tools下配置。进入Settings–>Tools–>ExternalTools,点击+号增加。 1、javah -jni命令 javah -jni命令,根据java文件生成.h头文件的,会自动根据java文件中的类名与方法名生成对应的C/C++里面的方法名。 参数配置及其含义:
使用方式:选中java文件—>右键—>External Tools—>javah-jni,将生成jni文件夹以及文件夹下的 包名.类名的.h头文件 。 2、ndk -build命令 ndk -build命令,是根据C/C++文件生成so文件的。下面是参数配置及其含义:
使用方式:选中C/C++文件—>右键—>ExternalTools—>ndk-build,将在main文件夹下生成libs文件夹以及多个so文件,我们可以移动至jniLibs目录。 二、创建项目 创建一个访问本地C/C++方法的java类。 该类的getStringFromC会报错提示,这个我们不用理会。然后对该文件执行javah -jni操作,生成对应的.h头文件。 生成.h头文件 生成.h头文件 创建c或c++文件 在jni文件夹下,新建一个.c或.cpp(c++)的文件,来实现.h文件里声明的方法: 把.h文件里面声明的方法拷贝到新建的c文件里面,然后在文件里面引入.h文件,如下图: 到这里,.h文件和c++文件我们已经创建完毕,接下来我们生成so文件。 需要在这个jni目录下增加两个文件,Android.mk和Application.mk。 Android.mk
Application.mk
生成so文件 对C++文件执行ndk-build操作,生成相应的so文件 如图,在main/libs目录下生成了多个so文件,名字为lib+我们指定的库名。 这时候我们可以生成的main/libs文件夹内的东西复制到app/libs下,并删除main下新生成的jni、libs、obj三个文件夹。 配置app/gradle
}
调用 在Activity中测试调用,在TextView上显示我们通过C++代码实现的方法getStringFromC获取字符串。
效果: 测试能正确获取到aikaifa字符串,说明调用成功了。那么我们可以把JniTest类以及so文件提供给别人去使用了,其他人看不到我们代码逻辑,这样能很好的保护我们的源码。这应该是ndk开发的一大好处之一。 【END】 |
|