前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >调用so库文件以及里面的方法「建议收藏」

调用so库文件以及里面的方法「建议收藏」

作者头像
全栈程序员站长
发布2022-07-04 09:53:11
1.5K0
发布2022-07-04 09:53:11
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

之前文章写过一篇JNI生成so库文件 并调用里面的方法

手把手教你—JNI的实现

实际开发中 so库是别人给你的,不是你自己写的没所以就要用别人的so库文件。

有很多情况,有一种是比较简单的:既有so库文件又有对应的jar包,这样的话 直接就可以调用里面的方法了。

第二种比较坑爹,限制也比较多,所以现在就主要研究一下 第二种吧(只有so库 其他什么都没有)

第一步:

代码语言:javascript
复制
sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

把这个添加到build gradle (app) 里面 (abdroid 下)

整体的代码如下:

代码语言:javascript
复制
android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "com.example.administrator.hongyangzzzb"
        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']
        }
    }

}

第二步:

工作区间切换到Project,在libs里面 把之前的so库文件添加进去,如图:

调用so库文件以及里面的方法「建议收藏」
调用so库文件以及里面的方法「建议收藏」

然后把同样的东西 在src/main 下新建文件夹jniLibs 粘贴到里面,如图:

调用so库文件以及里面的方法「建议收藏」
调用so库文件以及里面的方法「建议收藏」

第三步: 新建JNIUtils 类

这个就有点麻烦了,有一些要求在里面,因为我之前的调用C的方法的那个类名字加JNIUtils 多以这个类也必须交这个,名字不一样就报错,而且包名也必须一致,修改包名下一篇再说(凑篇幅),放改好包名就会使这样(因为上一个的包名是 hongyangzzz):

调用so库文件以及里面的方法「建议收藏」
调用so库文件以及里面的方法「建议收藏」

里面的是:

代码语言:javascript
复制
public class JNIUtils {

    static {
        System.loadLibrary("huazict");
    }

    public native String getString();


}

然后在MainActivity调用就行了:

代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {

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

        JNIUtils j = new JNIUtils();

        Toast.makeText(this, j.getString()+"123", Toast.LENGTH_SHORT).show();



    }
}

———————————-———————-———————-———————-

下面的会写一篇专门关于报错的,,,,。。今天没时间了。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/148960.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档