Нельга проста падключыць 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 можа дасягнуць адраса, які публікуе тэлефон, і памятайце, што адрасы IPv6, лакальныя для канала, абмежаваныя адным каналам і не маршрутызуюцца праз тунель. Менавіта таму адзін VPN рэдка робіць аддалены тэлефон бачным: адрас, які абвяшчае прылада, мае сэнс толькі на ўласным сегменце.
Тэхнічная нататка Apple TN3158 сцвярджае, што пачынаючы з версіі 15 Xcode размаўляе з кабельным прыладай праз сеткавы інтэрфейс, пабудаваны на лакальным для канала IPv6, таму лакальная фільтрацыя можа перашкаджаць нават тэлефону, які фізічна ўключаны. Перадайце гэты выпадак таму, хто валодае палітыкай фільтрацыі, замест таго каб адключаць яе самастойна.
Дакажыце гэта зборкай, а не значком прылады
Запіс прылады ў спісе, зялёны індыкатар на панэлі інструментаў або паспяховы запыт спарвання — гэта прамежкавыя назіранні. Працэс даказаны, калі Xcode усталёўвае дазволеную зборку і адладчык далучаецца да працэсу, які выконваецца на прыладзе.
Выканайце поўную паслядоўнасць з Mac. xcrun devicectl device install app --device DEVICE_UDID build/MyApp.app усталёўвае без IDE, што аддзяляе праблему інтэрфейсу Xcode ад праблемы шляху да прылады. Затым запусціце праграму і далучыце да яе кансоль. Калі ўсталёўка з каманднага радка працуе, а IDE не, то астатняя няспраўнасць у схеме або канфігурацыі подпісу, а не ў сетцы.
Трымайце схему вузкай: адзін аўтарызаваны распрацоўнік, адзін зарэгістраваны Mac, адна прылада і доступ, які сканчаецца разам з сеансам. Адклікайце ўліковыя даныя, калі схема спыняецца. Калі тэлефон можа проста заставацца побач з Mac, выбірайце гэта, бо самы просты падтрыманы шлях — той, дзе засталося найменш слаёў для адладкі.