| ... | @@ -34,6 +34,9 @@ const REPO_ROOT = NodePath.resolve(NodePath.dirname(NodeURL.fileURLToPath(import | ... | @@ -34,6 +34,9 @@ const REPO_ROOT = NodePath.resolve(NodePath.dirname(NodeURL.fileURLToPath(import |
| 34 | const MOBILE_ROOT = NodePath.join(REPO_ROOT, "apps/mobile"); | 34 | const MOBILE_ROOT = NodePath.join(REPO_ROOT, "apps/mobile"); |
| 35 | const ANDROID_PACKAGE = "com.t3tools.t3code"; | 35 | const ANDROID_PACKAGE = "com.t3tools.t3code"; |
| 36 | const APP_SCHEME = "t3code"; | 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 | const IOS_READY_FILENAME = "T3ShowcaseReadyScene"; | 40 | const IOS_READY_FILENAME = "T3ShowcaseReadyScene"; |
| 38 | const SERVER_HOST = "0.0.0.0"; | 41 | const SERVER_HOST = "0.0.0.0"; |
| 39 | const IOS_SIMULATOR_ARCH = NodeProcess.arch === "arm64" ? "arm64" : "x86_64"; | 42 | const IOS_SIMULATOR_ARCH = NodeProcess.arch === "arm64" ? "arm64" : "x86_64"; |
| ... | @@ -1107,25 +1110,9 @@ async function captureIos( | ... | @@ -1107,25 +1110,9 @@ async function captureIos( |
| 1107 | await runCommand("xcrun", ["simctl", "install", simulator.udid, appPath]); | 1110 | await runCommand("xcrun", ["simctl", "install", simulator.udid, appPath]); |
| 1108 | } | 1111 | } |
| 1109 | | 1112 | |
| 1110 | for (const [key, value] of [ | 1113 | // The dev-client launch URL carries the dev menu preferences (SDK 58), so |
| 1111 | ["EXDevMenuIsOnboardingFinished", "true"], | 1114 | // nothing is written into the app container ahead of launch. |
| 1112 | ["EXDevMenuShowFloatingActionButton", "false"], | 1115 | const metroUrl = `http://${metroHost}:${config.metroPort}?${DEV_CLIENT_LAUNCH_FLAGS}`; |
| 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`; | | |
| 1129 | const scenePath = NodePath.join( | 1116 | const scenePath = NodePath.join( |
| 1130 | await iosAppContainer(simulator.udid), | 1117 | await iosAppContainer(simulator.udid), |
| 1131 | "Library/Caches/T3ShowcaseScene", | 1118 | "Library/Caches/T3ShowcaseScene", |
| ... | @@ -1357,12 +1344,12 @@ async function writeAndroidShowcaseScene(serial: string, scene: ShowcaseScene): | ... | @@ -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 | async function prepareAndroidShowcaseApp(serial: string): Promise<void> { | 1350 | async function prepareAndroidShowcaseApp(serial: string): Promise<void> { |
| 1361 | const preferences = `<?xml version="1.0" encoding="utf-8" standalone="yes" ?> | 1351 | const preferences = `<?xml version="1.0" encoding="utf-8" standalone="yes" ?> |
| 1362 | <map> | 1352 | <map> |
| 1363 | <boolean name="isOnboardingFinished" value="true" /> | | |
| 1364 | <boolean name="showsAtLaunch" value="false" /> | | |
| 1365 | <boolean name="showFab" value="false" /> | | |
| 1366 | <boolean name="motionGestureEnabled" value="false" /> | 1353 | <boolean name="motionGestureEnabled" value="false" /> |
| 1367 | <boolean name="touchGestureEnabled" value="false" /> | 1354 | <boolean name="touchGestureEnabled" value="false" /> |
| 1368 | <boolean name="keyCommandsEnabled" value="false" /> | 1355 | <boolean name="keyCommandsEnabled" value="false" /> |
| ... | @@ -1435,7 +1422,7 @@ async function captureAndroid( | ... | @@ -1435,7 +1422,7 @@ async function captureAndroid( |
| 1435 | "-a", | 1422 | "-a", |
| 1436 | "android.intent.action.VIEW", | 1423 | "android.intent.action.VIEW", |
| 1437 | "-d", | 1424 | "-d", |
| 1438 | `${APP_SCHEME}://expo-development-client/?url=${metroUrl}`, | 1425 | `'${APP_SCHEME}://expo-development-client/?url=${metroUrl}&${DEV_CLIENT_LAUNCH_FLAGS}'`, |
| 1439 | "--es", | 1426 | "--es", |
| 1440 | "showcasePairingUrl", | 1427 | "showcasePairingUrl", |
| 1441 | encodeAndroidPairingUrls(pairingUrls), | 1428 | encodeAndroidPairingUrls(pairingUrls), |