Uobičajena pretpostavka je da sesija udaljene radne površine premješta cijelo razvojno okruženje na vaš laptop. Premješta ekran, tipkovnicu i miš, i ništa drugo. iPhone mora doći do Maca na kojem radi Xcode, a to je zasebna veza sa svojim zahtjevima za povjerenje, transport i dozvole. Sve ispod proizlazi iz te podjele, i upravo tu većina neuspjelih postavki izgubi pola dana.

Mit: daljinsko upravljanje premješta i uređaj

Softver udaljene radne površine prosljeđuje ekran i tok unosa, i na dobroj vezi izgleda kao da Mac sjedi pred vama. Ono što ne prosljeđuje je USB, i ne stavlja telefon u mrežu Maca. Sesija završava na radnoj površini Maca, gdje Xcode zatim mora pronaći uređaj po vlastitim pravilima. Pretpostavka da telefon putuje s pikselima najčešća je greška u ovakvom rasporedu.

Dvije veze su neovisne, i jedna može biti savršena dok druga uopće ne postoji. Popravljanje sesije radne površine ne govori vam ništa o putu do uređaja.

Odlučite gdje se telefon fizički nalazi prije nego što bilo što konfigurirate

Ako telefon ostaje pokraj Maca, tamo napravite uobičajenu lokalnu postavku: vjerujte računalu, uključite razvojni način rada na uređaju i potvrdite da Xcode gradi i pokreće na njemu dok sjedite pred strojem. Udaljena radna površina tada upravlja tokom rada koji već funkcionira. To je najjeftiniji raspored i onaj koji treba preferirati kad hardver to dopušta.

Ako telefon putuje s vama, a Mac ostaje u uredu, Macu treba podržan put do tog uređaja. VPN pruža mrežnu rutu između dva kraja i ne pruža ništa drugo: uparivanje, razvojni način, identitet potpisa i registracija uređaja ostaju zasebni zahtjevi. Tretirajte tunel kao jedan sloj u stogu, a ne kao samu vezu.

Zapišite u kojem se od ta dva rasporeda nalazite. Svaka kasnija provjera ovisi o tome, a njihovo miješanje daje ispravke koje ne mogu raditi.

Tretirajte otkrivanje i transport kao dva različita problema

Xcode pronalazi uparene bežične uređaje putem Bonjoura na lokalnoj mreži, a može dosegnuti i uređaj na poznatoj adresi putem Connect via IP Address. To su dva mehanizma s dva različita načina kvara. Uređaj koji se nikad ne pojavi na popisu i uređaj koji se pojavi ali odbija priključiti se nisu isti simptom, iako se oba čitaju kao telefon koji nedostaje.

Potražite oglas prije nego što bilo što promijenite: dns-sd -B _apple-mobdev2._tcp navodi uslugu koju upareni telefon objavljuje na lokalnoj vezi. Ako se ništa ne pojavi, otkrivanje je pokvareni sloj i preostaje samo veza temeljena na adresi. Ako se usluga pojavi ali se Xcode još uvijek ne može priključiti, otkrivanje radi, a otkazuje transport ili odnos povjerenja.

Appleova pomoć za bežične uređaje pokriva i zahtjev iste mreže i tok rada s adresom, pa je čitajte prema instaliranim verzijama umjesto da slijedite put u izborniku zapamćen iz starijeg izdanja. Oznake izbornika sele se između izdanja Xcodea čak i kad se mehanizam ispod ne mijenja.

Provjerite što Mac vidi sa svog mjesta

Pokrenite nabrajanje na Macu, a ne na laptopu, jer je Mac stroj kojem treba uređaj. xcrun devicectl list devices ispisuje uređaje do kojih Xcode može doći, a system_profiler SPUSBDataType pokazuje što je fizički priključeno. Telefon koji se pojavljuje na drugom popisu ali ne na prvom priključen je i nije uparen, što je problem povjerenja, a ne mreže.

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

Ako je uređaj u drugoj podmreži, potvrdite da Mac može doći do adrese koju telefon objavljuje, i zapamtite da su link-local IPv6 adrese ograničene na jednu vezu i ne rutiraju se kroz tunel. Zato sam VPN rijetko učini udaljeni telefon vidljivim: adresa koju uređaj oglašava ima smisla samo u njegovom vlastitom segmentu.

Appleova tehnička bilješka TN3158 navodi da od verzije 15 Xcode razgovara s kabelom povezanim uređajem preko mrežnog sučelja izgrađenog na link-local IPv6, pa lokalno filtriranje može smetati čak i fizički priključenom telefonu. Eskalirajte taj slučaj onome koji posjeduje politiku filtriranja umjesto da je sami isključite.

Dokažite to gradnjom, a ne ikonom uređaja

Zapis uređaja na popisu, zeleni pokazivač u alatnoj traci ili uspješan zahtjev za uparivanje međuopažanja su. Tok rada dokazan je kad Xcode instalira dopuštenu gradnju i debager se priključi na proces koji radi na uređaju.

Pokrenite cijeli slijed s Maca. xcrun devicectl device install app --device DEVICE_UDID build/MyApp.app instalira bez IDE-a, što odvaja problem Xcodeova sučelja od problema puta do uređaja. Zatim pokrenite aplikaciju i priključite konzolu na nju. Ako instalacija iz naredbenog retka radi, a IDE ne, preostala je greška u shemi ili u konfiguraciji potpisa, a ne u mreži.

Držite raspored uskim: jedan ovlašteni razvijač, jedan registrirani Mac, jedan uređaj i pristup koji završava kad završi sesija. Opozovite vjerodajnice kad raspored prestane. Ako telefon jednostavno može ostati pokraj Maca, odaberite to, jer najjednostavniji podržani put ima najmanje slojeva za debagiranje.

Povezani članci