天天看點

【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無法使用該如何解決?