美文网首页Android
AndroidNDK文件代码的含义

AndroidNDK文件代码的含义

作者: ZoneWonderful | 来源:发表于2017-05-13 00:22 被阅读0次

    接着上篇
    .h文件
    借图,借内容

    .h文件.png
    如图,已经根据我们的java类生成了对应的.h文件,文件名为包名类名.h,我们可以手动改名为jnitest.h,里面只有一个方法,返回值为String(jstring),方法名为Java类的包名类名方法名(包名中的分级不是用.而是_),前面两个参数是C++里面必须有的(JNIEnv代表指向JVM的指针,jclass是调用该方法的java对象),第三个就是我们java类的方法里面的参数Object。注意,这是java函数与C++函数对应的静态注册方法,即通过特定的规则来写,此处方法名可以随意起名字,然后还可以用动态注册的方式关联两个方法(显然,静态注册要简单一些)。

    .c文件


    .c文件.png

    return的内容是我自己加上的,为了个 hello Jni--->C!,又浪费我好多时间[大哭]
    .C的内容从.h文件拷贝过来的,具体含义同上

    Android.mk文件

    LOCAL_PATH := $(call my-dir)     // 设置当前的编译目录(Android.mk所在的目录) 
    
    include $(CLEAR_VARS)            // 清除LOCAL_XX变量(LOCAL_PATH除外)
    LOCAL_MODULE := JNI_ANDROID_TEST  // 指定当前编译模块的名称  
    LOCAL_SRC_FILES =: jnitest.cpp    // 编译模块需要的源文件
    include $(BUILD_SHARED_LIBRARY) // 指定编译出的库类型,BUILD_SHARED_LIBRARY:动态库;BUILD_STATIC_LIBRARY:静态库, BUILD_EXECUTEABLE指:可执行文件
    

    Application.mk(没图。。。)
    APP_ABI有四种类型(默认armeabi),armeabi、armeabi-v7a、x86、mips,设置时以空格隔开,all表示所有。该文件中有个可选配置的APP_MODULES,类似于上面Android.mk文件中的LOCAL_MODULE,以空格隔开,且会覆盖掉Android.mk文件中的LOCAL_MODULE设置(比如Android.mk文件中的写了两个jni库的配置,LOCAL_MODULE := JNI1、LOCAL_MODULE := JNI2,而Application.mk中设置的APP_MODULES := JNI1,则只能生成JNI1的so文件,要生成JNI2的so文件的时候会报错,除非写成APP_MODULES := JNI1 JNI2,这里我们直接省略默认使用Android.mk中的)。
    关于Android.mk,Application.mk的博客
    NDK开发之Application.mk文件详解
    Android.mk解析

    相关文章

      网友评论

        本文标题:AndroidNDK文件代码的含义

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