Android 开发之JNI/NDK编程实战(三):Jni编程之调用第三方so库

本文详细介绍了在Android开发中调用第三方so库的具体步骤,并通过实例展示了遇到的问题及解决方法,包括新建项目、配置so库路径、实现调用以及错误分析。

    有时在项目中,我们不需要编写C++代码,而是由C++开发人员提供so库供我们调用,那如何调用第三方so库呢?本文以上文Android 开发之JNI/NDK编程实战(二): Jni编程之使用ndk+gradle生成so库中生成的so库为例。

步骤:

  • 1.新建项目,拷贝so库到libs目录
  • 2.编写app下的build.gradle脚本,在android节点中加入sourceSets ,声明so文件的路径
  • 3.编写JniLib.java实现类,在MainActivityz中实现调用
  • 4.报错分析

 

1.新建项目,拷贝so库到libs目录

2.编写app下的build.gradle脚本,在android节点中加入sourceSets ,声明so文件的路径

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.psp.jnitest3"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
}

3.编写JniLib.java实现类,在MainActivityz中实现调用

MainActivity.java中的代码

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Example of a call to a native method
        TextView tv = (TextView) findViewById(R.id.sample_text);
        tv.setText(new JniLib().getJniString());
    }


}

4.报错分析

运行项目时,发现报错如下:

说是找不到调用的方法,我们回过头来分析上篇博文中的C++实现的代码,发现原来时候包名对不上

于是我们更改JNI实现类JniLib的包名,和JniLib.cpp中的保持一致

然后再编译,运行成功。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值