有哪些方法可以导入so文件呢?LOCAL_PREBUILT_JNI_LIBS 并且详细讲一下方法原理
时间: 2023-07-30 09:09:35 浏览: 179
简单的ndk操作jni资料.txt
在Android开发中,导入.so文件的方法主要有两种:
1. 直接将.so文件复制到JNI目录下
2. 使用LOCAL_PREBUILT_JNI_LIBS进行导入
其中,第二种方法是比较常用的。下面详细介绍一下使用LOCAL_PREBUILT_JNI_LIBS导入.so文件的方法原理:
1. 在Android.mk文件中添加LOCAL_PREBUILT_JNI_LIBS
```
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := mylib
LOCAL_SRC_FILES := libmylib.so
LOCAL_PREBUILT_JNI_LIBS := $(LOCAL_PATH)/$(LOCAL_MODULE)
include $(PREBUILT_SHARED_LIBRARY)
```
2. 说明
- LOCAL_PREBUILT_JNI_LIBS:指定要导入的.so文件的路径
- $(LOCAL_PATH)/$(LOCAL_MODULE):指定.so文件的路径和名称(LOCAL_MODULE就是so文件的名称)
- include $(PREBUILT_SHARED_LIBRARY):编译时将.so文件复制到输出目录中
3. 原理
使用LOCAL_PREBUILT_JNI_LIBS导入.so文件时,Android.mk文件中的LOCAL_PREBUILT_JNI_LIBS变量会被赋值为.so文件的路径,同时在编译时使用include $(PREBUILT_SHARED_LIBRARY)命令将.so文件复制到输出目录中。在Java代码中调用System.loadLibrary("mylib")时,会在输出目录中查找名为"libmylib.so"的文件并加载。因此,使用LOCAL_PREBUILT_JNI_LIBS导入.so文件的原理就是将.so文件复制到输出目录中,然后在Java代码中加载.so文件。
阅读全文