[Bug][2.02.06] Android startup crash

Hi @jeff_fmod , here are some clarifications:

  • We were on an old FMOD version previously, I forget which one, but the crash was not present.
  • We tried upgrading to the 2.02.12, which we put into production, and started getting the java.lang.UnsatisfiedLinkError: No implementation found for void org.fmod.FMOD.OutputAAudioHeadphonesChanged()
  • We reverted back to the previous version we were on and the crash was gone once again.
  • Later, we were required by other factors to upgrade the NDK version our app uses. We upgraded it to the latest version, and this required us to also upgrade FMOD once again (the app would not compile otherwise). We upgraded the NDK to version 25.1.8937393
  • We decided not to upgrade to the latest FMOD (2.02.13) because we knew that version caused this crash. We tried using 2.02.05 instead, thinking this thread indicated the crash was introduced in 2.02.06.
  • The crash is happening in production still and affects many of our users.

I can provide other details if needed, thanks

EDIT: Actually, I just noticed that the version we were using in production was still 2.02.12. So I will try truly downgrading to 2.02.05 which will likely solve the problem, but I am hoping we can update to later versions soon, but we cannot until this bug is fixed.

Thank you for the additional information, and apologies for the delayed response.
That error means the libfmod.so/libfmodL.so library has not been loaded. Some possibilities I can think of:

  • The libraries are being loaded too late. You can eliminate this possibility by loading libraries at static initialization time. We use this to load libraries in our shipped Android examples:
    public class MainActivity extends Activity implements OnTouchListener, Runnable
    {
    ...
        static
        {
            for (String lib: BuildConfig.FMOD_LIBS)
            {
                System.loadLibrary(lib);
            }
            System.loadLibrary("example");
        }
    }
    
  • The application was installed through something other than Google Play, and the libraries were not extracted to a standard location. To verify if this is a possibility, you could use Context.getPackageManager().getInstallSourceInfo(packageName) to see what package manager was used to install the application.
  • The user installed an APK that uses libraries that were not compiled for their target architecture. Using x86_64 libs on an armeabi-v7a device for example. You can use Build.SUPPORTED_ABIS to query the user’s ABI and check it against the APK’s target architecture.

If you could incorporate these queries into your telemetry that might provide more insights into the crash. Have you been able to reproduce this crash locally?

@jeff_fmod thanks for the response. We have not been able to reproduce the crash locally. That being said, about 1% of users are getting this crash in production. I guess it could be due to users side loading the app from elsewhere then Google Play.

I will add logs for the install source, as well as the comparisons of ABIs. I will also try preloading the libs as you suggested and report back!