2

Cannot figure out why - I have an application built explicitly for x86_64 architecture, my Gradle file cut: ndk { abiFilters "x86_64" }

I have verified that my APK file contains this and only this native lib entry: MYAPK:\\lib\x86_64\libnative.so

I have verified that all my devices (zenpad 10 and zenfone 2, Intel Atom x3-C3200 and Intel Atom Z3580 CPUs respectively) are 64 bit wise and even got x86_64 in their kernel signatures, beyond official Intel documentation. So seems everything is good to go, but I cannot install the APK with a dramatic error: INSTALL_FAILED_NO_MATCHING_ABIS

If I roll back to 32 bit arch (x86) - all is working as expected. Anyone got ideas why this happens? I know that ARMs work good both for 32 and 64 bit, but for some reason Intel doesn't allow that and runs in compatibility mode. Cheers!

  • A 64-bit kernel doesn't imply that 64-bit userspace libraries are installed. Maybe your device vendors all decided to provide only the 32-bit ABI to save space. IDK Android, but I wouldn't be surprised if this is typical. In theory, maybe you could `execve` a statically-linked 64-bit binary if there's kernel support for that ABI. Like I said, IDK Android, so maybe it's a simpler problem like maybe `"amd64"` is the right string? – Peter Cordes Aug 31 '17 at 01:11
  • Looks like you are right, Peter. I was thinking maybe of some specific code in my libs, or some guards there maybe or so, but it does not.I did a small test - creating a blank project in Android Studio, with 1 sample function returning a string. And got just same results - no matching ABI, APK doesn't install. So its all about vendors indeed. – Oleg Bezverhiy Aug 31 '17 at 08:49

0 Answers0