jni加载第三方so_Android Studio JNI开发-1-引入第三方so文件

本文详细介绍了在Android开发中如何加载第三方SO库。步骤包括:将.so文件放入项目的libs目录,修改build.gradle配置,根据JNI方法名创建对应的Java本地方法,最后在Java代码中调用并测试。通过这些步骤,成功实现了第三方SO库在Android应用中的使用。
摘要由CSDN通过智能技术生成

Android开发过程经常会遇到将第三方的so文件引入到自己的项目中去,那么如何操作才能保证引入正常呢?

明确知道so库文件的文件名称

明确知道每个so文件中的方法名称,以及每个方法对应的全路径

第三方库的引用过程:

1.将所有的.so文件复制到具体某个Android模块下的libs文件夹下面;

将so文件复制.png

2.在该模块下的build.gradle文件下面添加对应的执行脚本:

//在app根目录下自动创建jniLibs文件夹,android模式下可见

sourceSets.main{

jniLibs.srcDirs = ['libs']

}

该脚本的功能是,如下图:

jniLibs自动生成.png

会自动创建jniLibs文件夹并且将libs下的so文件复制进去,并且在打包成apk文件的时候,系统会自动将jniLibs下的so文件复制到apk文件中的lib目录下:

apk文件的查看.png

3.根据已知jni的方法的全名称,创建对应的java本地方法

JNIEXPORT jstring JNICALL

Java_fmblzf_androidjni_MainActivity_stringFromJNI(

JNIEnv *env,

jobject /* this */) {

std::string hello = "Hello from C++";

return env->NewStringUTF(hello.c_str());

}

如上代码中的方法名称:Java_fmblzf_androidjni_MainActivity_stringFromJNI,根据jni的命名规则拆分如下:

包名:fmblzf.androidjni;

类名:MainActivity

类下面的方法名称:stringFromJNI

根据以上信息创建对应的类和native方法:

package fmblzf.androidjni;

public class MainActivity{

/**

* 静态加载so库文件

*/

static {

System.loadLibrary("native-lib");

}

public static native String stringFromJNI();;//是否静态不影响

}

4.基于以上3步,开始测试使用:

package com.fmblzf.androidndk;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

import com.fmblzf.androidndk.ndk.AndroidNDK;

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

String test = fmblzf.androidjni.MainActivity.stringFromJNI();

Log.e("MainActivity",test);

}

}

测试通过!

代码下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值