WWDC Quick Look 💓 By SwiftGGTeam
Get to know Developer Mode

Get to know Developer Mode

Watch original video

Highlight

iOS 16, iPadOS 16, and watchOS 9 introduce Developer Mode, which is turned off by default. Developers must manually turn on this mode in settings before installing, running, and debugging development-signed applications on the device. For macOS VenturadevmodectlThe tool supports automating the opening process.

Core Content

Why Developer Mode is needed

00:47

Powerful developer features are being abused in targeted attacks when the vast majority of ordinary users simply don’t need them. Apple’s approach: preserve capabilities that developers rely on while increasing security for ordinary users by turning them off by default.

The following distribution methods don’t require Developer Mode:

  • App Store distribution
  • TestFlight distribution
  • Distribution within the enterprise

Developer Mode is only needed in the following scenarios:

  • Install and run development-signed apps (including Personal Team-signed apps)
  • Debugging with Xcode and profiling with Instruments
  • Run automated tests on the device

How to enable Developer Mode

02:56

Start the process:

  1. Connect the device to a Mac running Xcode (or install a development-signed app through Apple Configurator)
  2. Go to Settings > Privacy & Security > Developer Mode
  3. Turn on the switch
  4. Restart the device
  5. Confirm to turn it on again after restarting

Once enabled, the state will be saved persistently and will be valid across reboots and system updates.

The Developer Mode menu item is always visible in the beta version. In the official version, it only appears after connecting to Xcode or installing a development-signed application.

Automation: devmodectl

04:05

Manual opening is inefficient in multi-device scenarios such as test laboratories. macOS Ventura has built-indevmodectlCommand line tools.

Restrictions: Only devices without a password can automatically turn on Developer Mode. This is because the device needs to be unlocked after restarting in order to continue interacting.

Two ways to use:

# Enable for a single connected device
devmodectl

# Streaming mode: automatically enable for all connected devices
devmodectl streaming

Key Points: -devmodectl streamingWill monitor newly connected devices, automatically restart and configure Developer Mode

  • The device will receive a notification after configuration is completed
  • This tool is installed by default with macOS Ventura

Detailed Content

devmodectl usage example

# Check the status of currently connected devices
devmodectl

# Streaming mode: automatically handle all connected devices
devmodectl streaming

# Use in a CI script
#!/bin/bash
# Start streaming mode as a background process
devmodectl streaming &
STREAM_PID=$!

# Wait for devices to connect and be configured
sleep 30

# Stop streaming
kill $STREAM_PID

Key Points: -devmodectlRequires the device to have no password to automatically complete the process

  • Devices with passwords need to be manually unlocked after restarting, and the automated process will be interrupted.
  • It is recommended to set no password for test devices in the test laboratory, or use MDM management

CI environment integration recommendations

# Check device status in the CI pipeline
#!/bin/bash

# Check for devices that have not enabled Developer Mode
if ideviceinfo -k DeveloperModeStatus | grep -q "0"; then
    echo "Developer Mode not enabled, attempting automatic setup..."
    devmodectl streaming &
    sleep 60
    kill %1
fi

# Continue running tests
xcodebuild test -destination "platform=iOS,name=TestDevice" ...

Key Points:

  • In CI environment, use Developer Mode check as a pre-test step
  • Uniformly configure passwordless policies for the test device pool to cooperate withdevmodectl streaming- Record which devices require manual intervention to avoid troubleshooting direction errors when the test fails

Core Takeaways

1. Update team equipment preparation process

  • What to do: After getting a new device or system upgrade, turn on Developer Mode as the first step in the standard process
  • Why is it worth doing: After iOS 16, it is impossible to debug without Developer Mode. This problem will waste a lot of troubleshooting time.
  • How to start: Add the opening steps to the team’s device management document, and focus on the instructions when new members are onboarding.

2. Build an automated testing equipment pool

  • What to do: Unify passwordless configuration for test devices in a CI environment +devmodectl streaming- Why it’s worth doing: Manually turning on the Developer Mode of each device is unrealistic when there are a large number of devices. Automation is the only feasible solution.
  • How to start: Prepare a batch of special test equipment, restore factory settings without setting a password, connect to Mac and rundevmodectl streaming

3. Update internal test distribution strategy

  • What to do: Evaluate which scenarios in the internal testing process will be affected by Developer Mode
  • Why it’s worth doing: Although TestFlight and enterprise distribution are not affected, Developer Mode is required for development, debugging, QA verification, etc.
  • How to start: Sort out all the scenarios where development signature applications are used in the team, and confirm that the devices in each scenario have Developer Mode turned on.

Comments

GitHub Issues · utterances