Не можете једноставно прикључити iPhone на удаљени Mac за Xcode
Удаљена радна површина вам приказује Xcode, а не iPhone на вашем столу. Упарите уређај са Mac-ом који гради, а откривање третирајте одвојено од транспорта.
Уобичајена претпоставка је да сесија удаљене радне површине премешта цело развојно окружење на ваш лаптоп. Премешта екран, тастатуру и миш, и ништа друго. iPhone мора да дође до Mac-а на којем ради Xcode, а то је засебна веза са својим захтевима за поверење, транспорт и дозволе. Све испод произилази из те поделе, и управо ту већина неуспешних поставки изгуби пола дана.
Мит: даљинско управљање премешта и уређај
Софтвер удаљене радне површине прослеђује екран и ток уноса, и на доброј вези изгледа као да Mac седи пред вама. Оно што не прослеђује је USB, и не ставља телефон у мрежу Mac-а. Сесија се завршава на радној површини Mac-а, где Xcode затим мора да пронађе уређај по сопственим правилима. Претпоставка да телефон путује са пикселима најчешћа је грешка у оваквом распореду.
Две везе су независне, и једна може бити савршена док друга уопште не постоји. Поправљање сесије радне површине не говори вам ништа о путу до уређаја.
Одлучите где се телефон физички налази пре него што било шта конфигуришете
Ако телефон остаје поред Mac-а, тамо направите уобичајену локалну поставку: верујте рачунару, укључите развојни режим на уређају и потврдите да Xcode гради и покреће на њему док седите пред машином. Удаљена радна површина тада управља током рада који већ функционише. То је најјефтинији распоред и онај који треба преферирати кад хардвер то дозвољава.
Ако телефон путује са вама, а Mac остаје у канцеларији, Mac-у треба подржани пут до тог уређаја. VPN пружа мрежну руту између два краја и не пружа ништа друго: упаривање, развојни режим, идентитет потписа и регистрација уређаја остају засебни захтеви. Третирајте тунел као један слој у стеку, а не као саму везу.
Запишите у којем се од та два распореда налазите. Свака каснија провера зависи од тога, а њихово мешање даје исправке које не могу да раде.
Третирајте откривање и транспорт као два различита проблема
Xcode проналази упарене бежичне уређаје преко Bonjour-а на локалној мрежи, а може да достигне и уређај на познатој адреси преко Connect via IP Address. То су два механизма са два различита начина отказа. Уређај који се никада не појави на списку и уређај који се појави али одбија да се прикључи нису исти симптом, иако се оба читају као телефон који недостаје.
Потражите оглас пре него што било шта промените: dns-sd -B _apple-mobdev2._tcp наводи услугу коју упарени телефон објављује на локалној вези. Ако се ништа не појави, откривање је покварени слој и преостаје само веза заснована на адреси. Ако се услуга појави али Xcode и даље не може да се прикључи, откривање ради, а отказује транспорт или однос поверења.
Apple-ова помоћ за бежичне уређаје покрива и захтев исте мреже и ток рада са адресом, па је читајте према инсталираним верзијама уместо да следите пут у менију запамћен из старијег издања. Ознаке менија се селе између издања Xcode-а чак и кад се механизам испод не мења.
Проверите шта Mac види са свог места
Покрените набрајање на Mac-у, а не на лаптопу, јер је Mac машина којој треба уређај. xcrun devicectl list devices исписује уређаје до којих Xcode може да дође, а system_profiler SPUSBDataType показује шта је физички прикључено. Телефон који се појављује на другом списку али не на првом прикључен је и није упарен, што је проблем поверења, а не мреже.
xcrun devicectl list devices
system_profiler SPUSBDataType | grep -i iphone
xcrun devicectl device info DEVICE_UDIDАко је уређај у другој подмрежи, потврдите да Mac може да дође до адресе коју телефон објављује, и запамтите да су link-local IPv6 адресе ограничене на једну везу и не рутирају се кроз тунел. Зато сам VPN ретко учини удаљени телефон видљивим: адреса коју уређај оглашава има смисла само у његовом сопственом сегменту.
Apple-ова техничка белешка TN3158 наводи да од верзије 15 Xcode разговара са каблом повезаним уређајем преко мрежног интерфејса изграђеног на link-local IPv6, па локално филтрирање може да смета чак и физички прикљученом телефону. Тај случај ескалирајте ономе ко поседује политику филтрирања уместо да је сами искључите.
Докажите то градњом, а не иконом уређаја
Запис уређаја на списку, зелени показазивач у траци са алаткама или успешан захтев за упаривање су међуопсервације. Ток рада је доказан кад Xcode инсталира дозвољену градњу и дебагер се прикључи на процес који ради на уређају.
Покрените цео след са Mac-а. xcrun devicectl device install app --device DEVICE_UDID build/MyApp.app инсталира без IDE-а, што одваја проблем Xcode-овог сучеља од проблема пута до уређаја. Затим покрените апликацију и прикључите конзолу на њу. Ако инсталација из командне линије ради, а IDE не, преостала грешка је у шеми или у конфигурацији потписа, а не у мрежи.
Држите распоред уским: један овлашћени програмер, један регистровани Mac, један уређај и приступ који се завршава кад се сесија заврши. Опозовите акредитиве кад распоред престане. Ако телефон једноставно може да остане поред Mac-а, изаберите то, јер најједноставнији подржани пут има најмање слојева за дебаговање.