java.lang.UnsatisfiedLinkError:...libgnustl_shared.so" is 32-bit instead of 64-bit
阿新 • • 發佈:2018-11-11
轉載自: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以上系統的真機上就正常了,完美解決!