美文网首页NDK && JNI
Android Studio 2.2 NDK入门(一) 官方DE

Android Studio 2.2 NDK入门(一) 官方DE

作者: wecode | 来源:发表于2017-04-20 11:02 被阅读30次

AS 新版本对NDK 的支持更加友好和方便


跟着我左手右手一个慢动作,开始官方的NDK DEMO

step1: 环境设置:打开AS设置(ctrl+alt+s或者AS右上角->File->Setting)
NDK setting.png
step2: new project
select c++ support.png
step3: 一路next,最后完成前有个C++ standard,需要勾选两个选项:
C++ standard.png
step4: 解析目录结构

MainActivity.java中已经存在了一个native的函数public native String stringFromJNI();
该函数就是一个用C++实现的接口,该库为默认生产的nativa-lib

工程目录结构中,有两个重要的文件夹/package:

工程目录结构.png

CPP文件夹类似与之前的jni文件夹,其实是一个意思,存放c/c++的文件目录
CMakeLists.txt的作用和Android.mk类似,也类似与makefile文件,是Gradle编译链接.so库的申明文件,通过它可以实现link

native-lib.cpp中实现了public native String stringFromJNI();

具体为:

extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_mobaolibo_jni_MainActivity_stringFromJNI(
        JNIEnv *env,
        jobject /* this */) {
    std::string hello = "Halo,C++";
    return env->NewStringUTF(hello.c_str());
}
step5: 编译

运行之后在模拟器中能看到中间的text显示Halo,C++

稍微爬个阶

native-lib.cpp中的函数名称为Java_com_xx_func
实际上,该命名方式为Java_class_package_name_func:class_package_name对应实现native类的包名,func为函数名

该命名可以由javah自动生成。有两种方式实现
1.较笨的方法:进入工程目录app\build\intermediates\classes\debug,使用javah命令:

javah -d jni class.package.ClassName

2.在AS中配置javah

ctrl+alt+s打开setting,在Tools下找到External Tools
点击加号+添加
其中Parameters,有多种配置方法,可以百度之。反正我试了几种,均没有成功过,直接使用第一种方式
配置好之后,在project树中右键能看到
javah.png 使用javah.png

简单的解析就先这样。因为水平有限,各位看官如有任何疑问和建议请啪啪打脸。
下一篇为增量更新的应用:http://www.jianshu.com/p/867403e3eff1

相关文章

网友评论

    本文标题:Android Studio 2.2 NDK入门(一) 官方DE

    本文链接:https://www.haomeiwen.com/subject/zxgkzttx.html