天天看点

【HMS Core】Android引入Scan Kit导致System.loadLibrary无法使用该如何解决?

1、问题描述

项目中使用了统一扫码服务ScanKit,相关配置如下:

//配置HMS Core SDK的Maven仓地址

maven {url 'https://developer.huawei.com/repo/'}

//依赖版本

implementation 'com.huawei.hms:scanplus:2.7.0.302'

使用的设备是Android10版本,在引入之后出现了System.loadLibrary无法使用导致App闪退的问题。

详细的报错信息如下图所示:

【HMS Core】Android引入Scan Kit导致System.loadLibrary无法使用该如何解决?

提取出来关键的报错信息如下:

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.xxx-CFCtr_X1gEyHHLLKhKdHpg==/base.apk"] ,nativeLibraryDirectories=[/data/app/com.xxx

那么这个问题该如何解决呢?

2、问题分析

熟悉Android开发的朋友们,应该对java.lang.UnsatisfiedLinkError这个报错有所了解。

这个错误一般都是在做NDK项目中才会遇到,对于这个错误,网上也有很多相关的资料,归根结底就一句话:so文件加载异常。

我们再分析项目左侧目录结构中jniLibs目录下的文件,发现只有armeabi的so文件,假如设备的CPU架构是arm64-v8a,它在用到该App时会优先查找arm64的文件夹,如果没有该文件夹或者发现文件夹中没有xxx.so就会出现报错,所以,针对这个本项目我们需要设置CPU架构的兼容类型。

3、解决方案

在app module中的build.gradle文件中添加下图中红色标注部分的配置:

【HMS Core】Android引入Scan Kit导致System.loadLibrary无法使用该如何解决?