动态库位置放置正确,在app/src/main/jniLibs中。

在接入虹软的人脸识别时,引入了一个64bit的包之后,编译安装之后发生了无法找到libarcsoft_face_engine动态库的异常。

E/AndroidRuntime: FATAL EXCEPTION: main    Process: com.hznu.machine.app.PdfSignDemo, PID: 4800    java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[ ...  /system/lib64]]]     "libarcsoft_face_engine.so"

解决

设置Gradle 仅编译32位的程序

  1. app目录下的build.gradle的android中加入下面内容
android {    splits {        abi {            enable true            reset()            include 'armeabi-v7a'        }    }}
  1. 运行gradle的clean
  2. 重新编译运行程序,问题解决。

该问题由 Stack Overflow - Alex Cohn 提供解决方案,感谢Alex Cohn

分析

这是由于虹软编译的动态库可能由于兼容性考虑,编译的是32位的库,在App安装时libarcsoft_face_engine.so文件应该复制到/system/lib(32位库目录)目录。

而在引入64位的3方库之后,AS在编译时候,会将编译版本提升至64,这导致程序寻找依赖的动态库时,需要到/system/lib64寻找,因此找到不到在/system/lib目录下的libarcsoft_face_engine.so文件报错。

感谢

[1]. Alex Cohn . Can not find .so file on 64 bit android device . https://stackoverflow.com/questions/33915850/can-not-find-so-file-on-64-bit-android-device

更多相关文章

  1. Android(安卓)编译出错版本匹配问题解决办法
  2. ANR问题
  3. 在Window下使用NDK编译LuaJIT-2.0.1版
  4. Android(安卓)平台上SDCard的自动mount的解决方法
  5. Android(安卓)-- 使用主题配置文件,去掉程序启动界面的短暂黑屏
  6. Android(安卓)View的加载过程
  7. Android(安卓)root的两种方法 -- udev漏洞和setuid漏洞
  8. android 在应用中安装其他程序
  9. Android(安卓)4.4源码编译环境升级gcc版本的方法

随机推荐

  1. android横屏竖屏
  2. Websites for more Android development
  3. 2010.12.22——— android 一个永远处于
  4. Android中的Serialable和Parcelable的区
  5. Android(安卓)中常用ADB命令介绍
  6. Android预定义样式
  7. 去掉Android TextView 去掉内边距
  8. 老罗Android开发视频教程(Android入门介绍
  9. android 解决错误:Intel HAXM is required
  10. 局域网内搭建Android SDK更新源