Android compatibility issues

Some of my users are complaining that there are compatibility issues with my game and their phones. In my build.gradle I have:

ndk.abiFilters ‘armeabi-v7a’,‘arm64-v8a’,‘x86’,‘x86_64’

And in I have:

APP_ABI := armeabi-v7a arm64-v8a x86 x86_64

Are these the correct up to date settings? I’ve had a user have problems with an OPPO reno 7 and I think the CPU on that is: Octa-core (2x2.4 GHz Cortex-A78 & 6x2.0 GHz Cortex-A55)

but I don’t know how that relates to the list of processors I have?

If you upload to Google Play Console, it will only get distributed to the devices that your ABIs target. I removed APP_ABI from and my build.gradle setting looks like this:

   defaultConfig {
        targetSdkVersion 33
        minSdkVersion 16
        ndk {
            abiFilters 'arm64-v8a', 'armeabi-v7a'

600 new downloads a day from Play Store and nobody has complained of compatibility issues and I target TVs, tablets, phones, Chromebooks. Play Console says I’m not excluding any devices.

x86-64 Chromebooks will suffer a significant performance hit (and/or increased battery drain) if you don’t include a native binary, because they will be having to run ARM code in an emulator.

Anyway the OP was referring to an issue when running on an ARM Cortex CPU so removing x86 binaries probably won’t have any impact on that.

1 Like

But does that mean your app won’t work on 32 bit X86 devices?

Good question. No, it still works on all X86 devices.

I went ahead and added X68 to my build to see what difference it made. All it did was make my APK much bigger. My app already runs at 2000-3000fps and I didn’t notice any performance increase. I guess ARM emulation is pretty good, which would make sense, since it’ll be designed to run a lot of ARM code.

What about battery drain? Even if the ARM emulation is good enough for your app the extra CPU work involved will mean a higher power consumption than native code. Of course if most of the ‘heavy lifting’ in your app is done by the GPU, not the CPU, it may make little difference.