解決動態加載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文件夾則還是會報錯

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