Support Android 16 KB page sizes

Support 16 KB page sizes

Beginning with Android 15, Android supports devices that are configured to use a page size of 16 KB (16 KB devices). If your app uses any NDK libraries, either directly or indirectly through an SDK, then you will need to rebuild your app for it to work on these 16 KB devices.

Related Files: libfmod.so libfmodL.so
Version: 2.02.23
Test Method: https://developer.android.com/guide/practices/page-sizes#test
Cmd:

objdump -p libfmod.so | grep LOAD

Result:

LOAD off    0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**12
LOAD off    0x0000000000050000 vaddr 0x0000000000050000 paddr 0x0000000000050000 align 2**12
LOAD off    0x000000000010a000 vaddr 0x000000000010a000 paddr 0x000000000010a000 align 2**12
LOAD off    0x0000000000110000 vaddr 0x0000000000110000 paddr 0x0000000000110000 align 2**12

Not 16 KB ELF alignment.(actually the latest verison 2.03.02 does not align either)

Could you please provide adapted 16kb elf alignment libfmod.so or source code for libfmod.so.

Hi,

Thank you for bringing this to our attention. I have passed it on to our development team and it will be supported in an upcoming release. Unfortunately, I cannot provide source code or an adapted file.

Thanks for your reply, looking forward to new version release.

1 Like

Hi,
FYI when I try to launch our game using fmod core 2.03 on 16KB aligned virtual device I have this crash:

* thread #1, name = 'imple.elixirapp', stop reason = breakpoint 4.1
  * frame #0: 0x00007095060b41b8 libart.so`art_sigsegv_fault
    frame #1: 0x00007095060b474c libart.so`art::FaultManager::HandleSigsegvFault(int, siginfo*, void*) + 1096
    frame #2: 0x00007097a71ef06c libsigchain.so`art::SignalChain::Handler(int, siginfo*, void*) + 372
    frame #3: 0x00007097cd5a4848 [vdso]`__kernel_rt_sigreturn
    frame #4: 0x00007093c111dbf0 libfmod.so`pthread_once
    frame #5: 0x00007093c10fb1f0 libfmod.so
    frame #6: 0x00007093c10c0690 libfmod.so
    frame #7: 0x00007097cd690560 linker64`__dl__ZN6soinfo17call_constructorsEv + 708
    frame #8: 0x00007097cd675c30 linker64`__dl__Z9do_dlopenPKciPK17android_dlextinfoPKv + 756
    frame #9: 0x00007097cd670b70 linker64`__dl__ZL10dlopen_extPKciPK17android_dlextinfoPKv.__uniq.234527301065430621646263515731762262959 + 76
    frame #10: 0x00007097a32940cc libdl.so`android_dlopen_ext + 20
    frame #11: 0x00007097a90e989c libnativeloader.so`android::NativeLoaderNamespace::Load(char const*) const + 144
    frame #12: 0x00007097a90d9348 libnativeloader.so`OpenNativeLibrary + 1576
    frame #13: 0x00007095061638b4 libart.so`art::JavaVMExt::LoadNativeLibrary(_JNIEnv*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, _jobject*, _jclass*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*) + 608
    frame #14: 0x00007094fd2e1918 libopenjdkjvm.so`JVM_NativeLoad + 360
    frame #15: 0x00000000620fecc4
1 Like

Hi,

Thank you for sharing the information.

The fix is currently in development and will be included in the upcoming release, version 2.02.26 and version 2.03.05.

2 Likes

Hi there,

I just upgraded to 2.02.27 in hopes of fixing this warning in Unity. However when I build the project I still get this warning. I am using Unity 6000.0.42f1, Android ARM64, (Quest 3) and Fmod 2.02.27.

Hi,

Thank you for sharing the information and version number.

I was unable to reproduce the issue on my end, I have checked that both the libfmod.so and libfmodL.so in 2.02.27 are aligned with a 16KB page size and should be compatible with devices that require it.

Could you please share the exact warning message you are seeing in Unity?

Sure thing, you can also see in the editor just selecting the plugin will show the warning.

Also the Oculus plugin needs the same update for the same reason (As you can see in the Logs) Not sure if that’s a you or them thing?

Plugin ‘Packages/com.meta.xr.sdk.platform/Plugins/Android64/libovrplatformloader.so’ is not 16KB-aligned. This may cause issues on ARM64 devices running Android 15+.
More info: https://developer.android.com/guide/practices/page-sizes.
Plugin ‘Assets/Plugins/FMOD/platforms/android/lib/arm64-v8a/libfmodstudioL.so’ is not 16KB-aligned. This may cause issues on ARM64 devices running Android 15+.
More info: https://developer.android.com/guide/practices/page-sizes.
Plugin ‘Assets/Plugins/FMOD/platforms/android/lib/arm64-v8a/libfmodL.so’ is not 16KB-aligned. This may cause issues on ARM64 devices running Android 15+.
More info: https://developer.android.com/guide/practices/page-sizes.
Plugin ‘Assets/Plugins/FMOD/platforms/android/lib/arm64-v8a/libMetaXRAudioFMOD.so’ is not 16KB-aligned. This may cause issues on ARM64 devices running Android 15+.
More info: https://developer.android.com/guide/practices/page-sizes.
Plugin ‘Assets/Plugins/FMOD/platforms/android/lib/arm64-v8a/libresonanceaudio.so’ is not 16KB-aligned. This may cause issues on ARM64 devices running Android 15+.
More info: https://developer.android.com/guide/practices/page-sizes.
Plugin ‘Packages/com.unity.xr.oculus/Runtime/Android/arm64/libOculusXRPlugin.so’ is not 16KB-aligned. This may cause issues on ARM64 devices running Android 15+.
More info: https://developer.android.com/guide/practices/page-sizes.

Thank you for sharing the screenshots and error messages.

I have upgraded the Oculus plugin to the latest and tested on a similar setup, but I still couldn’t reproduce the warning on my end.

The Log you provided does seem like coming from Oculus plugin. However, the FMOD libraries such as libfmod and libfmodL should already be properly aligned.

Could you please upload the libfmod file you are using to your FMOD Profile so I can take a closer look?

Also, have you tried deleting the FMOD plugin folder and reinstalling it to see if the issue persists? You might want to try updating to our latest release, FMOD 2.02.28 as well.

Let me know if the issue continues after that.

I uploaded the libfmod to my profile to have a look at. I will delete the FMOD plugins folder and upgrade to FMOD 2.02.28 this morning and report back.

After updating to 2.02.28 I still get the same warning.
When you had a look at your install, did you make sure CPU is set to ARM64 on the plugin?
The warning is not there if you choose ARMv7 on libfmod but appears when set to ARM64.

Edit: Just updated my project to: 2.03.07 and found the same thing.

Thanks for providing the libfmod file, it helped me confirm that it is correctly aligned to the 16kb requirement.

Yes, I have confirmed that the CPU is set to ARM64 on the plugin. I was also able to reproduce the warning messages on my end. From what I can tell, this appears to be a Unity-specific bug, as the warnings only show up in Unity 6000.0.42f1. Fortunately, they don’t seem to have any functional impact or block the build process.

Interestingly, when I previously tested with Unity 6000.0.27f1, I couldn’t reproduce the issue as the warnings did not appear and everything worked as expected. So as a temporary workaround, I would recommend downgrading to Unity 6000.0.27f1 to see if that resolves the issue on your end as well.

Thank you for bringing this to our attention, and please let me know if the issue persists.

1 Like