美文网首页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