第一次学习使用ndk,记录下
1. 编写native代码
(1)在需要调用native方法的类中,声明native方法
public class JniKit {
public native static String helloWorld();
static {
Log.e("JniKit", "JniKit 第一次加载库");
System.loadLibrary("JniDemo");//加载so库
}
}
(2)使用javah命令生产对应的.h文件
①cd 到Java代码的目录下
②使用命令生成对应的文件,命令为 javah -jni 完整包名.类名
生成对应的h文件
(3)新建一个jni的文件夹,主要存放c/c++文件
(4)新建一个c/cpp文件实现native方法
#include "com_sunxuedian_ndk_test_jni_JniKit.h"
JNIEXPORT jstring JNICALL Java_com_sunxuedian_ndk_1test_jni_JniKit_helloWorld(JNIEnv * env, jobject object){
return (*env)->NewStringUTF(env, "NDK --》 HelloWorld!");
}
2. 在app的gradle文件中配置ndk
android {
compileSdkVersion 26
buildToolsVersion "26.0.0"
defaultConfig {
applicationId "com.sunxuedian.ndk_test"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ndk{
moduleName "JniDemo" //设置生成的文件名
ldLibs "log","z","m"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
需要在gradle.properties文件中添加一个配置
#要使用ndk进行编译,需要添加这个配置
android.useDeprecatedNdk=true