请问一下AndroidStudio中如何调用so文件
在 Android Studio 中调用 .so
(共享库)文件涉及几个步骤,包括将 .so
文件添加到项目中、配置 CMake
或 ndk-build
、以及在 Java/Kotlin 中加载和调用这些库。下面是详细的步骤:
1. 将 .so
文件添加到项目中
创建
jniLibs
文件夹:- 在
app/src/main
目录下创建一个名为jniLibs
的文件夹(如果尚不存在)。 - 在
jniLibs
文件夹中,为不同的 CPU 架构(如armeabi-v7a
,arm64-v8a
,x86
,x86_64
)创建相应的子文件夹。
示例目录结构:
cssapp/src/main/ ├── jniLibs/ │ ├── armeabi-v7a/ │ ├── arm64-v8a/ │ ├── x86/ │ ├── x86_64/
- 在
将
.so
文件放入对应的子文件夹:- 将你的
.so
文件(例如libexample.so
)放入相应的架构文件夹中。
- 将你的
2. 配置 CMake
或 ndk-build
如果你需要构建 .so
文件,你可以使用 CMake
或 ndk-build
。
使用 CMake
添加
CMakeLists.txt
文件:- 在项目的根目录或
app
模块目录下创建或编辑CMakeLists.txt
文件。
示例
CMakeLists.txt
文件:cmakecmake_minimum_required(VERSION 3.4.1) # 添加库文件 add_library(example SHARED src/main/cpp/example.cpp) # 包含系统库 find_library(log-lib log) # 链接库 target_link_libraries(example ${log-lib})
- 在项目的根目录或
配置
build.gradle
文件:- 在
app/build.gradle
文件中添加externalNativeBuild
配置。
示例
build.gradle
配置:groovyandroid { ... externalNativeBuild { cmake { path "src/main/cpp/CMakeLists.txt" } } }
- 在
使用 ndk-build
创建
Android.mk
和Application.mk
文件:- 在
app/src/main
目录下创建jni
文件夹,里面放置Android.mk
和Application.mk
文件。
示例
Android.mk
文件:makefileLOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := example LOCAL_SRC_FILES := example.cpp include $(BUILD_SHARED_LIBRARY)
示例
Application.mk
文件:makefileAPP_ABI := all
- 在
配置
build.gradle
文件:- 在
app/build.gradle
文件中添加externalNativeBuild
配置。
示例
build.gradle
配置:groovyandroid { ... externalNativeBuild { ndkBuild { path "src/main/jni/Android.mk" } } }
- 在
3. 在 Java/Kotlin 中加载和调用 .so
文件
加载库:
- 使用
System.loadLibrary
在 Java/Kotlin 中加载.so
文件。
示例:
javapublic class NativeLib { static { System.loadLibrary("example"); // 库名称应为不带前缀和扩展名的名称 } public native void exampleFunction(); }
- 使用
定义本地方法:
- 在 Java/Kotlin 类中声明原生方法,并在
.cpp
文件中实现。
示例 Java/Kotlin:
javapublic class NativeLib { static { System.loadLibrary("example"); } public native void exampleFunction(); }
示例 C++:
cpp#include <jni.h> extern "C" JNIEXPORT void JNICALL Java_com_example_NativeLib_exampleFunction(JNIEnv *env, jobject obj) { // 实现代码 }
- 在 Java/Kotlin 类中声明原生方法,并在
4. 编译和运行
- 确保你的
.so
文件和配置正确,然后编译你的应用。使用Build
>Make Project
或Build
>Rebuild Project
来编译应用,并确保.so
文件被正确包含在 APK 中。
总结
在 Android Studio 中调用 .so
文件需要将 .so
文件放入项目的 jniLibs
文件夹中,配置 CMake
或 ndk-build
以编译和链接库,并在 Java/Kotlin 中使用 System.loadLibrary
方法加载库。确保库和配置正确,以便在编译和运行时没有问题。
关键字
Android Studio,.so
文件,JNI,CMake,ndk-build,System.loadLibrary
,库配置,Java/Kotlin,原生方法