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閃退的問題。
詳細的報錯資訊如下圖所示:
提取出來關鍵的報錯資訊如下:
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檔案中添加下圖中紅色标注部分的配置: