动态加载:https://blog.csdn.net/weixin_44901971/article/details/127557644
build.gradle 配置so库的文件目录 src>main>libs,也可以不配置,则放入src>main>jniLibs目录中
build.gradle 配置so库的文件目录 src>main>libs,也可以不配置,则放入src>main>jniLibs目录中
android { sourceSets{ main{ jniLibs.srcDirs "libs" } } ... }
so库一般会给出比较完整的,比如:给出全部平台的so库文件。放在libs或jniLibs目录。
arm-64-v8a/libbspatchtool.so
armeabi-v7a/libbspatchtool.so
x86/libbspatchtool.so
x86_64/libbspatchtool.so
加载SO库
package com.tools.bspatchtool; /** * 加载so库 * */ public class BsPatchUtil { // 单例 private static final BsPatchUtil instance = new BsPatchUtil(); private BsPatchUtil() { } public static BsPatchUtil getInstance() { return instance; } static { // loadLibrary 加载so库,libbspatchtool.so,只写bspatchtool,lib和.so后缀不需要写。如果libbspatchtool.so还依赖其他库,那么也要loadLibrary()进来。 System.loadLibrary("bspatchtool"); } // 必须使用 native 关键字,对应so库中的函数。 public native int bsPatch(String oldfile, String newfile, String patchfile); }