Android Studio 项目中要使用第三方的SO文件,总体分为两步:
1). 添加
添加 so 到项目中,并在模块 "编译配置文件" 中设置 so 文件所在的目录, 以便在生成最终的 apk 文件时能将 so 文件包进去。
a). so 文件放到哪目录不重要,勿须听网上那些大忽悠转来转去的。
只需要在编译配置文件中指定路径即可!如: jniLibs.srcDirs = ['./libs_so']
2). 调用
将 so 文件的导出函数封装成 java 类,即编写 JNI 类,以便在代码中调用 so 中的函数。
a). 有些大公司提供的 SO 库,是顺带提供这个类的,通常是 jar 文件的形式, 也有可能是 java 文件的形式。
b). 貌似有 Android Studio 插件, 可实现自动 导出SO文件为 JNI 类的功能。
c). 自己编写 JNI 类Java文件可以参考: http://www.open-open.com/lib/view/open1460553152389.html 的 STEP2 一节。
d). 自己编写 JNI 类时, 类的包名有规定,包名不能随便写,必须对应于 SO 文件中的导出函数名称。否则:UnsatisfiedLinkError: No implementation found
举个例子:
SO 中的函数名如:
Java_com_example_hellojni_HelloJni_stringFromJNI(****)那 JNI 类的属性如下:
包名:com.example.hellojni
类名:public native String stringFromJNI();
完整的类如下所示:
package com.example.hellojni; public class HelloJni { public native String stringFromJNI(); static { System.loadLibrary("hello-jni"); } }