Android Studio 5步导入 .SO 原生代码库文件

来源:互联网 发布:高中生电脑编程培训 编辑:程序博客网 时间:2024/04/28 04:16

Android Studio 项目中要使用第三方的SO文件,总体分为两步:


1). 添加

添加 so 到项目中,并在模块 "编译配置文件" 中设置 so 文件所在的目录, 以便在生成最终的 apk 文件时能将 so 文件包进去。

a).  so 文件放到哪目录不重要,勿须听网上那些大忽悠转来转去的。

只需要在编译配置文件中指定路径即可!如: jniLibs.srcDirs = ['./libs_so']
b).  只要指定的路径里面有 so 文件就能成功被打包到最终的 apk 文件中(注意要添加一级CPU架构目录)。



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");    }}














0 0