Как включить/отключить "показать как выполнить назначение" для всех симуляторов

можно ли переключить "показать как выполнить назначение " флаг для нескольких симуляторов iOS вместо того, чтобы менять его один за другим в "устройства и тренажеры окно"? Есть ли командная строка С этой целью?

enter image description here

1 ответов


я решил найти его сам, используя fswatch. Кстати, это действительно полезно для такого рода ситуаций. Путем мониторинга изменений файла while неповоротные в " показать как выполнить пункт назначения" флаг, я узнал, что Xcode менял ~/Library/Preferences/com.apple.dt.Xcode.plist

после некоторого анализа я заметил ключ, который мне нужно было изменить, чтобы достичь того, что я имел в виду. Ключ DVTIgnoredDevices и он содержит массив тренажеры. Таким образом, каждый UUID симулятора в этом списке будет проигнорирован в Xcode.

теперь, я могу изменить DVTIgnoredDevices клавиша с помощью defaults инструмент командной строки, указывающий необходимый тип значения:

массива позволяет пользователю задать массив в качестве значения для данного ключа предпочтения:

defaults write somedomain preferenceKey -array element1 element2 element3

указанный массив перезаписывает значение ключа, если ключ присутствовал во время записи. Если ключ был нет, он создается с новым значением.

пример:

defaults write com.apple.dt.Xcode DVTIgnoredDevices '(
  "80E16DBC-2FE5-48AC-8A44-1F5DEFA00EA7",
  "B8C4D5FF-8F1A-4895-BD16-CCAFECD71098"
)'

после установки DVTIgnoredDevices ключ, вам нужно очистить DerivedData папка и перезапустить Xcode. Чтобы очистить можно найти этой ответ или просто запустите ярлык shift+alt+cmd+k (вот что я обычно делаю).

протестировано на Xcode версии 9.4 (9F1027a).

обновление:

мне обычно нравится есть всего пара симуляторов в списке, поэтому я решил сделать скрипт с помощью instruments -s devices и добавьте все текущие симуляторы в DVTIgnoredDevices ключ. Затем я выбрал, какой симулятор(ы) будет показан

Xcode-hide-all-iPhone-simulators.sh

simulatorsIdentifiers=$(instruments -s devices |
  grep -o "iPhone .* (.*) \[.*\]" | #only iPhone
  grep -o "\[.*\]" | #only UUID
  sed "s/^\[\(.*\)\]$//" | #remove square brackets
  sed 's/^/"/;$!s/$/"/;$s/$/"/' | #add quotes
  sed '$!s/$/,/' #add comma to separate each element
)

arrayOfSimulatorsIdentifiers=($(echo "$simulatorsIdentifiers" | tr ',' '\n'))

# Add simulators to DVTIgnoredDevices
echo "${#arrayOfSimulatorsIdentifiers[@]}"
for index in "${!arrayOfSimulatorsIdentifiers[@]}"
do
    echo "$index Adding: ${arrayOfSimulatorsIdentifiers[index]}"
done

defaults write com.apple.dt.Xcode DVTIgnoredDevices -array ${arrayOfSimulatorsIdentifiers[@]}

Gist file