KeepSafe/ReLinker

32-bit instead of 64-bit

Closed this issue · 2 comments

Hi! I used ReLinker for my project to increase robust of library loading, but I faced strange crashes when I try to load my native library on 6 platform (I can not reproduce on any of my phones, it is from crashlytics)

Fatal Exception: java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/<apppackage>/app_lib/libmylib.so" is 32-bit instead of 64-bit
       at java.lang.Runtime.load(Runtime.java:332)
       at java.lang.System.load(System.java:1069)
       at com.getkeepsafe.relinker.ReLinker.loadLibrary(ReLinker.java:75)

It looks strange cuz I have only armeabi-v7a and x86 libraries in my project and appropriate abi-filter setting in gradle. Do you have any idea?

That means you're mixing 64 bit binaries and 32 bit binaries. You can only ship either all 32 bit binaries or all 64 bit binaries. This is not an issue with ReLinker.

Check your dependencies and what type of binary they're using (this is a common problem when using fresco, for example).

I am sure, that I shipped only 32-bit binaries in project. If I have mixing 64/32 binaries format the I have app crash on any devices, but there is not. It happens only for some devices and only on android 6

screen from crashlitycs
https://yadi.sk/i/XqzqcOFt3GAEib
screen from apk analyzer
https://yadi.sk/i/xYH5Oh1T3GAEyC