下面是一个简单的示例,展示了如何在Android应用程序中使用动态加载和卸载库:
NativeLibManager
的Java类,用于加载和卸载库。public class NativeLibManager {
public static void loadLibrary(String libName) {
System.loadLibrary(libName);
}
public static void unloadLibrary(String libName) {
System.unloadLibrary(libName);
}
}
MainActivity
或其他任何需要使用库的地方,调用NativeLibManager
类的方法加载和卸载库。public class MainActivity extends AppCompatActivity {
private static final String LIB_NAME = "mylibrary";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 加载库
NativeLibManager.loadLibrary(LIB_NAME);
// 调用库中的函数
MyLibraryWrapper.myLibraryFunction();
// 卸载库
NativeLibManager.unloadLibrary(LIB_NAME);
}
}
MyLibraryWrapper
的Java类,用于封装库中的函数。public class MyLibraryWrapper {
public static native void myLibraryFunction();
}
jni
文件夹下创建一个名为mylibrary.c
的C文件,实现myLibraryFunction
函数。#include
JNIEXPORT void JNICALL Java_com_example_myapp_MyLibraryWrapper_myLibraryFunction(JNIEnv *env, jobject obj) {
// 在此处实现函数的功能
}
libmylibrary.so
或mylibrary.dll
)位于正确的位置。请注意,这是一个简单的示例,用于演示动态加载和卸载库的基本概念。实际应用中,可能需要更复杂的处理逻辑,如处理库文件的版本兼容性和错误处理。