工程下载https://download.csdn.net/download/cnicfhnui/10422621
一、Android Studio 创建so库,调用so库
第一步
先下载NDK开发包,下载地址:https://developer.android.google.cn/ndk/downloads/
上面网址如果失效,直接百度“NDK下载”,找到谷歌开发者官网,NDK下载,选择“NDK Revision History.”可以下载历史版本,然后根据自己的系统选择下载,我下载的是android-ndk-r14b版本。下载后解压到英文目录。打开android studio->file->project structure,选择SDK Location->Android NDK location:选择刚才解压到的目录
在工程local.properties文件中添加
android.useDeprecatedNdk=true
创建一个新java类,JniTest
其中的方法与库的名字后面都可以改的,先写出你要的方法名就行了,我写了两个,一个加法返回,一个返回固定字符串。
然后根据这个类来生成JniTest.h
菜单->Build->Make Project,编译完成后会生成JniTest.class
打开Android Studio中的Terminal终端,里面cd 到你工程的java目录,执行javah com.jnijartest.myapplication.JniTest
D:\WebServer\MyApplication>cd app/src/main/java
D:\WebServer\MyApplication\app\src\main\java>javah com.jnijartest.myapplication.JniTest
如果提示:错误: 编码GBK的不可映射字符,把JniTest类中的注释删除掉
执行成功会生成com_jnijartest_myapplication_JniTest.h文件
在MyApplication\app\src\main目录中新建文件夹jni,把com_jnijartest_myapplication_JniTest.h放进去,并且手动创建一个com_jnijartest_myapplication_JniTest.c
打开com_jnijartest_myapplication_JniTest.c,实现.h中的方法
在jni文件夹下新建Android.mk和Application.mk文件
Android.mk
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) TARGET_PLATFORM := android-3 LOCAL_MODULE := JniTest LOCAL_SRC_FILES := com_jnijartest_myapplication_JniTest.c LOCAL_LDLIBS := -llog include $(BUILD_SHARED_LIBRARY)
Application.mk
APP_ABI := arm64-v8a armeabi armeabi-v7a mips mips64 x86 x86_64 APP_PLATFORM := android-14打开build.gradle,在android中添加
sourceSets{ main{ jniLibs.srcDirs = ['libs'] } } externalNativeBuild { ndkBuild { path 'src/main/jni/Android.mk' } }
在终端中执行ndk-build会生成各个平台的SO库
最后就是调用啦
在MainActivity.java中实现+运行结果