android studio如何调用so文件
时间: 2025-06-28 15:11:18 浏览: 1
### 如何在 Android Studio 中加载和使用 .so 文件
#### 加载 SO 库
为了使应用程序能够访问本地库的功能,在应用启动时或首次需要这些功能之前,必须通过 `System.loadLibrary` 方法来加载 `.so` 文件。假设有一个名为 `native-lib.so` 的共享库,则可以在 Java 或 Kotlin 类中这样操作:
```java
static {
System.loadLibrary("native-lib");
}
```
此代码通常放置于包含原生方法声明的类静态初始化块内。
#### 配置 Gradle 构建脚本
为了让 Gradle 和 CMake 正确识别并处理 `.so` 文件,需调整模块级 build.gradle 文件的内容。具体来说,应该指定源集路径以及链接选项等设置[^2]:
```groovy
android {
...
sourceSets {
main {
jniLibs.srcDirs = ['src/main/jniLibs']
}
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
}
dependencies {
...
}
```
这里设置了 `jniLibs.srcDirs` 属性指向存储 `.so` 文件的位置,并指定了用于构建项目的 CMake 脚本路径。
#### 创建 JNI 接口函数
当希望从 Java/Kotlin 侧调用 C/C++ 编写的逻辑时,就需要定义一些桥接接口——即所谓的 JNI 函数。例如,下面是一个简单的例子展示了如何实现加法运算并将结果返回给上层语言:
```c++
extern "C"
JNIEXPORT jint JNICALL
Java_com_example_myapp_MainActivity_add(JNIEnv *env, jobject /* this */, jint a, jint b) {
return a + b;
}
```
这段代码片段应保存在一个 `.cpp` 文件里,并确保其命名遵循特定模式以便被正确映射至对应的 Java/Kotlin 方法名之上。
#### 将预编译好的 .so 文件放入项目结构
对于已经存在的 `.so` 文件,可以直接将其复制粘贴到上述配置过的目录下(如 `src/main/jniLibs/armeabi-v7a/libnative-lib.so`),之后再执行同步命令让 IDE 更新索引即可完成集成过程[^1]。
#### 使用 CMake 进行编译
如果打算自己编写 C/C++ 源码并通过 NDK 工具链来进行交叉编译的话,则可以借助 CMake 来管理整个流程。这涉及到创建合适的 `CMakeLists.txt` 文档以及其他可能必要的辅助文件(比如 `Android.mk`, `Application.mk`)。关于这部分的具体细节,请参阅相关文档获取指导[^3]。
阅读全文
相关推荐

















