Repository: flutter
Issue: `flutter run` on flutter-tester device doesn't cache builds
Labels: a: tests,tool,has reproducible steps,P3,team-tool,triaged-tool,found in release: 3.13,found in release: 3.16

I want to run an app headlessley during development using the flutter-tester device, but every run of  `flutter run -d flutter-tester` does a fresh rebuild, making it extremely slow. Every build also creates a new set of artifacts in `<project root>/.dart_tool/flutter_build`.

This is because the build uniqueness hash is different for every build on the test device:

1. The flutter-tester device uses a random temp dir as the build assets output dir: https://github.com/flutter/flutter/blob/136249f2d61629ad952352646d2d64ba4d146ac5/packages/flutter_tools/lib/src/tester/flutter_tester.dart#L144
3. That random name is used as part of the build uniqueness: https://github.com/flutter/flutter/blob/136249f2d61629ad952352646d2d64ba4d146ac5/packages/flutter_tools/lib/src/build_system/build_system.dart#L358

I've looked into making a PR for this, but I'm not sure what a good solution would be. The random temp dir was added so that two integration tests could be run simultaneously: https://github.com/flutter/flutter/pull/75922

Would you have a suggestion, @jonahwilliams? Is there a way to keep that ability but have incremental rebuilds?

----

### Steps to reproduce
With any flutter app:
1. `flutter clean` 
2. `flutter run -d flutter-tester`
4. Stop the app 
5. Run  `flutter run -d flutter-tester` again

### Expected results
1. The app starts again almost immediatly (a similar speed to re-running `flutter test`)
2. There's only one artefact directory under `<project root>/.dart_tool/flutter_build`

### Actual results
1. Every build is the same speed
2. Every build creates a different artefact directory

### Logs

<details><summary>Build output</summary>

```console
[  +22 ms] executing: sw_vers -productName
[  +22 ms] Exit code 0 from: sw_vers -productName
[        ] macOS
[        ] executing: sw_vers -productVersion
[   +9 ms] Exit code 0 from: sw_vers -productVersion
[        ] 14.0
[        ] executing: sw_vers -buildVersion
[   +9 ms] Exit code 0 from: sw_vers -buildVersion
[        ] 23A344
[        ] executing: uname -m
[   +3 ms] Exit code 0 from: uname -m
[        ] x86_64
[   +4 ms] executing: sysctl hw.optional.arm64
[   +3 ms] Exit code 0 from: sysctl hw.optional.arm64
[        ] hw.optional.arm64: 1
[  +65 ms] executing: sysctl hw.optional.arm64
[   +4 ms] Exit code 0 from: sysctl hw.optional.arm64
[        ] hw.optional.arm64: 1
[        ] executing: /usr/bin/arch -arm64e xcrun xcodebuild -version
[ +104 ms] Exit code 0 from: /usr/bin/arch -arm64e xcrun xcodebuild -version
[        ] Xcode 15.0
           Build version 15A240d
[   +1 ms] executing: /usr/bin/arch -arm64e xcrun xcdevice list --timeout 5
[   +3 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[        ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update.
[        ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[  +16 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[        ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update.
[        ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[  +23 ms] Skipping pub get: version match.
[  +60 ms] Generating /Users/tom/temp/dummy_app/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
[  +31 ms] Initializing file store
[   +2 ms] Skipping target: gen_localizations
[   +2 ms] gen_dart_plugin_registrant: Starting due to {InvalidatedReasonKind.inputChanged: The following inputs have updated contents: /Users/tom/temp/dummy_app/.dart_tool/package_config_subset}
[   +9 ms] gen_dart_plugin_registrant: Complete
[        ] Skipping target: _composite
[        ] complete
[   +1 ms] Launching lib/main.dart on Flutter test device in debug mode...
[   +1 ms] /Users/tom/.puro/envs/stable/flutter/bin/cache/dart-sdk/bin/dart --disable-dart-dev /Users/tom/.puro/envs/stable/flutter/bin/cache/dart-sdk/bin/snapshots/frontend_server.dart.snapshot --sdk-root /Users/tom/.puro/envs/stable/flutter/bin/cache/artifacts/engine/common/flutter_patched_sdk/ --incremental --target=flutter --experimental-emit-debug-metadata -DFLUTTER_WEB_AUTO_DETECT=true -DFLUTTER_WEB_CANVASKIT_URL=https://www.gstatic.com/flutter-canvaskit/767d8c75e898091b925519803830fc2721658d07/ --output-dill /var/folders/kl/8h9z437d299dpwg_d6fcx7k80000gr/T/flutter_tools.pnuPuE/flutter_tool.pKBQfh/app.dill --packages /Users/tom/temp/dummy_app/.dart_tool/package_config.json -Ddart.vm.profile=false -Ddart.vm.product=false --enable-asserts --track-widget-creation --filesystem-scheme org-dartlang-root --initialize-from-dill build/9849d3fde14f8238bc82d80453267a41.cache.dill.track.dill --verbosity=error --enable-experiment=alternative-invalidation-strategy
[   +4 ms] Initializing file store
[   +1 ms] Skipping target: gen_localizations
[   +1 ms] gen_dart_plugin_registrant: Starting due to {InvalidatedReasonKind.inputChanged: The following inputs have updated contents: /Users/tom/temp/dummy_app/.dart_tool/package_config_subset}
[   +5 ms] gen_dart_plugin_registrant: Complete
[        ] kernel_snapshot: Starting due to {}
[   +2 ms] /Users/tom/.puro/envs/stable/flutter/bin/cache/dart-sdk/bin/dart --disable-dart-dev /Users/tom/.puro/envs/stable/flutter/bin/cache/dart-sdk/bin/snapshots/frontend_server.dart.snapshot --sdk-root /Users/tom/.puro/envs/stable/flutter/bin/cache/artifacts/engine/common/flutter_patched_sdk/ --target=flutter --no-print-incremental-dependencies -DFLUTTER_WEB_AUTO_DETECT=true -DFLUTTER_WEB_CANVASKIT_URL=https://www.gstatic.com/flutter-canvaskit/767d8c75e898091b925519803830fc2721658d07/ -Ddart.vm.profile=false -Ddart.vm.product=false --enable-asserts --track-widget-creation --packages /Users/tom/temp/dummy_app/.dart_tool/package_config.json --output-dill /Users/tom/temp/dummy_app/.dart_tool/flutter_build/77f45a81fd0a13cd72df045513b21ea5/app.dill --depfile /Users/tom/temp/dummy_app/.dart_tool/flutter_build/77f45a81fd0a13cd72df045513b21ea5/kernel_snapshot.d --filesystem-scheme org-dartlang-root --incremental --initialize-from-dill /Users/tom/temp/dummy_app/.dart_tool/flutter_build/77f45a81fd0a13cd72df045513b21ea5/app.dill --verbosity=error package:dummy_app/main.dart
[   +9 ms] <- compile package:dummy_app/main.dart
[+3568 ms] kernel_snapshot: Complete
[ +280 ms] copy_flutter_bundle: Starting due to {}
[  +62 ms] shaderc command: [/Users/tom/.puro/envs/stable/flutter/bin/cache/artifacts/engine/darwin-x64/impellerc, --sksl, --iplr, --sl=/var/folders/kl/8h9z437d299dpwg_d6fcx7k80000gr/T/flutter_tools.pnuPuE/flutter_tester.uUyBXf/shaders/ink_sparkle.frag, --spirv=/var/folders/kl/8h9z437d299dpwg_d6fcx7k80000gr/T/flutter_tools.pnuPuE/flutter_tester.uUyBXf/shaders/ink_sparkle.frag.spirv, --input=/Users/tom/.puro/envs/stable/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag, --input-type=frag, --include=/Users/tom/.puro/envs/stable/flutter/packages/flutter/lib/src/material/shaders, --include=/Users/tom/.puro/envs/stable/flutter/bin/cache/artifacts/engine/darwin-x64/shader_lib]
[ +110 ms] copy_flutter_bundle: Complete
[ +390 ms] Persisting file store
[   +4 ms] Done persisting file store
[  +13 ms] /Users/tom/.puro/envs/stable/flutter/bin/cache/artifacts/engine/darwin-x64/flutter_tester --run-forever --non-interactive --enable-dart-profiling --packages=/Users/tom/temp/dummy_app/.dart_tool/package_config.json --flutter-assets-dir=/var/folders/kl/8h9z437d299dpwg_d6fcx7k80000gr/T/flutter_tools.pnuPuE/flutter_tester.uUyBXf /var/folders/kl/8h9z437d299dpwg_d6fcx7k80000gr/T/flutter_tools.pnuPuE/flutter_tester.uUyBXf/flutter-tester-app.dill.track.dill
[  +44 ms] VM Service URL on device: http://127.0.0.1:55482/8gVMuoKy1sg=/
[   +1 ms] Caching compiled dill
[  +12 ms] Connecting to service protocol: http://127.0.0.1:55482/8gVMuoKy1sg=/
[  +53 ms] Launching a Dart Developer Service (DDS) instance at http://127.0.0.1:0, connecting to VM service at http://127.0.0.1:55482/8gVMuoKy1sg=/.
[ +101 ms] DDS is listening at http://127.0.0.1:55485/iT8bLUAQIR4=/.
[  +24 ms] Successfully connected to service protocol: http://127.0.0.1:55482/8gVMuoKy1sg=/
[  +12 ms] DevFS: Creating new filesystem on the device (null)
[   +5 ms] DevFS: Created new filesystem on the device (file:///var/folders/kl/8h9z437d299dpwg_d6fcx7k80000gr/T/dummy_appDiGCx7/dummy_app/)
[        ] Updating assets
[  +30 ms] Syncing files to device Flutter test device...
[   +1 ms] Compiling dart to kernel with 0 updated files
[        ] Processing bundle.
[        ] <- recompile package:dummy_app/main.dart d232e593-e370-4fdb-bd9a-fbcbb8026554
[        ] <- d232e593-e370-4fdb-bd9a-fbcbb8026554
[        ] Bundle processing done.
[  +30 ms] Updating files.
[        ] DevFS: Sync finished
[   +3 ms] Syncing files to device Flutter test device... (completed in 33ms)
[        ] Synced 0.0MB.
[        ] <- accept
[   +1 ms] Connected to _flutterView/0x12581ee20.
[   +1 ms] Flutter run key commands.
[        ] r Hot reload. 🔥🔥🔥
[        ] R Hot restart.
[        ] h List all available interactive commands.
[        ] d Detach (terminate "flutter run" but leave application running).
[        ] c Clear the screen
[        ] q Quit (terminate the application on the device).
[        ] A Dart VM Service on Flutter test device is available at: http://127.0.0.1:55485/iT8bLUAQIR4=/
[ +178 ms] The Flutter DevTools debugger and profiler on Flutter test device is available at: http://127.0.0.1:55488?uri=http://127.0.0.1:55485/iT8bLUAQIR4=/
[ +471 ms] [
             {
               "simulator" : true,
               "operatingSystemVersion" : "17.0 (21A328)",
               "available" : true,
               "platform" : "com.apple.platform.iphonesimulator",
               "modelCode" : "iPad14,3",
               "identifier" : "47D878F0-10BD-4BF1-B5AF-5331F2C2DFF5",
               "architecture" : "arm64",
               "modelUTI" : "com.apple.ipad-pro-11-4th-1",
               "modelName" : "iPad Pro (11-inch) (4th generation)",
               "name" : "iPad Pro (11-inch) (4th generation)",
               "ignored" : false
             },
             {
               "ignored" : false,
               "modelCode" : "Watch7,4",
               "simulator" : true,
               "modelName" : "Apple Watch Series 9 (45mm)",
               "operatingSystemVersion" : "10.0 (21R355)",
               "identifier" : "606BB4F8-BCEE-48ED-82D9-AB5397D6889C",
               "platform" : "com.apple.platform.watchsimulator",
               "companionDevice" : {
                 "simulator" : true,
                 "operatingSystemVersion" : "17.0 (21A328)",
                 "available" : true,
                 "platform" : "com.apple.platform.iphonesimulator",
                 "modelCode" : "iPhone16,1",
                 "identifier" : "70C5A015-BC8F-4AC8-B605-E747F675AF02",
                 "architecture" : "arm64",
                 "modelUTI" : "com.apple.iphone-15-pro-1",
                 "modelName" : "iPhone 15 Pro",
                 "name" : "iPhone 15 Pro",
                 "ignored" : false
               },
               "architecture" : "arm64",
               "available" : true,
               "name" : "Apple Watch Series 9 (45mm)",
               "modelUTI" : "com.apple.watch-series9-1"
             },
             {
               "simulator" : true,
               "operatingSystemVersion" : "10.0 (21R355)",
               "available" : true,
               "platform" : "com.apple.platform.watchsimulator",
               "modelCode" : "Watch5,4",
               "identifier" : "312D871E-D9E0-4C58-93F2-B3F10C998EA8",
               "architecture" : "arm64",
               "modelUTI" : "com.apple.watch-series5-1",
               "modelName" : "Apple Watch Series 5 (44mm)",
               "name" : "Apple Watch Series 5 (44mm)",
               "ignored" : false
             },
             {
               "simulator" : true,
               "operatingSystemVersion" : "17.0 (21A328)",
               "available" : true,
               "platform" : "com.apple.platform.iphonesimulator",
               "modelCode" : "iPad14,5",
               "identifier" : "BA880E8F-88B9-46BC-8E00-02E6B88329E4",
               "architecture" : "arm64",
               "modelUTI" : "com.apple.ipad-pro-12point9-6th-1",
               "modelName" : "iPad Pro (12.9-inch) (6th generation)",
               "name" : "iPad Pro (12.9-inch) (6th generation)",
               "ignored" : false
             },
             {
               "simulator" : true,
               "operatingSystemVersion" : "10.0 (21R355)",
               "available" : true,
               "platform" : "com.apple.platform.watchsimulator",
               "modelCode" : "Watch6,1",
               "identifier" : "4B1128E0-CBA9-4A56-9F8D-EB1B2A2A3A93",
               "architecture" : "arm64",
               "modelUTI" : "com.apple.watch-series6-1",
               "modelName" : "Apple Watch Series 6 (40mm)",
               "name" : "Apple Watch Series 6 (40mm)",
               "ignored" : false
             },
             {
               "simulator" : true,
               "operatingSystemVersion" : "10.0 (21R355)",
               "available" : true,
               "platform" : "com.apple.platform.watchsimulator",
               "modelCode" : "Watch6,12",
               "identifier" : "A688218C-0AA1-41B2-9210-32F64051C519",
               "architecture" : "arm64",
               "modelUTI" : "com.apple.watch-se-2nd-1",
               "modelName" : "Apple Watch SE (40mm) (2nd generation)",
               "name" : "Apple Watch SE (40mm) (2nd generation)",
               "ignored" : false
             },
             {
               "simulator" : true,
               "operatingSystemVersion" : "10.0 (21R355)",
               "available" : true,
               "platform" : "com.apple.platform.watchsimulator",
               "modelCode" : "Watch6,6",
               "identifier" : "3250A44D-CA03-49A1-AC2B-6BAF46CE03D8",
               "architecture" : "arm64",
               "modelUTI" : "com.apple.watch-series7-1",
               "modelName" : "Apple Watch Series 7 (41mm)",
               "name" : "Apple Watch Series 7 (41mm)",
               "ignored" : false
             },
             {
               "simulator" : true,
               "operatingSystemVersion" : "17.0 (21A328)",
               "available" : true,
               "platform" : "com.apple.platform.iphonesimulator",
               "modelCode" : "iPhone14,6",
               "identifier" : "3D3EEF15-A00A-41C4-A2A0-F8DD3D7819DF",
               "architecture" : "arm64",
               "modelUTI" : "com.apple.iphone-se3-1",
               "modelName" : "iPhone SE (3rd generation)",
               "name" : "iPhone SE (3rd generation)",
               "ignored" : false
             },
             {
               "simulator" : true,
               "operatingSystemVersion" : "17.0 (21A328)",
               "available" : true,
               "platform" : "com.apple.platform.iphonesimulator",
               "modelCode" : "iPad14,1",
               "identifier" : "B3C73559-E167-4AC7-80FE-7809C5EB0E2E",
               "architecture" : "arm64",
               "modelUTI" : "com.apple.ipad-mini6-1",
               "modelName" : "iPad mini (6th generation)",
               "name" : "iPad mini (6th generation)",
               "ignored" : false
             },
             {
               "simulator" : true,
               "operatingSystemVersion" : "17.0 (21A328)",
               "available" : true,
               "platform" : "com.apple.platform.iphonesimulator",
               "modelCode" : "iPhone16,2",
               "identifier" : "88D5E574-AE66-432D-926C-1FD62BE1100B",
               "architecture" : "arm64",
               "modelUTI" : "com.apple.iphone-15-pro-max-1",
               "modelName" : "iPhone 15 Pro Max",
               "name" : "iPhone 15 Pro Max",
               "ignored" : false
             },
             {
               "simulator" : true,
               "operatingSystemVersion" : "17.0 (21A328)",
               "available" : true,
               "platform" : "com.apple.platform.iphonesimulator",
               "modelCode" : "iPhone15,5",
               "identifier" : "76751C43-289D-4029-A870-E83B59039E16",
               "architecture" : "arm64",
               "modelUTI" : "com.apple.iphone-15-plus-1",
               "modelName" : "iPhone 15 Plus",
               "name" : "iPhone 15 Plus",
               "ignored" : false
             },
             {
               "simulator" : true,
               "operatingSystemVersion" : "17.0 (21A328)",
               "available" : true,
               "platform" : "com.apple.platform.iphonesimulator",
               "modelCode" : "iPhone16,1",
               "identifier" : "70C5A015-BC8F-4AC8-B605-E747F675AF02",
               "architecture" : "arm64",
               "modelUTI" : "com.apple.iphone-15-pro-1",
               "modelName" : "iPhone 15 Pro",
               "name" : "iPhone 15 Pro",
               "ignored" : false
             },
             {
               "ignored" : false,
               "modelCode" : "Watch7,5",
               "simulator" : true,
               "modelName" : "Apple Watch Ultra 2 (49mm)",
               "operatingSystemVersion" : "10.0 (21R355)",
               "identifier" : "C7688D6C-925E-4D45-829D-6283F1A6F70D",
               "platform" : "com.apple.platform.watchsimulator",
               "companionDevice" : {
                 "simulator" : true,
                 "operatingSystemVersion" : "17.0 (21A328)",
                 "available" : true,
                 "platform" : "com.apple.platform.iphonesimulator",
                 "modelCode" : "iPhone16,2",
                 "identifier" : "88D5E574-AE66-432D-926C-1FD62BE1100B",
                 "architecture" : "arm64",
                 "modelUTI" : "com.apple.iphone-15-pro-max-1",
                 "modelName" : "iPhone 15 Pro Max",
                 "name" : "iPhone 15 Pro Max",
                 "ignored" : false
               },
               "architecture" : "arm64",
               "available" : true,
               "name" : "Apple Watch Ultra 2 (49mm)",
               "modelUTI" : "com.apple.watch"
             },
             {
               "simulator" : true,
               "operatingSystemVersion" : "17.0 (21A328)",
               "available" : true,
               "platform" : "com.apple.platform.iphonesimulator",
               "modelCode" : "iPad13,18",
               "identifier" : "9BB5B088-726E-47F8-B551-F3C6DAAEC09C",
               "architecture" : "arm64",
               "modelUTI" : "com.apple.ipad-10-1",
               "modelName" : "iPad (10th generation)",
               "name" : "iPad (10th generation)",
               "ignored" : false
             },
             {
               "simulator" : true,
               "operatingSystemVersion" : "10.0 (21R355)",
               "available" : true,
               "platform" : "com.apple.platform.watchsimulator",
               "modelCode" : "Watch6,13",
               "identifier" : "B3AE3496-65E3-45F0-A844-A726526634C2",
               "architecture" : "arm64",
               "modelUTI" : "com.apple.watch-se-2nd-1",
               "modelName" : "Apple Watch SE (44mm) (2nd generation)",
               "name" : "Apple Watch SE (44mm) (2nd generation)",
               "ignored" : false
             },
             {
               "ignored" : false,
               "modelCode" : "Watch7,3",
               "simulator" : true,
               "modelName" : "Apple Watch Series 9 (41mm)",
               "operatingSystemVersion" : "10.0 (21R355)",
               "identifier" : "9902C55D-C14D-4D61-9422-4479AD99E3E9",
               "platform" : "com.apple.platform.watchsimulator",
               "companionDevice" : {
                 "simulator" : true,
                 "operatingSystemVersion" : "17.0 (21A328)",
                 "available" : true,
                 "platform" : "com.apple.platform.iphonesimulator",
                 "modelCode" : "iPhone15,5",
                 "identifier" : "76751C43-289D-4029-A870-E83B59039E16",
                 "architecture" : "arm64",
                 "modelUTI" : "com.apple.iphone-15-plus-1",
                 "modelName" : "iPhone 15 Plus",
                 "name" : "iPhone 15 Plus",
                 "ignored" : false
               },
               "architecture" : "arm64",
               "available" : true,
               "name" : "Apple Watch Series 9 (41mm)",
               "modelUTI" : "com.apple.watch-series9-1"
             },
             {
               "simulator" : true,
               "operatingSystemVersion" : "10.0 (21R355)",
               "available" : true,
               "platform" : "com.apple.platform.watchsimulator",
               "modelCode" : "Watch6,2",
               "identifier" : "91E74C52-72AB-4CDD-B8D0-A9D73866DA97",
               "architecture" : "arm64",
               "modelUTI" : "com.apple.watch-series6-1",
               "modelName" : "Apple Watch Series 6 (44mm)",
               "name" : "Apple Watch Series 6 (44mm)",
               "ignored" : false
             },
             {
               "simulator" : true,
               "operatingSystemVersion" : "17.0 (21A328)",
               "available" : true,
               "platform" : "com.apple.platform.iphonesimulator",
               "modelCode" : "iPad13,17",
               "identifier" : "9494DC2D-C756-4337-9B96-7A96969A0C24",
               "architecture" : "arm64",
               "modelUTI" : "com.apple.ipad-air5-1",
               "modelName" : "iPad Air (5th generation)",
               "name" : "iPad Air (5th generation)",
               "ignored" : false
             },
             {
               "ignored" : false,
               "modelCode" : "Watch6,9",
               "simulator" : true,
               "modelName" : "Apple Watch Series 7 (45mm)",
               "operatingSystemVersion" : "10.0 (21R355)",
               "identifier" : "382848B0-E2B0-436A-9AF7-E38AD6DACB7A",
               "platform" : "com.apple.platform.watchsimulator",
               "companionDevice" : {
                 "simulator" : true,
                 "operatingSystemVersion" : "17.0 (21A328)",
                 "available" : true,
                 "platform" : "com.apple.platform.iphonesimulator",
                 "modelCode" : "iPhone15,4",
                 "identifier" : "507BCC67-8554-4129-8457-30D887757C66",
                 "architecture" : "arm64",
                 "modelUTI" : "com.apple.iphone-15-1",
                 "modelName" : "iPhone 15",
                 "name" : "iPhone 15",
                 "ignored" : false
               },
               "architecture" : "arm64",
               "available" : true,
               "name" : "Apple Watch Series 7 (45mm)",
               "modelUTI" : "com.apple.watch-series7-1"
             },
             {
               "ignored" : false,
               "modelCode" : "Mac14,10",
               "simulator" : false,
               "modelName" : "MacBook Pro",
               "operatingSystemVersion" : "14.0 (23A344)",
               "identifier" : "00006020-000E08503633C01E",
               "platform" : "com.apple.platform.macosx",
               "architecture" : "arm64e",
               "interface" : "usb",
               "available" : true,
               "name" : "My Mac",
               "modelUTI" : "com.apple.macbookpro-16-2023"
             },
             {
               "simulator" : true,
               "operatingSystemVersion" : "17.0 (21A328)",
               "available" : true,
               "platform" : "com.apple.platform.iphonesimulator",
               "modelCode" : "iPhone15,4",
               "identifier" : "507BCC67-8554-4129-8457-30D887757C66",
               "architecture" : "arm64",
               "modelUTI" : "com.apple.iphone-15-1",
               "modelName" : "iPhone 15",
               "name" : "iPhone 15",
               "ignored" : false
             },
             {
               "ignored" : false,
               "modelCode" : "iPhone16,1",
               "simulator" : false,
               "modelName" : "iPhone 15 Pro",
               "operatingSystemVersion" : "17.0.3 (21A360)",
               "identifier" : "00008130-000A4D8820A1401C",
               "platform" : "com.apple.platform.iphoneos",
               "architecture" : "arm64e",
               "interface" : "usb",
               "available" : true,
               "name" : "Tom’s iTelephone",
               "modelUTI" : "com.apple.iphone-15-pro-1"
             },
             {
               "simulator" : true,
               "operatingSystemVersion" : "10.0 (21R355)",
               "available" : true,
               "platform" : "com.apple.platform.watchsimulator",
               "modelCode" : "Watch5,3",
               "identifier" : "9110F349-2E7A-490D-9CAC-D67A47AD48D6",
               "architecture" : "arm64",
               "modelUTI" : "com.apple.watch-series5-1",
               "modelName" : "Apple Watch Series 5 (40mm)",
               "name" : "Apple Watch Series 5 (40mm)",
               "ignored" : false
             }
           ]

           2023-10-19 14:54:03.067 xcdevice[39297:2042258]  DVTDeviceOperation: 00008130-000A4D8820A1401C: skipping implicit preparation because autoConnectStyle == onDemand
           2023-10-19 14:54:03.068 xcdevice[39297:2042258]  DVTDeviceOperation: 00008130-000A4D8820A1401C: skipping implicit preparation because autoConnectStyle == onDemand
[   +3 ms] executing: /usr/bin/arch -arm64e xcrun devicectl --version
[  +61 ms] Exit code 0 from: /usr/bin/arch -arm64e xcrun devicectl --version
[        ] 348.1
[   +1 ms] executing: /usr/bin/arch -arm64e xcrun devicectl list devices --timeout 5 --json-output /var/folders/kl/8h9z437d299dpwg_d6fcx7k80000gr/T/flutter_tools.pnuPuE/core_devices.196rAO/core_device_list.json
[  +50 ms] Devices:
           Name               Hostname                                     Identifier                             State                Model                     
           ----------------   ------------------------------------------   ------------------------------------   ------------------   --------------------------
           Tom’s iTelephone   00008130-000A4D8820A1401C.coredevice.local   0A0C3ECF-1091-4A1E-AC07-F7934EAE4689   available (paired)   iPhone 15 Pro (iPhone16,1)
[        ] {
             "info" : {
               "arguments" : [
                 "devicectl",
                 "list",
                 "devices",
                 "--timeout",
                 "5",
                 "--json-output",
                 "/var/folders/kl/8h9z437d299dpwg_d6fcx7k80000gr/T/flutter_tools.pnuPuE/core_devices.196rAO/core_device_list.json"
               ],
               "commandType" : "devicectl.list.devices",
               "environment" : {
                 "TERM" : "xterm-256color"
               },
               "jsonVersion" : 2,
               "outcome" : "success",
               "version" : "348.1"
             },
             "result" : {
               "devices" : [
                 {
                   "capabilities" : [
                     {
                       "featureIdentifier" : "com.apple.coredevice.feature.connectdevice",
                       "name" : "Connect to Device"
                     },
                     {
                       "featureIdentifier" : "com.apple.coredevice.feature.unpairdevice",
                       "name" : "Unpair Device"
                     },
                     {
                       "featureIdentifier" : "com.apple.coredevice.feature.acquireusageassertion",
                       "name" : "Acquire Usage Assertion"
                     }
                   ],
                   "connectionProperties" : {
                     "authenticationType" : "manualPairing",
                     "isMobileDeviceOnly" : false,
                     "lastConnectionDate" : "2023-10-16T11:26:54.125Z",
                     "pairingState" : "paired",
                     "potentialHostnames" : [
                       "00008130-000A4D8820A1401C.coredevice.local",
                       "0A0C3ECF-1091-4A1E-AC07-F7934EAE4689.coredevice.local"
                     ],
                     "transportType" : "localNetwork",
                     "tunnelState" : "disconnected",
                     "tunnelTransportProtocol" : "tcp"
                   },
                   "deviceProperties" : {
                     "bootedFromSnapshot" : true,
                     "bootedSnapshotName" : "com.apple.os.update-8907717AC322D93B4CC6BB7D19FBABF77580B1F9E86708AFA24B95C3D66DD78FCD9FBF1D761FDBB020E4CE81386E68AB",
                     "ddiServicesAvailable" : false,
                     "developerModeStatus" : "enabled",
                     "hasInternalOSBuild" : false,
                     "name" : "Tom’s iTelephone",
                     "osBuildUpdate" : "21A360",
                     "osVersionNumber" : "17.0.3",
                     "rootFileSystemIsWritable" : false
                   },
                   "hardwareProperties" : {
                     "cpuType" : {
                       "name" : "arm64e",
                       "subType" : 2,
                       "type" : 16777228
                     },
                     "deviceType" : "iPhone",
                     "ecid" : 2899996825436188,
                     "hardwareModel" : "D83AP",
                     "internalStorageCapacity" : 256000000000,
                     "isProductionFused" : true,
                     "marketingName" : "iPhone 15 Pro",
                     "platform" : "iOS",
                     "productType" : "iPhone16,1",
                     "reality" : "physical",
                     "serialNumber" : "DCJXHGXYPC",
                     "supportedCPUTypes" : [
                       {
                         "name" : "arm64e",
                         "subType" : 2,
                         "type" : 16777228
                       },
                       {
                         "name" : "arm64",
                         "subType" : 0,
                         "type" : 16777228
                       },
                       {
                         "name" : "arm64",
                         "subType" : 1,
                         "type" : 16777228
                       },
                       {
                         "name" : "arm64_32",
                         "subType" : 1,
                         "type" : 33554444
                       }
                     ],
                     "supportedDeviceFamilies" : [
                       1
                     ],
                     "thinningProductType" : "iPhone16,1",
                     "udid" : "00008130-000A4D8820A1401C"
                   },
                   "identifier" : "0A0C3ECF-1091-4A1E-AC07-F7934EAE4689",
                   "visibilityClass" : "default"
                 }
               ]
             }
           }
```

</details>

<details><summary>Doctor output</summary>

```console
[✓] Flutter (Channel stable, 3.13.8, on macOS 14.0 23A344 darwin-arm64 (Rosetta), locale en-GB)
    • Flutter version 3.13.8 on channel stable at /Users/tom/.puro/envs/stable/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 6c4930c4ac (20 hours ago), 2023-10-18 10:57:55 -0500
    • Engine revision 767d8c75e8
    • Dart version 3.1.4
    • DevTools version 2.25.0

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/tom/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • ANDROID_HOME = /Users/tom/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.0)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15A240d
    • CocoaPods version 1.13.0

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)

[✓] VS Code (version 1.83.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.74.0

[✓] Connected device (3 available)
    • Tom’s iTelephone (mobile) • 00008130-000A4D8820A1401C • ios            • iOS 17.0.3 21A360
    • macOS (desktop)           • macos                     • darwin-arm64   • macOS 14.0 23A344 darwin-arm64 (Rosetta)
    • Chrome (web)              • chrome                    • web-javascript • Google Chrome 118.0.5993.70

[✓] Network resources
    • All expected network resources are available.

• No issues found!
```

</details>