Hi, I have a few questions and concerns about the compatibility of apps in GrapheneOS (or any degoogled Android really) and what recourse or actions I can take to mitigate breakage and find out why some might not work. I do not use banking apps so those are not a concern for me at this time.

Around the release of Android 14, my GOS device auto downloaded and installed the stable version of A14, I had one app from the Play Store that I sideloaded and did not know if it would work on A14 at the time, the devs had announced that A14 was not yet officially supported and if the game fails to launch on A14 you are out of luck until the devs get around to fixing it and make an updated announcement, thanks to @matchboxbananasynergy, I was able to confirm the game worked on GrapheneOS Android 14 before updating, but I am in a similar situation now with the recent Android 15 release, and likely Android 16 in the future.

I did temporarily disable network for the system updater since I know for a fact it works on A14 but have no guarantees if it will work after upgrading to A15.

  1. It would be easy for me to confirm if the game works on the new release by simply having a 2nd device with GOS and just checking if the game launches there, but I do not have a second device, the game does use transfer codes to migrate your game data, so in theory I could request a code, update GOS, see if the game launches, and if not, could I flash an older GOS release if I have one downloaded? I don't remember if there is a rollback protection for this, the transfer code is to restore my game data in case flashing an older GOS release results in a device wipe due to unlocking the bootloader.

  2. How can I figure out the exact circumstances that cause the game to not launch? I have never been able to pinpoint why the game refuses to launch on certain Android devices/OS, I doubt SafetyNet or PlayIntegrity are at work since on GOS it has worked perfectly for the 2 years I've used it with zero Google apps installed at all (for which I owe much gratitude to the GrapheneOS team btw).

    sboarder could I flash an older GOS release if I have one downloaded?

    No.

    if there is a rollback protection for this

    Yes.

    How can I figure out the exact circumstances that cause the game to not launch? I have never been able to pinpoint why the game refuses to launch on certain Android devices/OS, I doubt SafetyNet or PlayIntegrity are at work since on GOS it has worked perfectly for the 2 years I've used it with zero Google apps installed at all (for which I owe much gratitude to the GrapheneOS team btw).

    There's always the app compatibility guide which should (generally) be of help.

    sboarder How can I figure out the exact circumstances that cause the game to not launch? I have never been able to pinpoint why the game refuses to launch on certain Android devices/OS

    Click on "View logs" under "App info." If there's something you don't understand, share the information and someone will assist you.

      ErnestThornhill

      Thanks for the reply, I knew about the app logs feature for a while, but since the game loads and functions without aborting on my GrapheneOS device then the logs might not help me pinpoint why the app might abort, but I do have another Android environment in which the game does not work, but it is not GrapheneOS, does that matter? I can still get logcat messages from those and potentially get some useful info.

      I tried to look through logcat messages and think I might have found a possible culprit, on GrapheneOS, where it works without Google Play services installed, I see:

      10-25 15:04:27.382 28746 28866 E DynamiteModule: Invalid GmsCore APK, remote loading disabled.
      10-25 15:04:27.382 28746 28866 I DynamiteModule: Considering local module com.google.android.gms.measurement.dynamite:112 and remote module com.google.android.gms.measurement.dynamite:0
      10-25 15:04:27.382 28746 28866 I DynamiteModule: Selected local version of com.google.android.gms.measurement.dynamite
      10-25 15:04:27.382 28746 28866 E DynamiteModule: Invalid GmsCore APK, remote loading disabled.
      10-25 15:04:27.385 28746 28867 W Metadata: Failed to find package android.content.pm.PackageManager$NameNotFoundException: com.google.android.gms
      10-25 15:04:27.386 28746 28870 E FirebaseInstanceId: Google Play services missing or without correct permission.
      10-25 15:04:27.387 28746 28746 I FirebaseInitProvider: FirebaseApp initialization successful
      10-25 15:04:27.392 28746 28869 I FA      : App measurement initialized, version: 92000
      10-25 15:04:27.393 28746 28869 I FA      : To enable debug logging run: adb shell setprop log.tag.FA VERBOSE

      But on Waydroid, where the app immediately aborts and exits:

      10-25 15:53:38.319  1662  1713 E DynamiteModule: Invalid GmsCore APK, remote loading disabled.
      10-25 15:53:38.320  1662  1713 I DynamiteModule: Considering local module com.google.android.gms.measurement.dynamite:112 and remote module com.google.android.gms.measurement.dynamite:0
      10-25 15:53:38.320  1662  1713 I DynamiteModule: Selected local version of com.google.android.gms.measurement.dynamite
      10-25 15:53:38.320  1662  1713 E DynamiteModule: Invalid GmsCore APK, remote loading disabled.
      10-25 15:53:38.321  1662  1662 D AndroidRuntime: Shutting down VM
      10-25 15:53:38.321  1662  1662 E AndroidRuntime: java.lang.RuntimeException: Unable to get provider com.google.firebase.provider.FirebaseInitProvider: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at android.app.ActivityThread.installProvider(ActivityThread.java:7252)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at android.app.ActivityThread.installContentProviders(ActivityThread.java:6788)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6705)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at android.app.ActivityThread.access$1300(ActivityThread.java:237)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:106)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:223)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:7665)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:948)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at java.util.Formatter.parse(Formatter.java:2546)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at java.util.Formatter.format(Formatter.java:2505)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at java.util.Formatter.format(Formatter.java:2459)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at java.lang.String.format(String.java:2911)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at com.google.firebase.concurrent.CustomThreadFactory.newThread(Unknown Source:43)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at java.util.concurrent.ThreadPoolExecutor$Worker.<init>(ThreadPoolExecutor.java:636)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:950)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1382)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at com.google.firebase.concurrent.DelegatingScheduledExecutorService.execute(Unknown Source:9)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at com.google.android.gms.tasks.Tasks.call(Unknown Source:27)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at com.google.firebase.heartbeatinfo.DefaultHeartBeatController.registerHeartBeat(Unknown Source:76)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at com.google.firebase.FirebaseApp.initializeAllApis(Unknown Source:107)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at com.google.firebase.FirebaseApp.initializeApp(Unknown Source:111)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at com.google.firebase.FirebaseApp.initializeApp(Unknown Source:9)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at com.google.firebase.FirebaseApp.initializeApp(Unknown Source:18)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source:19)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at android.content.ContentProvider.attachInfo(ContentProvider.java:2388)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at android.content.ContentProvider.attachInfo(ContentProvider.java:2358)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source:10)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        at android.app.ActivityThread.installProvider(ActivityThread.java:7247)
      10-25 15:53:38.321  1662  1662 E AndroidRuntime:        ... 10 more

      It seems like Firebase is not able to properly initialize on Waydroid and causes the crash due to a null object, but I'm not sure why that is, any clues as to why?

      I also noticed that under GOS the app logs show a lot of the following:

      10-25 15:04:26.952 28746 28746 W libc    : Access denied finding property "ro.debuggable"

      Could it be that the app refuses to run on Android with ro.debuggable set to 1 as is the case in Waydroid? I feel like that's too simple to be the cause, maybe there are other props that get checked but are denied by GOS that the app uses to determine if it will run or abort.

      The debuggable option was indeed the problem, I feel silly now.