美文网首页
Android Studio 调用so库

Android Studio 调用so库

作者: 浮云若飞 | 来源:发表于2017-11-04 16:12 被阅读0次

    前言

    前面一篇讲了如何使用ndk-build生成so库,这一篇就写写如何调用。

    引入so库

    2017-11-04 15-58-03屏幕截图.png 2017-11-04 15-58-09屏幕截图.png

    如图,将生成的so库拷贝到libs文件夹下,注意不要单独拷贝so库,armeabi及armeabi-v7a文件夹代表的是so库适用的CPU架构,所以这些文件夹也要一起拷贝出来。

    编辑app下的build.gradle文件

    在build.gradle下添加:

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

    添加后如图:


    2017-11-04 16-02-01屏幕截图.png

    so库调用:

    2017-11-04 16-03-55屏幕截图.png

    使用如下代码加载库:

        static{
            System.loadLibrary("JNITest");
        }
        public static native int num();// 库中的方法,也是调用的入口
    

    注意几个地方,一、包名要和so库中的包名一样;二、类名也要一致。
    我们看看so库的头文件中的函数:

    JNIEXPORT jint JNICALL Java_cn_scnu_MainActivity_num
      (JNIEnv *, jobject);
    

    函数名为Java_包名类名函数名。所以我们创建的Android工程的包名也要一致,即cn_scnu,同时,负责加载并且提供native方法的类的类名也要相同,即MainActivity,否则调用不成功,提示找不到方法。

    注意好这些我们就调用成功了:


    1019079315.jpg

    相关文章

      网友评论

          本文标题:Android Studio 调用so库

          本文链接:https://www.haomeiwen.com/subject/iaofmxtx.html