2024-09-04升级问题记录:调试时出现couldn‘t find *.so 库

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中。

 

问题解决。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值