java.lang.UnsatisfiedLinkError:...libgnustl_shared.so" is 32-bit instead of 64-bit

轉載自:http://blog.csdn.net/chewbee/article/details/51973273

        因原生的Android項目需要集成RN環境,在引用so庫文件時,在Android 5.0以下的手機上運行沒問題,但是在7.0以上的手機上出現閃退的情況並且提示 java.lang.UnsatisfiedLinkError:...libgnustl_shared.so"  is 32-bit instead of 64-bit錯誤,網上分析了出現這種情況的原因,可能是混合使用了32bit和64bit的庫文件,如果系統先使用64bit的庫文件時,則後續的庫文件都是以64bit來加載執行,故會出現此問題。

        然後我檢查了app下的build.gradle文件找到ndk,如下圖所示,確實存在64和32共用的情況。

        ndk {
            //根據需要 自行選擇添加的對應cpu類型的.so庫。
            abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a',  'x86'
            // 還可以添加 'x86', 'x86_64', 'mips', 'mips64'
        }

        最後修改後如下圖所示:

 ndk {
            //根據需要 自行選擇添加的對應cpu類型的.so庫。
            abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'mips'
            // 還可以添加 'x86', 'x86_64', 'mips', 'mips64'
        }

        重新編譯運行到7.0以上系統的真機上就正常了,完美解決!

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