android studio在原有项目中使用cmake构建JNI
android studio用Javah创建.h头文件和编译运行
android studio继续深入ndk打包so库和jar Api
貌似android studio是从2.2版本开始引入cmake lldb,我门这些程序猿终于可以轻松一点的进行JNI开发了。我现在用的是2.3的,好像比2.2更成熟了一些。
首先如图下载安装三个相关插件:
CMake:编译配置工具
LLDB:调试工具
创建新项目,如下图选中框中的部分:
然后一路next到下一步根据自己需要选择:
C++ Standard
指定编译库的环境,其中Toolchain Default使用的是默认的CMake环境。建议选择C++ 11,表示支持C++ 11库。
Exceptions Support
如果选中复选框,则表示当前项目支持C++异常处理,建议勾选。
Runtime Type Information Support
同理,选中复选框,项目支持RTTI,建议勾选。
创建项目完成后默认如下结构,自动生成cpp代码和java中的native代码:
static { System.loadLibrary("native-lib"); }
表示导入native-lib的库文件,以便使用库中的api。
public native String stringFromJNI();
表示库中提供的native方法,它所对应的cpp函数如下,函数名有严格的格式对应。
JNIEXPORT jstring JNICALL Java_com_example_admin_jnitest_MainActivity_stringFromJNI( JNIEnv* env, jobject /* this */) { std::string hello = "Hello from C++"; return env->NewStringUTF(hello.c_str()); }
AS提供了一个快速创建函数的快捷键:alt+enter,效果如下:
选择第一项后在cpp文件中自动生成代码,当然自动生成的代码需要修改一下,尤其是native方法需要被如下代码块包含,否则报错:
extern "C"{ }