1. 程式人生 > >java.lang.UnsatisfiedLinkError:...libgnustl_shared.so" is 32-bit instead of 64-bit

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以上系統的真機上就正常了,完美解決!