美文网首页
java.lang.UnsatisfiedLinkError:找

java.lang.UnsatisfiedLinkError:找

作者: _蘇芳_ | 来源:发表于2019-11-13 11:26 被阅读0次

    问题发生:

    本来数据库用的room,发现greendao作者写了个objectbox,就导入项目玩玩,结果发生了上述问题。

    排查:

    1. 首先检查安装文件里有没有这个so文件,adb shell 进入设备,在data/data/包名/lib下果然有一些其他的so,但是没有报错的那个so。好的,问题发现。
    2. 既然没有安装,那么打包有没有出问题呢?找到apk文件,打开,在lib中有arm、armv7、armv8等。报错的so在arm里有,在armv7、armv8里都没有。OK,问题定位了。

    设备是armv7的,之前用的数据库框架room是google对sqlite的一些封装,没有引入so,打包后只有arm,兼容几乎所有android设备,故没有报错。引入objectbox后,作者认为arm已过时没有支持,而且也不是我手动引入的,是在build.gradle里通过插件引入的,也没有感知到这个问题。所以打包后有arm、armv7、armv8等,而设备是v7的,在安装的时候就只将armv7安装了进去,导致了报错。

    解决:

    在module的build.gradle下对ndk支持限定只支持armv7

    defaultConfig {
            applicationId "com.optimais.scales"
            minSdkVersion 19
            targetSdkVersion 28
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    
            ndk {
                abiFilters 'armeabi-v7a'    //只生成armv7的so
            }
        }
    

    再将报错第三方库的jnilib里的arm文件夹更名为armeabi-v7a即可。(他没提供v7,只能这么解决了)

    相关文章

      网友评论

          本文标题:java.lang.UnsatisfiedLinkError:找

          本文链接:https://www.haomeiwen.com/subject/ghdhictx.html