JNI入门(一)

来源:互联网 发布:种子结构网络教研总结 编辑:程序博客网 时间:2024/06/07 22:33

       本文主要介绍作者写demo过程中遇到的问题和注意事项,其他不作赘述,所用环境为 Android Studio 2.2.3,要生成so库文件还需要NDK和Cmake环境配置.

1.环境配置好后现在本地新建一个类,里面放一个 native方法,static 或 非static 这个无所谓,大致如下:

package com.jnitest.jni.nativetest2;public class JniUtil {    static {        System.loadLibrary("test2");//test2 是你生成的so文件的名字,这个在当前moudle 的gradle里面配置    }    public static native String getJniString();}

 2.生成头文件,直接打开as 的terminal终端,进入到mian文件夹下输入指令 :   javah -d jni -classpath .F:\AndroidStudio-2.3\sdk2017\platforms\android-25\android.jar;F:\AS_Projet\JNITest\app\build\intermediates\classes\debug com.jnitest.jni.nativetest2.JniUtil 回车 然后就在main文件夹下生成jni文件夹,里面有一个 .h文件,在这个文件夹下新建一个c++ sourcefile , 注意 c++文件名最好和头文件名保持一致,内容如下:

#include <com_jnitest_jni_nativetest2_JniUtil.h>
JNIEXPORT jstring JNICALL Java_com_jnitest_jni_nativetest2_JniUtil_getJniString
        (JNIEnv * env, jclass){
    return env ->NewStringUTF("测试代码");
}

另外在gradle的defaultConfig 节点下配置:

ndk {

        moduleName "test2"   //对应上面的test2

        abiFilters 'x86'      //这个根据需要进行配置,我这里使用模拟器,内核是x86的,如果不配置,会默认生产所有的内核

}

3.然后在你想要操作的界面调用native 方法,最后在build 菜单下 make 当前moudle  编译完成后会在 当前moudle的build/intermidiates/ndk/x86/*.so  生成so文件,点击运行,就会在界面显示native 方法里面返回的"测试代码"字符串.


参考资料如下,在此感谢作者的分享:

http://blog.csdn.net/jiabailong/article/details/7986350

http://mt.sohu.com/it/d20170404/131987637_488164.shtml

http://www.cnblogs.com/kevin-chen/p/kevin-chen.html



原创粉丝点击