Loading...
Loading...
Use when a Unity 6.3 game targets Android or iOS: phone frame budget, overheating after 20 minutes, 'my game stutters on phones', ASTC or ETC2 textures, audio import, URP mobile settings, touch controls, on-screen joystick, UI under the notch or safe area, slow startup, ANRs, 'Android build fails', AAB, keystore signing, target API 36, Google Play upload, iOS Xcode export or archive, privacy manifest, app size, in-app purchases (IAP 5), rewarded ads (LevelPlay), ad consent.
npx skill4agent add scenario-labs/skills scenario-unity-mobilenpx skills add scenario-labs/skills --skill <name>scripts/ut_mobile.pyut_envut_runut_statscripts/AgentKit/Mobile/scripts/Runtime/AssetPostprocessorOnApplicationPauseAwakeCallReportFullyDrawnConfirmPurchaseOnPurchasesFetchedFailedOrderProductjwsRepresentationOnAdRewardedTouchscreen.currentmovementRangeSafeAreaFitterScreen.height - safeArea.yMaxUNITY_IOSMobileTiers.AuditRenderingMobileBuild.AuditPlayerSettingsMobileTextures.AuditTexturesMobileAudio.AuditAudioMobileStartup.AuditStartuput_mobile.code_scan(P)ut_mobile.package_check(P)build_target="Android"MobileTiers.ApplyTiersMobileTierDirectorFeedAuditRenderingFixTexturesFixAudioAuditMeshesImportedFormatsImportedAudioimport_rules.jsonMobileImportRulesSafeAreaFitterBuildTouchHudFloatingTouchStickSafeAreaTestsTouchInputTestsCaptureSafeAreaAgentProfile.PlayModeTimingsbudget_verdict(csv, fps)DeviceSoakLoggerPurchaseLedgerRewardGateAdPacingAdsInitGateIap5StoreLevelPlayAdsMonetizationTestscode_scanpackage_checkmake_keystoreMobileBuild.BuildAndroidenv=keystore_env(ks)aab_findingsbundletool_sizesAssets/PluginsBuildIosxcode_factsxcode_findingsios_archive_plansoak_verdictExitInfo| Value | Relative to | Source |
|---|---|---|
| 16.67 / 10.83 ms, 33.33 / 21.67 ms | raw / sustained (65%) budget at 60 and 30 fps | e-book |
| 10 to 15 min; 20 to 30 min | cooldown between device captures; soak length | e-book; [added] |
| up to 1 ms CPU | each enabled camera on low-end mobile | e-book |
| 8 to 0.89 bpp | ASTC 4x4 to 12x12 | 6.3 Manual |
| < 200 KB / > 350 to 400 KB; 22,050 Hz | audio load type buckets; mobile SFX sample rate ceiling | e-book |
| 200 MB / 100 MB | AAB base module / APK on Play; also the iOS cellular download limit (200) | 6.3 Manual |
| 16 KB (p_align 0x4000) | every native library's LOAD segments, Android 15+ pages | version deltas |
| API 25 / 36 | 6.3 minimum / Play target since 2026-08-31 (6.5 raises the minimum to 26) | version deltas |
| iOS 15, A8; Xcode 26 + iOS 26 SDK | 6.3 minimum; App Store since 2026-04-28 | version deltas |
| 5 s (10 s on some Samsung); 128 bytes | ANR timeout; exit state summary | pezwIhA0e04 [00:02:01], [00:42:13] |
| 3 days | Google refunds an unacknowledged purchase | IAP 5 docs |
| 10 to 15 min; every 3 min | monetization-free start; interstitial interval after a milestone | ILv7GzDgteQ (heuristics) |
| 54998 to 55511 | outbound ports for iOS remote profiling | 6.3 Manual |
| 0.125 to 0.925 | default Gamepad stick deadzone applied to on-screen stick values | observed |
ImportedFormatsSafeAreaTestsTouchInputTestsMonetizationTestsTierDirectorTestsbudget_verdictaab_findingsxcode_findingsbundletool_sizescode_scanpackage_checksoak_verdictimage_checks| Mistake | What it looks like | Fix |
|---|---|---|
| profiling against 16.7 ms in the Editor | fine on the Mac, throttles after 10 minutes on a phone | 65% budget, device soak, p95/max |
| PC Quality level on the mobile target | captures use | |
| thermal response by resolution on a CPU-bound game | blurrier, barely faster | render scale only when GPU-bound; lodBias, shadows |
| RGBA32 override; HDR map without ASTC HDR | 5.3 MB for 1024 px; HDR imported as ETC2_RGBA8 | |
| streaming small clips; music Decompress On Load | 200 KB overhead per stream; whole PCM in memory | |
| keystore set once in the GUI | next batch build fails, or ships debug-signed | env vars read by |
| Development Build uploaded; symbols uploaded late | upload fails; early crashes never symbolicated | |
Gradle edits in | stale outputs from incremental builds | |
saves in | ANRs on pause; slow start under the splash | checkpoints; stagger SDK init; |
| IAP 4 code on IAP 5; LevelPlay 8 folders left | compile errors; pre-9 SDK files beside the 9.x package | pin packages, |
| a | retry with the kept |
| attribution SDK blind after IAP 5 | iOS revenue missing, no error | |
reward granted in | missing rewards; validation calls in release | |
| HUD anchored to the canvas; Simulator taken as proof | buttons under the notch; multitouch untested | |
| hiding the HUD when any Gamepad connects | the HUD hides itself: its own on-screen controls add a virtual Gamepad | |
| a declared privacy category | Unity's reasons for it dropped (0A2A.1, observed) | |
| 789.8 MB for a 53.9 MB AAB (observed) | |
aab_factsxcode_factsAndroidProjectFilesModifierAndroidProjectFiles.UnityLibraryManifestQualitySettings.SetQualityLevelGraphicsSettings.currentRenderPipelineQualitySettings.renderPipelineUnityRuntime.frameworkUnityEngine.AdaptivePerformanceLevelPlay.SetConsentLevelPlayPrivacySettingscom.unity.adsreferences/expert-notes.mdreferences/procedures.mdreferences/critique.mdreferences/gui-paths.mdreferences/sources.md