解决动态加载java.lang.UnsatisfiedLinkError: dlopen failed * is 32-bit instead of 64-bit 报错

用动态加载的方式拉起插件apk,由于插件apk中有so文件,于是出现错误

E/AndroidRuntime: FATAL EXCEPTION: Thread-7
                                                                  Process: androidx.xxxxxxdemo, PID: 8303
                                                                  java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/xxxxxxxx/app.apk-dir/lib/libxxxxxx.so" is 32-bit instead of 64-bit
                                                                      at java.lang.Runtime.loadLibrary0(Runtime.java:1016)
                                                                      at java.lang.System.loadLibrary(System.java:1657)
                                                                      at vivali.utility.xxxxxxx.xxxxxxx.<clinit>(xxxxxxx.java:9)
                                                                      at com.example.xxxxxxx.xxxxxx.xxxxxxActivity.xxxxxx(xxxxxxActivity.java:676)
                                                                      at com.example.xxxxxxx.xxxxxx.xxxxxxActivity.access$1000(xxxxxxActivity.java:47)
                                                                      at com.example.xxxxxxx.xxxxxx.xxxxxxActivityy$xxxxxxThread.run(xxxxxxActivity.java:628)
                                                                      at java.lang.Thread.run(Thread.java:764)

单独安装该插件apk没有问题,但是运行不起来,先按照网上的方法在工程app目录下build.gradle加上一句话:

ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }

但是没有效果,看大神的博客,说自己的apk中没有so,但是第三方插件中有,给了解决方案:

第三方apk有so的情况

在宿主apk中添加添加空文件夹app>src>main中添加文件夹jniLibs>armeabi,文件夹中添加空文件fix.so,即可

这个文件目录对应我的插件apk,如果只是添加armeabi文件夹则还是会报错

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章