Android Studio NDK环境搭建

Android Studio 2.2正式发布以后,已经对C/C++有了完善的支持,可以将C和C++编译成native library,打包到APK中。Java code可以通过JNI调用native library中的API。
Android Studio默认使用CMake编译native library,不过同样也支援ndk build。

环境准备

NDK Install

NDK的安装有两种方式:

  1. 通过Android Studio来下载;
  2. 从官网下载NDK的安装包,解压到你指定的位置;然后在"Project Structrue" -> "Android NDK Location"进行配置;
Android Studio NDK环境搭建_第1张图片

CMake & LLDB Install

在 "SDK Manager"->"SDK Tools"中选中CMake 和 LLDB进行下载;

Android Studio NDK环境搭建_第2张图片
  • CMake: 外部构建工具;
  • LLDB: Android Studio上调试本地代码的工具;

创建项目

创建支持native code的项目和普通的Android Studio项目基本一致,需要注意在"Config new project"时需要选中"Include C++ Support";

Android Studio NDK环境搭建_第3张图片

其他item按照普通项目创建就可以;
项目创建好以后,可以在"Android"视图看到"cpp"和"CMakeLists.txt"为native project所增加的;

Android Studio NDK环境搭建_第4张图片

添加新的Native API

在MainActivity.java中,新增一个API;

public native String stringFromJNI_Sample_1();

选中这个API名字,等红色的灯泡图标出现后,用弹出菜单的第一项来产生对应的C/C++ prototype;

Android Studio NDK环境搭建_第5张图片

这样,在native_lib.cpp中,会产生对应的代码

JNIEXPORT jstring JNICALL
Java_com_example_zengping_jnidemo_MainActivity_stringFromJNI_1Sample_11(JNIEnv *env,
jobject instance) {
// TODO
return env->NewStringUTF(returnValue);
}

经过实际测试,这样产生的代码,在使用时,会有crash的问题,需要把"JNIEXPORT jstring JNICALL"替换为工程产生时使用的原型:

extern "C"
jstring
Java_com_example_zengping_jnidemo_MainActivity_stringFromJNI_1Sample_11(JNIEnv *env,
jobject instance) {
// TODO
return env->NewStringUTF(returnValue);
}

修改后,在java层就可以正常使用新增的API了。

你可能感兴趣的:(Android Studio NDK环境搭建)