美文网首页Android精品集合
Android加载外部so库

Android加载外部so库

作者: chensem | 来源:发表于2020-01-10 11:10 被阅读0次

    前言

    本篇作为记录,方便以后查阅。

    正文

    需求:需要加载其他厂商编译好的so库,需要从外部加载。

    方法一:
    直接将so库拷贝到app私有目录下,然后使用以下代码加载。

    String soPath = Environment.getExternalStorageDirectory().toString() + "/libnative-lib.so";
    File file = new File(soPath);
    if (file.exists()){
      File dir = context.getDir("libs", Context.MODE_PRIVATE);
      String targetDir = dir.getAbsolutePath() + "/libnative-lib.so";
      FileUtils.copySdcardFile(file.toString(), targetDir);
      System.load(targetDir);
    }
    

    缺点:麻烦,不建议使用

    方法二:
    创建android native项目后,在Project视图下,app/src/main下创建jniLibs。如果对应的so只有32位arm的。需要在build.gradle文件下加入以下内容。

    ndk{
      abiFilters  "armeabi-v7a"
    }
    
    image.png

    方法三:
    使用自定义配置,在Project的视图下,app目录下创建libs目录,然后将其他apk中的lib下的so库连目录一起拷贝过去,然后在build.gradle中加入以下代码

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

    相关文章

      网友评论

        本文标题:Android加载外部so库

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