问题
I'm trying to use the new Android App Bundles.
I run some test locally on my devices, and everything works correctly. However, once deployed to production, I am starting to see a few errors like this:
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)
...
The error states that a library I'm using (requery/sqlite-android) cannot find the .so file that it needs. This seems strange, since I checked with bundletool, and in every APK the file .so is there.
The error happens on two devices: a Samsung Galaxy Note 7 and a TECNO-J8, running Android 6 and 5 respectively.
According to the Play Store, the error happens for app installed through Google Play, so I doubt the error is related to APK sideloading.
The generated APK bundle includes splits for the following architectures:
- splits\base-armeabi_v7a.apk
- splits\base-mips.apk
- splits\base-arm64_v8a.apk
- splits\base-x86_64.apk
- splits\base-x86.apk
Do you have any hints?
回答1:
Even though the installs are reported from Play, this information can easily be spoofed when using adb (which some users have learnt to do for some reason that I don't quite get yet). Those crashes very likely come from sideloads which don't install the config splits in spite of the appearances.
来源:https://stackoverflow.com/questions/52595535/using-an-app-bundle-i-get-unsatisfiedlinkerror-for-1-of-users