Error in launching 64-bit requirements of Google Play

I had already tried to launch my expo project for 2 days, I do all suggest in Expo and Google play guides about how to upgrade to 64-bit version for pass all requirements from play store, but I still stuck with the same error that said “The following APKs or App Bundles are available to 64-bit devices, but they only have 32-bit native-code.”

Here are my package.json and app.json


note that: I put “xxxxx” instead of my actual name

Please guide me to fix this error! Thanks in advance

That looks ok to me. How are you building the apk/aab file?

by expo build:android -t app-bundle

OK, as long as you’re using an SDK >= 33 (which you are), that should produce a .aab file that contains 32 bit and 64 code as far as I know, so uploading that to Google Play should work.

Maybe try building again just to make sure.

Thanks for replying me, but that is What I have done so far. I already upload to the story many of times either apk or aab but it still getting the same errors, so I guess it is about my libraries or some of those modules.

OK, but your app is not ejected, right? (Based on the app.json and package.json it does not look like it’s ejected.) And it’s using SDK 35. So it should not have any 32bit-only code in it.

If you build an APK and then unzip it, have a look in the lib directory. If I do that with an APK I built a few days ago I see the following subdirectories:

arm64-v8a
armeabi-v7a
x86
x86_64

If I run file arm64-v8a/* then all of the libraries show as 64-bit shared libraries. Same for x86_64/*. The other two directories contain 32-bit shared libraries.

I don’t have an AAB file handy to poke around in there and I’m not familiar with the file format, but the same .so files should be included in the AAB file as well, so you should see something similar to the above.

What do you get with your APK/AAB files?

I got the same .so name in all folders. And yes, my project is managed workflow, I read some articles they solve the issues by let the app use only 64-bit, but I really don’t know how to do that in Expo or If you have another way. please suggest me!

Please clarify, do you have the same subdirectories that I found in my APK? And in those directories, if you run the “file” command on the .so files, does it show that there are 64-bit files in two of the directories and 32-bit files in the other two?

I built my app with an app bundle so my directory arranged like this; base/lib/(arm64-v8a, armeabi-v7a, x86, x86_64). Moreover, I already checked all file by the command “file” as you have suggested, and the outcome seems to be normal.

I got 2 out of all that is not as same as the other

libface_detector_v2_jni.so: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[md5/uuid]=386276808c6800c3f403c63120bfdcb2, stripped

libjsc.so:                  ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, with debug_info, not stripped

The first one, BuildID[…] is not the same as the other that showing as [SHA1]
and the second one comes out with debug_info and not stripped

Note that: I copied these “.so” from different folder, but these message still the same.

Don’t worry too much about the build ID, debug_info and whether or not it’s stripped (although I’m surprised about the debug_info and lack of stripping on libjsc.so, it should not cause a problem).

hmmm… if you have 32-bit and 64-bit versions of all of those libraries (for both ARM and x86) then I am at a loss.

Really glad that you try to help me to this point, god bless you!

1 Like

By now, I got a little bit more weird situation. I try to put my “.aab” file to be the new version in my Play Store with fresh install of Expo by “init” command. These error still the same as my previous project that I have try to put it in.What’s going on here? Please help!