Android Studio下的 NDK 环境配置

JNI—Android Studio下的 NDK 环境配置

JNI与NDK的开发准备

NDK集成开发流程(AS)

详细流程

  1. 安装配置NDK
    1).
    https://github.com/inferjay/AndroidDevTools
    根据自己的系统选择
    在这里插入图片描述

    2). 解压NDK的zip包到非中文目录

    注意文件夹名字不能有空格

    3). 配置Path环境变量 : 解压后NDK的根目录----->ndk-build
    在这里插入图片描述
    在这里插入图片描述
    然后点击环境变量(建议配置在上面 用户变量,因为如果配置在系统变量的话,如果有一天你删除了系统变量的,那么会导致系统用不了,如果配置在用户变量,要进行删除时,如果用不了,只用重新创建一个用户就可以了,电脑还是可以使用。)
    在这里插入图片描述
    配置Path的原因就是可以通过cmd操作命令

    如果没有配置Path,不会弹出下面的信息,它会说命令没有被找到在这里插入图片描述

  2. 给AS配置关联NDK

    1). local.properties中添加配置

     ndk.dir=G\:\\android-ndk-r10(=号后面为ndk的解压路径)
    

在这里插入图片描述
2). gradle.properties中添加配置
在这里插入图片描述
兼容老的ndk(老的版本):android.useDeprecatedNdk=true

	android.useDeprecatedNdk=true
  1. 编写native方法:
	public class JNIS {

    	public native String helloJNI();

	}
  1. 定义对应的JNI

    1). 在main下创建jni文件夹

    2). 生成native方法对应的JNI函数声明头文件: 命令窗口中, 进入java文件夹

     	执行命令: javah com.atguigu.jnitests2.JNIS
    
     	生成头文件: com_atguigu_jnitests2_JNIS.h
    
     	函数声明: JNIEXPORT jstring JNICALL Java_com_atguigu_jnitests2_JNIS_helloJNI(JNIEnv *, jobject);
    

    3). 将生成的头文件转移到jni文件夹下

    4). 在jni下定义对应的函数文件: test.c

     #include "com_atguigu_jnitests2_JNIS.h"
    
     JNIEXPORT jstring JNICALL Java_com_atguigu_jnitests2_JNIS_helloJNI
    
     (JNIEnv * env, jobject jobj) {
    
     	return (*env)->NewStringUTF(env, "Hello from C");
    
     }
    

    5). 在jni文件夹下创建一个空的C文件: empty.c

     说明: 这是AS的bug, 必须至少2个C文件才能通过编译
    
  2. 指定编译的不同CPU

     defaultConfig {
    
     	ndk{
    
     	moduleName "HelloJni" //so文件: lib+moduleName+.so
    
     	abiFilters "armeabi", "armeabi-v7a", "x86" //cpu的类型
    
     	}
    
     }
    
  3. 编译生成不同平台下的动态链接文件

    1). 执行rebuild, 生成so文件

    2). so文件目录: build\intermediates\ndk\debug\lib…

  4. 调用native方法:

    1). 在native方法所在的类中加载so文件

     	static {
    
     	System.loadLibrary("HelloJni");
    
     	}
    

    2). 在Activity中调用native方法:

     	String result = new JNIS().helloJNI();
    
     Log.e("TAG", "result="+result);
    
发布了113 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42814000/article/details/105259159