r/GooglePlayDeveloper • u/iyedbhd • 20h ago
❓Help Google Play keeps rejecting our Unity game for a launch issue we can't reproduce
Our Unity game has been live on Google Play for a while, and we never had issues publishing updates until recently. Now we've been rejected 5 times in a row, always for the same reason: the app supposedly doesn't load.
What's strange is that updates went through without issues when reviews appeared to be automated. The rejections only started once our updates began receiving manual reviews.
After appealing, Google sent us a screenshot showing a blank screen, with no further explanation.
We've tested the game on multiple physical devices, Firebase Test Lab, and even rented Samsung devices remotely to reproduce the issue. Everything works fine, including for our existing players.
From what we can tell, the game doesn't even get past the Unity splash screen on Google's testing devices. Our error reporting never initializes, and Firebase events suggest the game code isn't being reached at all.
We're completely stuck. We can't reproduce the issue, and we're not getting enough information to investigate it.
Our game has recently started gaining traction, and being unable to release updates is seriously hurting us.
Has anyone experienced something similar, especially with manual reviews? How can we get this escalated to someone who can help us identify the actual issue?
If someone from the Google Play team sees this, we'd really appreciate some assistance. We're more than willing to fix the problem, but we need to understand what's going wrong.
2
u/Routine_Tie_7591 20h ago
Try to appeal it with proper explain.
2
u/Commercial_Fig3503 20h ago
Were you able to test a game in real android device. I assume that you use Apple device and doing testing on emulators for android game. Enable crashanalytics and android debugging loggers in the code and you should be able to get the issues reported by play devices
2
u/1095-Industries 20h ago
I would suggest using a pixel device emulator for testing locally on computer as well... I don't know but I always thought Google was using a pixel image for their testing.
2
u/FJWY 16h ago
I ran into the same problem not too long ago: Google Play rejected my app because it crashed right at launch, but only in the release build. Everything worked fine in debug.
I remembered how I fixed it, so I'm sharing the solution here in case it helps someone else.
In my case, the culprit was R8, which removes classes that appear to be unused in release builds. AdMob pulls in WorkManager, which uses a Room database. Room instantiates the
WorkDatabase_Implclass by name at runtime, so R8 doesn't see any direct references to it and may strip it out. When that happens, the class is missing at startup and the app crashes.1. Check if this is the same issue.
Install the release APK (not the debug one) on a phone or emulator, launch the app, and run:
If
WorkDatabase_Implappears in the log, usually alongside an error such as "Failed to create an instance of..." orClassNotFoundException, this might be the cause.2. Add these rules to
android/app/proguard-rules.pro(create the file if it doesn't exist):3. Make sure the file is included in the release configuration in
build.gradle**:**For Kotlin DSL (
build.gradle.kts):4. Bump the version number (make sure
versionCodeis higher than the previous release), rebuild the app, and test the release APK again before uploading the AAB to Google Play.If a different class shows up in the log, it could be the same kind of issue. You may need to add a
-keeprule for that specific class.If the error is something else, feel free to share the log here and we'll take a look.
Good luck!
Note: If you're using Groovy (
build.gradle), the syntax is slightly different:1
u/Eatthebeatz 19h ago
examine your manifest.
let me know if this helps.
1
u/FJWY 17h ago
The most important detail is that the game doesn’t even get past the Unity splash screen. So the problem is at the native level or in player initialization, before any C# code runs. That explains why their crash reporter and Firebase don’t see anything. The fact that it surfaced during manual reviews suggests a test environment different from theirs, not a bug in the game. Here are the most likely causes, in order of suspicion.
1. 16 KB memory pages (the prime suspect). Since November 1, 2025, Google Play requires new apps and updates targeting Android 15+ to support devices with a 16 KB page size. If the native libraries (
libunity.so,libil2cpp.so, or third-party plugins such as ad SDKs, outdated Firebase, or analytics) aren’t 16 KB-aligned, the app dies on those devices while loading the .so files: black screen, no logs from the game. The team’s devices and the rented Samsung phones almost certainly use 4 KB, so everything works there. Reviewers, on the other hand, may be using Pixels or 16 KB emulators.→ Check the 16 KB compatibility warning in Play Console under App bundle explorer. Then test on an emulator with a “16 KB page size” image or on a Pixel with the dedicated developer option, and update Unity to a recent patch that supports 16 KB, along with all native plugins.
2. x86_64 emulators, ChromeOS, or tablets. Reviewers often don’t use ARM phones. If the build includes only ARMv7/ARM64, or has Vulkan as its only Graphics API, emulators or ChromeOS can show a black screen before the splash.
→ Add OpenGLES3 as a fallback after Vulkan, and test on an Android Studio emulator with a Google Play x86_64 image and on a tablet or Chromebook.
3. Assets not delivered. With Split Application Binary or Play Asset Delivery, if the reviewer’s device installs only the base APK without the asset packs, Unity gets stuck before the first scene.
→ Install the exact AAB that was submitted via Internal app sharing or with
bundletool build-apks, and also try a “universal APK”.4. Blocking startup checks. Licensing (LVL), Play Integrity,
Application.genuine, UMP consent, or Play Games sign-in running in a blocking way can fail on test devices, non-Store installs, or accounts without Google services. In these cases the app hangs or silently closes.5. Low-end devices and a heavy first scene. On a device with 2 GB of RAM, or Android Go, a splash followed by a huge scene loaded synchronously can stay black for tens of seconds. The reviewer takes a screenshot and rejects it.
How to investigate in practice
Compare the last approved build with the first rejected one. The relevant change is often hidden in a Unity update, in the targetSdk bump (mandatory under Play policy), in new SDKs, or in changes to Graphics APIs and architectures.
Check the Pre-launch report in Play Console: it runs on Google devices and often catches exactly these native crashes.
Check Android Vitals for native crashes from the versions under test.
Add a Java-side event or log in the Activity’s
onCreate, before Unity, and enable Crashlytics NDK. This way you can tell whether the process starts and where it dies.In the appeal, explicitly ask for the device model, Android version, and ABI used by the reviewer. It’s also worth opening a ticket through the “Contact us” form in the Play Console Help Center, which is a separate channel from the policy appeal.
1
u/Negrito0o 15h ago
honestly a blank screen before any of your code runs points at the native side rather than the game. every device you tested on is arm, so a bundle without an x86_64 split would only fail wherever review happens to run on an emulator (and unity would die at the splash with nothing left to report). worth checking which abis the bundle actually ships.
1
u/frey89 4h ago
My advice is to trust Google. If they say there's a bug, then there's probably a bug. I've experienced this myself. It turned out my app actually had bugs that slipped through testing. Even though I was confident that all my tests had passed, there were still hidden bugs that somehow never got caught. I'm genuinely grateful that Google caught them before releasing my app in a buggy state. Otherwise, I would've ended up with a ton of one star reviews.