Как включить / отключить «Показывать как пункт назначения запуска» для всех симуляторов - PullRequest
0 голосов
/ 11 июня 2018

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

enter image description here

1 Ответ

0 голосов
/ 15 июня 2018

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

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

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

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

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.Чтобы очистить папку DerivedData, посмотрите этот ответ или просто запустите ярлык shift+alt+cmd+k (это то, что я обычно делаю).

Протестировано на Xcode Version 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/^\[\(.*\)\]$/\1/" | #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

...