Android x86_64 libs missing from aab

On GooglePlay, it’s mandatory to include 64-bit libs for both ARM and x86 architectures now. But try as I might, I cannot generate an .aab that includes x86_64. Nothing on the older threads really settled anything in regards to this.

I include in project.xml

<architecture name="arm64" if="android"/>

…and libs/arm64-v8a shows up fine. But if I also add:

<architecture name="x86_64" if="android"/>

only libs/x86 accompany the two arm versions.

I’m using the latest lime and openfl versions, so I expected this would be settled by now. It’s a show stopper, after all. How am I supposed get that darned x86_64 build into that bundle?

2 Likes

To follow up, if an architecture is included, GooglePlay requires a 64-bit version. I was able to bypass their filter by removing x86 support instead. In project.xml

<architicture exclude="x86" if="android"/>

Seemed to work. But it’s not clear if they’ll require the x86_64 support along the line, as it’s specifically mentioned in:

Since Android is an open platform, phone manufacturers could choose an x86_64 architecture and GooglePlay can take the stance that you can’t just leave those devices out in the rain…

We have already discussed it here: Does openfl support 64-bit devices on Android?

Without a clear resolution. It’d be cool if the OpenFL Android documentation just listed the required project.xml tags, rather than having to sift through multiple discussions of whether it’s the tools, or their versions, or using a 3rd party service. Maybe this thread will help increase the signal from the noise.

Ugh. I’ve had to unmark my “solution”, as it got me past GooglePlay’s submission filter, but the app fails to run installing on Android tablets. These tablets (Nexus 5, for example) are running x86_64. I don’t even know why GooglePlay would let you install on these, since it knows the bundle is missing the required architecture.

I’m back to where I started: how do you get lime to include x86_64 libs into an android bundle?

Nexus 5 runs arm, not arm64 or x86 or x86_64.
You could unpack bundle and see what’s inside

You’re right. I’m testing Nexus 5 as a VirtualBox image. In Settings it reports “Build Number android_x86_64” there. But I have to imagine that GooglePlay’s automated testing is using a similar method, since it reports crashes on it’s suite of three devices. And yet, I am able to download off the PlayStore and run the same bundle on a real phone.

So, once again, in order to publish on Google Play, x86_64 libs are required to be included in the app bundle. The HXCPP toolchain seems to be configured to do this. x86_64 libs are mentioned as an Android target there. But generating a bundle doesn’t produce them. Is this a bug, or am I simply missing some undocumented directives somewhere to generate them?

I’m marking the original solution as good, since it gets you past Google’s filter and Unity doesn’t ship x64 binaries, so presumably this will be sufficient to publish.