NDK配置及JNI简单实例

解决javac、javah不是内部命令

在用户变量中添加C:\Program Files\Java\jdk1.7.0_80

在系统变量的PATH中添加C:\Program Files\Java\jdk1.7.0_80\bin

NDK配置

第一步在SDKManager中下载NDK

第二步在local.properties中添加

ndk.dir=D\:\\AndroidSDK\\ndk-bundle

第三步在gradle.properties中添加

android.useDeprecatedNdk=true

在build.gradle(app)中添加

  defaultConfig {
        applicationId "com.example.jnitest"
        minSdkVersion 16
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"
ndk{
    abiFilters "armeabi", "armeabi-v7a", "x86"
}
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    sourceSets {
        main {
            jniLibs.srcDir 'libs'
        }
    }

JNI简单实例

第一步写类

static {
    System.loadLibrary("Hello"); //Android.mk文件中的LOCAL_MODULE
}
public native static String getStrFromJNI();

第二步在main文件下创建jni目录里面存放

1.Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := Hello  //lib模块名
LOCAL_SRC_FILES := Hello.c   //加载的c文件
include $(BUILD_SHARED_LIBRARY)

2.Application.mk

APP_ABI:= armeabi-v7a x86 arm64-v8a x86_64
APP_PLATFORM:= android-22

3.Hello.c

#include<studio.h>
#include<jni.h>

jstring Java_com_example_jnitest_JNITest_getStrFromJNI(JNIEnv* env,jobject jobj){
 char* text="I am from c";
 return (*env)->NewStringUTF(env,text);
}

第三步

进入到java文件中 执行javah -jni com.example.jnitest.JNITest生成.h头文件

第四步执行ndk-build生成.so文件

第五步复制.so文件到libs目录下

上一篇:5G音视频时代还不学NDK开发吗?面试必问


下一篇:最新Android面试题整理,看这一篇就够了!