| ... | ... | @@ -34,6 +34,9 @@ const REPO_ROOT = NodePath.resolve(NodePath.dirname(NodeURL.fileURLToPath(import |
| 34 | 34 | const MOBILE_ROOT = NodePath.join(REPO_ROOT, "apps/mobile"); |
| 35 | 35 | const ANDROID_PACKAGE = "com.t3tools.t3code"; |
| 36 | 36 | const APP_SCHEME = "t3code"; |
| 37 | // expo-dev-launcher reads these off the manifest URL and updates the dev menu |
| 38 | // preferences before the app loads, keeping captures free of dev chrome. |
| 39 | const DEV_CLIENT_LAUNCH_FLAGS = "disableOnboarding=1&disableFab=1&disableAutoLaunch=1"; |
| 37 | 40 | const IOS_READY_FILENAME = "T3ShowcaseReadyScene"; |
| 38 | 41 | const SERVER_HOST = "0.0.0.0"; |
| 39 | 42 | const IOS_SIMULATOR_ARCH = NodeProcess.arch === "arm64" ? "arm64" : "x86_64"; |
| ... | ... | @@ -1107,25 +1110,9 @@ async function captureIos( |
| 1107 | 1110 | await runCommand("xcrun", ["simctl", "install", simulator.udid, appPath]); |
| 1108 | 1111 | } |
| 1109 | 1112 | |
| 1110 | | for (const [key, value] of [ |
| 1111 | | ["EXDevMenuIsOnboardingFinished", "true"], |
| 1112 | | ["EXDevMenuShowFloatingActionButton", "false"], |
| 1113 | | ["EXDevMenuShowsAtLaunch", "false"], |
| 1114 | | ] as const) { |
| 1115 | | await runCommand("xcrun", [ |
| 1116 | | "simctl", |
| 1117 | | "spawn", |
| 1118 | | simulator.udid, |
| 1119 | | "defaults", |
| 1120 | | "write", |
| 1121 | | ANDROID_PACKAGE, |
| 1122 | | key, |
| 1123 | | "-bool", |
| 1124 | | value, |
| 1125 | | ]); |
| 1126 | | } |
| 1127 | | |
| 1128 | | const metroUrl = `http://${metroHost}:${config.metroPort}?disableOnboarding=1`; |
| 1113 | // The dev-client launch URL carries the dev menu preferences (SDK 58), so |
| 1114 | // nothing is written into the app container ahead of launch. |
| 1115 | const metroUrl = `http://${metroHost}:${config.metroPort}?${DEV_CLIENT_LAUNCH_FLAGS}`; |
| 1129 | 1116 | const scenePath = NodePath.join( |
| 1130 | 1117 | await iosAppContainer(simulator.udid), |
| 1131 | 1118 | "Library/Caches/T3ShowcaseScene", |
| ... | ... | @@ -1357,12 +1344,12 @@ async function writeAndroidShowcaseScene(serial: string, scene: ShowcaseScene): |
| 1357 | 1344 | ]); |
| 1358 | 1345 | } |
| 1359 | 1346 | |
| 1347 | // Gesture and key-command toggles have no launch-URL flag, so they still go |
| 1348 | // through the preferences file; onboarding, auto-launch and the floating button |
| 1349 | // come from DEV_CLIENT_LAUNCH_FLAGS on the launch URL. |
| 1360 | 1350 | async function prepareAndroidShowcaseApp(serial: string): Promise<void> { |
| 1361 | 1351 | const preferences = `<?xml version="1.0" encoding="utf-8" standalone="yes" ?> |
| 1362 | 1352 | <map> |
| 1363 | | <boolean name="isOnboardingFinished" value="true" /> |
| 1364 | | <boolean name="showsAtLaunch" value="false" /> |
| 1365 | | <boolean name="showFab" value="false" /> |
| 1366 | 1353 | <boolean name="motionGestureEnabled" value="false" /> |
| 1367 | 1354 | <boolean name="touchGestureEnabled" value="false" /> |
| 1368 | 1355 | <boolean name="keyCommandsEnabled" value="false" /> |
| ... | ... | @@ -1435,7 +1422,7 @@ async function captureAndroid( |
| 1435 | 1422 | "-a", |
| 1436 | 1423 | "android.intent.action.VIEW", |
| 1437 | 1424 | "-d", |
| 1438 | | `${APP_SCHEME}://expo-development-client/?url=${metroUrl}`, |
| 1425 | `'${APP_SCHEME}://expo-development-client/?url=${metroUrl}&${DEV_CLIENT_LAUNCH_FLAGS}'`, |
| 1439 | 1426 | "--es", |
| 1440 | 1427 | "showcasePairingUrl", |
| 1441 | 1428 | encodeAndroidPairingUrls(pairingUrls), |