FMOD Unreal to Android Quest shipping build

I can’t seem to get FMOD working properly with quest shipping build through Unreal. My app just crashes before it even opens. The sounds work just fine through local development build.

I couldn’t find proper documentation for Unreal 4.23 on how to set up FMOD properly with Android builds.

Thanks!

The only two things to note should be:

  • Make sure the integration is installed in the project and not the engine’s plugin directory.
  • Additional steps will be required for plugins on Android.

Are you able to get any logging from the device?

I had the same issue, it works for some reason now…
This was the crash I got:

* * * * * * * * * * * * * * * *
Build fingerprint: 'Xiaomi/cepheus_eea/cepheus:9/PKQ1.181121.001/V10.2.30.0.PFAEUXM:user/release-keys'
Revision: '0'
ABI: 'arm'
pid: 10669, tid: 10763, name: FMOD Fi-dinator  >>> com.gryyy.racyyying <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
Cause: null pointer dereference
    r0  00000000  r1  e21cdd00  r2  00000000  r3  00000000
    r4  bd6afa20  r5  c6cc1e0c  r6  c6cc1e14  r7  00000000
    r8  bcbe6684  r9  bcfcebc8  r10 bcfcea1c  r11 bcbe6740
    ip  c6508498  sp  bcbe6568  lr  00000000  pc  c36ad6dc

backtrace:
    #00 pc 02d566dc  /data/app/com.gryyy.racyyying-gjP_sx1HOT0wQ4H7OJCcRA==/lib/arm/libUE4.so (FAndroidPlatformFile::OpenRead(char16_t const*, bool, bool)+236)
    #01 pc 0407a6b8  /data/app/com.gryyy.racyyying-gjP_sx1HOT0wQ4H7OJCcRA==/lib/arm/libUE4.so (FPakPlatformFile::OpenRead(char16_t const*, bool)+340)
    #02 pc 02d86198  /data/app/com.gryyy.racyyying-gjP_sx1HOT0wQ4H7OJCcRA==/lib/arm/libUE4.so (FFileManagerGeneric::CreateFileReaderInternal(char16_t const*, unsigned int, unsigned int)+48)
    #03 pc 02990cf4  /data/app/com.gryyy.racyyying-gjP_sx1HOT0wQ4H7OJCcRA==/lib/arm/libUE4.so (FFMODFileSystem::Run()+196)
    #04 pc 02d9b810  /data/app/com.gryyy.racyyying-gjP_sx1HOT0wQ4H7OJCcRA==/lib/arm/libUE4.so (FRunnableThreadPThread::Run()+92)
    #05 pc 02d5bac0  /data/app/com.gryyy.racyyying-gjP_sx1HOT0wQ4H7OJCcRA==/lib/arm/libUE4.so (FRunnableThreadPThread::_ThreadProc(void*)+64)
    #06 pc 000717f1  /system/lib/libc.so (__pthread_start(void*)+22)
    #07 pc 0001e025  /system/lib/libc.so (__start_thread+24)

stack:
         bcbe6528  bcbe669c  <anonymous:bcaeb000>
         bcbe652c  00000047
         bcbe6530  bcfcebc8  <anonymous:bcf3f000>
         bcbe6534  bcfcea1c  <anonymous:bcf3f000>
         bcbe6538  bcbe6560  <anonymous:bcaeb000>
         bcbe653c  c32c69e0  /data/app/com.gryyy.racyyying-gjP_sx1HOT0wQ4H7OJCcRA==/lib/arm/libUE4.so (_ZN17TStringConversionI20FTCHARToUTF8_ConvertLi128EEC2EPKDs+200)
         bcbe6540  bcbe6560  <anonymous:bcaeb000>
         bcbe6544  c36ac3f8  /data/app/com.gryyy.racyyying-gjP_sx1HOT0wQ4H7OJCcRA==/lib/arm/libUE4.so (_ZNK4TSetI6TTupleIJ7FString10TSharedPtrIN13FZipUnionFile5EntryEL7ESPMode1EEEE27TDefaultMapHashableKeyFuncsIS1_S6_Lb0EE20FDefaultSetAllocatorE6FindIdERKS1_+236)
         bcbe6548  bd6afa20  <anonymous:bd65b000>
         bcbe654c  c6cc1e0c  [anon:.bss]
         bcbe6550  c6cc1e14  [anon:.bss]
         bcbe6554  00000000
         bcbe6558  bcbe6684  <anonymous:bcaeb000>
         bcbe655c  bcfcea1c  <anonymous:bcf3f000>
         bcbe6560  bcbe6740  <anonymous:bcaeb000>
         bcbe6564  c36ad6c8  /data/app/com.gryyy.racyyying-gjP_sx1HOT0wQ4H7OJCcRA==/lib/arm/libUE4.so (_ZN20FAndroidPlatformFile8OpenReadEPKDsbb+216)
    #00  bcbe6568  00000000

Edit: I’m using UE 4.24

What version of FMOD were you using when you got the crash?

Mine still doesn’t work. This is what I’ve tried including in my _APL.xml file. I am not sure what I am doing wrong. I am using the latest version of FMOD so and plug in files.

The app and sounds work just fine when I launch from within Unreal editor. The app continues working after even if I download it from Dashboard. However, if I clear all of that data and have a fresh install from Dashboard the app crashes. I only have few normal FMOD Ambient sound events set up. Nothing too complicated.

<?xml version="1.0" encoding="utf-8"?>
<!--Plugin additions-->
<root xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- init section is always evaluated once per architecture -->
    <init>
        <log text="ovrfmod APL init"/>
    </init>

    <!-- optional files or directories to copy to Intermediate/Android/APK -->
    <resourceCopies>
        <log text="Spatializer APL copying files for $S(Architecture)/"/>
        <copyFile src="$S(PluginDir)/$S(Architecture)/libOculusSpatializerFMOD.so"
                    dst="$S(BuildDir)/libs/$S(Architecture)/libOculusSpatializerFMOD.so" />
        <copyFile src="$S(PluginDir)/$S(Architecture)/libfmod.so"
                    dst="$S(BuildDir)/libs/$S(Architecture)/libfmod.so" />
        <copyFile src="$S(PluginDir)/$S(Architecture)/libfmodL.so"
                    dst="$S(BuildDir)/libs/$S(Architecture)/libfmodL.so" />
        <copyFile src="$S(PluginDir)/$S(Architecture)/libfmodstudio.so"
                    dst="$S(BuildDir)/libs/$S(Architecture)/libfmodstudio.so" />
        <copyFile src="$S(PluginDir)/$S(Architecture)/libfmodstudioL.so"
                    dst="$S(BuildDir)/libs/$S(Architecture)/libfmodstudioL.so" />
        <copyFile src="$S(PluginDir)/$S(Architecture)/libresonanceaudio.so"
                    dst="$S(BuildDir)/libs/$S(Architecture)/libresonanceaudio.so" />
    </resourceCopies>

    <!-- optional libraries to load in GameActivity.java before libUE4.so -->
    <soLoadLibrary>
        <log text="ovrfmod APL adding loadLibrary references"/>
	<loadLibrary name="ovrfmod" failmsg="ovrfmod not loaded and required!" />
	<loadLibrary name="OculusSpatializerFMOD" failmsg="ovrfmod not loaded and required!" />
    </soLoadLibrary>
</root>

Posted a reply for you. Could you please guide me?

You should not need to add the FMOD libs to this as they are already specified in the FMODStudio_APL.xml.

Are you able to get any logging from the device at all?
What version of FMOD are you using?

Hi lemonsprinkles, we’ve just found a bug which was the likely cause of your issue. A fix will be included in the next release of the FMOD Studio UE4 integration.

The fix has been pushed to GItHub already (https://github.com/fmod/ue4integration) so you can grab it from there immediately if you like.

It should also be possible to workaround the issue by changing the “Built bank file separation” setting in your FMOD Studio project. Changing the setting to either “Build metadata and assets to separate banks” or “Build metadata, non-streaming assets, and streaming assets to separate banks” should avoid the issue.