Įprasta prielaida — nuotolinio darbalaukio sesija perkelia visą kūrimo aplinką į jūsų nešiojamąjį kompiuterį. Ji perkelia ekraną, klaviatūrą ir pelę, ir nieko daugiau. iPhone turi pasiekti Mac, kuriame veikia Xcode, o tai yra atskiras ryšys su savo pasitikėjimo, perdavimo ir leidimų reikalavimais. Viskas toliau išplaukia iš šio atskyrimo, ir būtent čia dauguma nepavykusių sąrankų praranda pusdienį.

Mitas: nuotolinis valdymas perkelia ir įrenginį

Nuotolinio darbalaukio programinė įranga persiunčia ekraną ir įvesties srautą, o esant geram ryšiui atrodo, kad Mac stovi priešais jus. Tačiau USB ji nepersiunčia ir telefono į Mac tinklą neįdeda. Sesija baigiasi Mac darbalaukyje, kur Xcode turi rasti įrenginį pagal savo taisykles. Manyti, kad telefonas keliauja kartu su pikseliais, yra dažniausia šios schemos klaida.

Abu ryšiai yra nepriklausomi, ir vienas gali būti tobulas, o kito gali visai nebūti. Darbalaukio sesijos taisymas nieko nepasako apie įrenginio kelią.

Prieš ką nors konfigūruodami nuspręskite, kur telefonas yra fiziškai

Jei telefonas lieka šalia Mac, atlikite įprastą vietinę sąranką ten: pasitikėkite kompiuteriu, įjunkite kūrėjo režimą įrenginyje ir patvirtinkite, kad Xcode stata ir paleidžia jame, kai sėdite priešais mašiną. Tada nuotolinis darbalaukis valdo jau veikiantį procesą. Tai pigiausia schema ir toji, kurią reikėtų rinktis, kai techninė įranga leidžia.

Jei telefonas keliauja su jumis, o Mac lieka biure, Mac turi turėti palaikomą kelią į tą įrenginį. VPN suteikia tinklo maršrutą tarp abiejų galų ir nieko daugiau: susiejimas, kūrėjo režimas, pasirašymo tapatybė ir įrenginio registracija lieka atskirais reikalavimais. Tunelį traktuokite kaip vieną sluoksnį krūvoje, o ne kaip patį ryšį.

Užsirašykite, kurioje iš šių dviejų schemų esate. Kiekviena vėlesnė patikra nuo to priklauso, o jų sumaišymas duoda pataisymus, kurie negali veikti.

Aptikimą ir perdavimą traktuokite kaip dvi skirtingas problemas

Xcode randa susietus belaidžius įrenginius per Bonjour vietiniame tinkle, o taip pat gali pasiekti įrenginį žinomu adresu per Connect via IP Address. Tai du mechanizmai su dviem skirtingais gedimo būdais. Įrenginys, kuris niekada nepasirodo sąraše, ir įrenginys, kuris pasirodo, bet atsisako prisijungti, nėra tas pats simptomas, nors abu atrodo kaip dingęs telefonas.

Prieš ką nors keisdami ieškokite skelbimo: dns-sd -B _apple-mobdev2._tcp išvardija paslaugą, kurią susietas telefonas skelbia vietinėje grandyje. Jei nieko nepasirodo, aptikimas yra sugedęs sluoksnis, ir lieka tik adresu pagrįstas ryšys. Jei paslauga pasirodo, bet Xcode vis tiek negali prisijungti, aptikimas veikia, o nepavyksta perdavimas arba pasitikėjimo santykis.

Apple belaidžių įrenginių pagalba apima ir to paties tinklo reikalavimą, ir adreso darbo eigą, todėl skaitykite ją atsižvelgdami į įdiegtas versijas, o ne sekdami meniu kelią, įsimintą iš senesnio leidimo. Meniu pavadinimai keičiasi tarp Xcode leidimų, net kai mechanizmas po jais nesikeičia.

Patikrinkite, ką Mac mato iš savo vietos

Vykdykite išvardijimą Mac, o ne savo nešiojamajame kompiuteryje, nes Mac yra ta mašina, kuriai reikia įrenginio. xcrun devicectl list devices išspausdina įrenginius, kuriuos Xcode gali pasiekti, o system_profiler SPUSBDataType parodo, kas fiziškai prijungta. Telefonas, kuris pasirodo antrame sąraše, bet ne pirmame, yra prijungtas ir nesusietas, ir tai yra pasitikėjimo, o ne tinklo problema.

xcrun devicectl list devices
system_profiler SPUSBDataType | grep -i iphone
xcrun devicectl device info DEVICE_UDID

Jei įrenginys yra kitame potinklyje, patvirtinkite, kad Mac gali pasiekti adresą, kurį skelbia telefonas, ir atminkite, kad link-local IPv6 adresai galioja vienai grandžiai ir nėra maršrutizuojami per tunelį. Štai kodėl vien VPN retai padaro nuotolinį telefoną matomą: adresas, kurį skelbia įrenginys, turi prasmę tik jo paties segmente.

Apple techninė pastaba TN3158 teigia, kad nuo 15 versijos Xcode bendrauja su kabeliu prijungtu įrenginiu per tinklo sąsają, sukurtą link-local IPv6 pagrindu, todėl vietinis filtravimas gali trukdyti net fiziškai prijungtam telefonui. Tokį atvejį perduokite tam, kas atsakingas už filtravimo politiką, o ne išjunkite patys.

Įrodykite tai statymu, o ne įrenginio piktograma

Įrenginio įrašas sąraše, žalias indikatorius įrankių juostoje ar sėkmingas susiejimo raginimas yra tarpiniai stebėjimai. Darbo eiga įrodyta tada, kai Xcode įdiegia leidžiamą statinį ir derintuvas prisijungia prie įrenginyje veikiančio proceso.

Vykdykite visą seką iš Mac. xcrun devicectl device install app --device DEVICE_UDID build/MyApp.app įdiegia be IDE, o tai atskiria Xcode sąsajos problemą nuo įrenginio kelio problemos. Tada paleiskite programą ir prijunkite prie jos konsolę. Jei diegimas iš komandinės eilutės veikia, o IDE ne, likęs defektas yra schemoje arba pasirašymo konfigūracijoje, o ne tinkle.

Laikykite schemą siaurą: vienas įgaliotas kūrėjas, vienas registruotas Mac, vienas įrenginys ir prieiga, kuri baigiasi sesijai pasibaigus. Atšaukite prisijungimo duomenis, kai schema nustoja galioti. Jei telefonas gali tiesiog likti šalia Mac, rinkitės tai, nes paprasčiausias palaikomas kelias turi mažiausiai sluoksnių, kuriuos reikia derinti.

Susiję straipsniai