第一次写博客,2017.12.14,纪念一下^-^
废话不多说,直接开搞:
如何生成你的第一个.so文件?
1、配置ndk
2、编辑源码
3、生成.so文件
一、配置ndk
参考:http://blog.csdn.net/tongseng/article/details/53005123
二、编辑源码
1、创建.so文件的工具类,并生成.h文件
2、创建jni文件
3、把.h文件拖进jni文件夹,并创建main.c文件
4、在main.c文件书写以下代码
#include "com_um_jkdemo_JniText.h"//注意替换成自己的 引入.h文件
JNIEXPORT jstring JNICALL Java_com_um_jkdemo_JniText_getJniString//注意替换成自己的
(JNIEnv *env, jclass jclz){
return (*env)->NewStringUTF(env,"String from JNI");//返回值
}
5、配置gradle
android {
compileSdkVersion 26
buildToolsVersion "27.0.1"
defaultConfig {
applicationId "com.um.jkdemo"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ndk{
moduleName "jni_text"//moduleName 和System.loadLibrary("Name");中的Name要保持一致
ldLibs"log","z","m"
abiFilters"armeabi","armeabi-v7a","arm64-v8a","mips","mips64","x86","x86_64"
}
}
//防止报错(Error:(81) Android NDK: Application targets deprecated ABI(s): mips64 armeabi mips)
splits {
abi {
enable true
reset()
include 'armeabi','armeabi-v7a', 'arm64-v8a', 'mips', 'mips64','x86', 'x86_64' //select ABIs to build APKs for
universalApk true //generate an additional APK that contains all the ABIs
}
}
sourceSets { main { jni.srcDirs = ['src/main/jni', 'src/main/jni/JniText'] } }
三、生成.so文件
1、直接运行项目得到.so文件
2、路径
注意事项
1、gradle中的moduleName 一定要和 System.loadLibrary(“Name”);中的name一摸一样,区分大小写。
2、main.c文件中的.h文件一定要替换成自己的,以及方法名
3、执行javah命令时区分大小写
参考
http://blog.csdn.net/sw5131899/article/details/77183352
end