在64位Android上使用32位jni库

前端之家收集整理的这篇文章主要介绍了在64位Android上使用32位jni库前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我尝试使用Nexus 9上的本机库运行应用程序.

该应用程序退出显示一条错误消息:

java.lang.UnsatisfiedLinkError: dlopen Failed: "lib_xyz.so" is 32-bit instead of 64-bit

是否有任何已知的解决方法为这个问题(除了当然,重新编译库,使apk更大)

解决方法

找到一个解释:64位Android可以使用32位本地库作为后备,只有在System.loadlLibrary()在默认搜索路径中找不到更好的东西.
如果强制系统使用完整的库路径使用System.load()加载32位库,则会收到一个UnsatisfiedLinkError.
所以第一个解决方法是使用System.loadLibrary()而不是System.load().

必须考虑的另外一件事是,库不能混合:回退行为仅适用于您的应用程序加载的第一个库.如果第一个是64位,则不能由同一个应用程序加载32位库,反之亦然.

猜你在找的Android相关文章