Android精品集合

Android加载外部so库

2020-01-10  本文已影响0人  chensem

前言

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

正文

需求:需要加载其他厂商编译好的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']
  }
}
上一篇下一篇

猜你喜欢

热点阅读