首页 > 解决方案 > 使用应用程序包时,<1% 的用户会收到 UnsatisfiedLinkError

问题描述

我正在尝试使用新的 Android App Bundle。

我在我的设备上本地运行了一些测试,一切正常。但是,一旦部署到生产环境,我开始看到一些这样的错误:

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/xyz/base.apk"],nativeLibraryDirectories=[/data/app/xyz/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libsqlite3x.so"
java.lang.Runtime.loadLibrary (Runtime.java)
java.lang.System.loadLibrary (System.java)
io.requery.android.database.sqlite.SQLiteDatabase.<clinit> (SQLiteDatabase.java:86)
io.requery.android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked (SQLiteOpenHelper.java:241)
io.requery.android.database.sqlite.SQLiteOpenHelper.getReadableDatabase (SQLiteOpenHelper.java:199)
...

该错误表明我正在使用的库(requery/sqlite-android)找不到它需要的 .so 文件。这看起来很奇怪,因为我检查了 bundletool,并且在每个 APK 中都有 .so 文件。

该错误发生在两台设备上:三星 Galaxy Note 7 和 TECNO-J8,分别运行 Android 6 和 5。

根据 Play 商店的说法,通过 Google Play 安装的应用程序会发生错误,所以我怀疑该错误与 APK 侧载有关。


生成的 APK 包包括以下架构的拆分:

你有什么提示吗?

标签: androidandroid-studioandroid-app-bundle

解决方案


即使安装是从 Play 报告的,但在使用 adb 时,这些信息很容易被欺骗(一些用户已经学会了这样做,出于某种我还不太了解的原因)。这些崩溃很可能来自侧面加载,尽管表面上没有安装配置拆分。


推荐阅读