美文网首页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