Android项目里怎么使用.so? 原创

HMOS_Professor
发布于 2025-4-1 09:39
1296浏览
0收藏

在 Android 项目中使用 .so 文件,主要有以下步骤:
1.生成或获取 .so 文件:
使用 Android NDK:如果是自行开发 C/C++ 代码生成 .so 文件,首先要确保安装了 Android NDK。在项目的 app 目录下创建 jni 目录,在其中创建 Android.mk 和 Application.mk 文件来配置编译参数,同时创建 *.c 或 *.cpp 文件编写 C/C++ 代码,最后在终端使用 ndk - build 命令编译生成 .so 文件。
使用第三方工具链:也可以使用 CMake、Makefile 等第三方工具链来编译生成 .so 文件,可根据项目需求选择和配置。
直接获取:若使用第三方提供的 .so 文件,直接将其准备好即可。
2.将 .so 文件添加到项目中:
手动添加:将 .so 文件放置在 libs 目录下。该目录下通常会有适用于不同架构的子目录(如 arm64 - v8a、armeabi - v7a 等),将对应的 .so 文件存放在相应架构的子目录中。
通过 build.gradle 配置:在 build.gradle 文件中的 android 下添加 jniLibs.srcDirs = [‘libs’],指定 .so 文件的目录。
3.创建 Java 层的接口:
为了能在 Java 层调用 .so 文件中的函数,需要创建一个 Java 接口,在接口中定义要调用的函数及参数。

public class MainActivity extends AppCompatActivity {
    // 加载so文件
    static {
        System.loadLibrary("myso");
    }
    // 声明native方法,对应so文件中的函数
    public native String getMessage(); 

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 调用JNI函数
        String message = getMessage(); 
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

4.生成 JNI 头文件:
在项目的根目录下打开终端,执行 javah -jni -classpath <path - to - class - file> -o <output - file> <package - name>.<class - name> 命令。其中,<path - to - class - file> 是包含接口的 class 文件的路径,<output - file> 是生成的 JNI 头文件的输出路径,<package - name>.<class - name> 是包名和类名。
5.实现 JNI 接口:
在 C/C++ 层根据 JNI 头文件中生成的函数签名,实现对应的函数。注意函数名的命名规则为 Java_packageName_ClassName_functionName,例如:

#include <jni.h>
JNIEXPORT jstring JNICALL
Java_com_example_myapplication_MainActivity_getMessage(JNIEnv *env, jobject instance) {
    return (*env)->NewStringUTF(env, "Hello from C!");
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

6.在 Java 代码中加载并调用 .so 文件中的函数:
使用 System.loadLibrary(“libraryName”) 方法加载 .so 文件,其中 libraryName 是 .so 文件去掉 lib 前缀和 .so 后缀的名称。加载后,就可以在 Java 代码中调用在接口中定义的 native 方法,从而调用 .so 文件中的函数。

此外,如果使用 Android Studio 开发,还可以在创建项目时选择 Native C++ 模板,这样 Android Studio 会自动生成 JNI 相关的文件和配置,方便开发者快速开始使用 .so 文件。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2025-4-1 09:40:54修改
收藏
回复
举报


回复
    相关推荐