Android工程升级调试时,出现问题:
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/rs.tabletcropland-s7tjkuV_yQt4vYZC0B5UpQ==/base.apk"],nativeLibraryDirectories=[/data/app/rs.tabletcropland-s7tjkuV_yQt4vYZC0B5UpQ==/lib/arm64, /system/lib64, /hw_product/lib64, /system/product/lib64]]] couldn't find "libsqlcipher.so"
at java.lang.Runtime.loadLibrary0(Runtime.java:1067)
at java.lang.Runtime.loadLibrary0(Runtime.java:1007)
at java.lang.System.loadLibrary(System.java:1668)
at net.sqlcipher.database.SQLiteDatabase.loadLibs(SQLiteDatabase.java:196)
at net.sqlcipher.database.SQLiteDatabase.loadLibs(SQLiteDatabase.java:189)
看提示是dalvik虚拟机在lib64位置无法找到"libsqlcipher.so" 的库文件导致的。
将安装包解压后发现确实找不到。可是生成的apk本身就只支持32位。那么,解决方法:
一、打包时指定只针对32的abi
在项目的 build.gradle 文件中,添加:
android {
...
defaultConfig {
...
ndk{
abiFilters "armeabi-v7a"
}
}
}
二、下载支持完整架构的库文件
如支持你的设备架构,例如 arm64
在项目的 build.gradle 文件中,添加:
android {
...
defaultConfig {
...
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}
}
将支持各个指令集的so库全部打包到apk中。
问题解决。