iPhonea ei voi vain kytkeä etä-Maciin Xcodea varten
Etätyöpöytä näyttää sinulle Xcoden, ei pöydälläsi olevaa iPhonea. Parita laite sen Macin kanssa, joka rakentaa, ja käsittele löytämistä erillään siirrosta.
Tavallinen oletus on, että etätyöpöytäistunto siirtää koko kehitysympäristön kannettavaasi. Se siirtää näytön, näppäimistön ja hiiren, eikä mitään muuta. iPhonen on päästävä Maciin, jossa Xcode pyörii, ja se on erillinen yhteys, jolla on omat luottamuksen, siirron ja käyttöoikeuksien vaatimuksensa. Kaikki alla seuraa tästä jaosta, ja juuri siinä useimmat epäonnistuneet asennukset menettävät yhden iltapäivän.
Myytti: etäohjaus siirtää myös laitteen
Etätyöpöytäohjelmisto välittää näytön ja syötevirran, ja hyvällä yhteydellä tuntuu kuin Mac istuisi edessäsi. Se mitä se ei välitä, on USB, eikä se aseta puhelinta Macin verkkoonkaan. Istunto päättyy Macin työpöydälle, jossa Xcoden on sitten löydettävä laite omien sääntöjensä mukaan. Oletus, että puhelin matkustaa pikseleiden mukana, on tämän järjestelyn yleisin virhe.
Kaksi yhteyttä ovat riippumattomia, ja toinen voi olla täydellinen samalla kun toista ei ole lainkaan. Työpöytäistunnon korjaaminen ei kerro sinulle mitään laitteen reitistä.
Päätä, missä puhelin fyysisesti on, ennen kuin asetat mitään
Jos puhelin jää Macin viereen, tee siellä tavallinen paikallinen asennus: luota tietokoneeseen, ota kehittäjätila käyttöön laitteessa ja varmista, että Xcode rakentaa ja käynnistyy siihen, kun istut koneen edessä. Silloin etätyöpöytä ohjaa työnkulkua, joka jo toimii. Se on halvin järjestely ja se, jota kannattaa suosia aina kun laitteisto sen sallii.
Jos puhelin matkustaa mukanasi ja Mac jää toimistoon, Mac tarvitsee tuetun reitin siihen laitteeseen. VPN tarjoaa verkkoreitin kahden pään välille eikä tarjoa mitään muuta: paritus, kehittäjätila, allekirjoitusidentiteetti ja laitteen rekisteröinti ovat edelleen erillisiä vaatimuksia. Käsittele tunnelia yhtenä kerroksena pinossa, älä itse yhteytenä.
Kirjoita ylös, kummassa kahdesta järjestelystä olet. Jokainen myöhempi tarkistus riippuu siitä, ja niiden sekoittaminen tuottaa korjauksia, jotka eivät voi toimia.
Käsittele löytämistä ja siirtoa kahtena eri ongelmana
Xcode löytää paritetut langattomat laitteet Bonjourin kautta paikallisverkosta, ja se voi myös tavoittaa laitteen tunnetusta osoitteesta Connect via IP Address -toiminnolla. Ne ovat kaksi mekanismia, joilla on kaksi erilaista vikatilaa. Laite, joka ei koskaan ilmesty luetteloon, ja laite, joka ilmestyy mutta kieltäytyy liittymästä, eivät ole sama oire, vaikka molemmat luetaan puuttuvaksi puhelimeksi.
Selaa mainosta ennen kuin muutat mitään: dns-sd -B _apple-mobdev2._tcp listaa palvelun, jonka paritettu puhelin julkaisee paikallislinkissä. Jos mitään ei ilmesty, löytäminen on rikkoutunut kerros ja osoiteperusteinen yhteys on ainoa jäljellä oleva reitti. Jos palvelu ilmestyy mutta Xcode ei silti voi liittyä, löytäminen toimii ja epäonnistuva asia on siirto tai luottamussuhde.
Applen langattomien laitteiden ohje kattaa sekä saman verkon vaatimuksen että osoitetyönkulun, joten lue se asennettuja versioitasi vasten sen sijaan että seuraisit vanhemmasta julkaisusta muistamaasi valikkopolkua. Valikkotunnisteet liikkuvat Xcoden julkaisujen välillä, vaikka niiden alla oleva mekanismi ei muuttuisi.
Tarkista, mitä Mac näkee omasta sijainnistaan
Aja luettelointi Macilla, älä kannettavallasi, koska Mac on kone, joka laitetta tarvitsee. xcrun devicectl list devices tulostaa laitteet, joihin Xcode pääsee, ja system_profiler SPUSBDataType näyttää, mikä on fyysisesti kytketty. Puhelin, joka on toisessa luettelossa mutta ei ensimmäisessä, on kytketty eikä paritettu, mikä on luottamusongelma eikä verkko-ongelma.
xcrun devicectl list devices
system_profiler SPUSBDataType | grep -i iphone
xcrun devicectl device info DEVICE_UDID
Jos laite on toisessa aliverkossa, varmista että Mac tavoittaa osoitteen, jonka puhelin julkaisee, ja muista että linkkikohtaiset IPv6-osoitteet on rajattu yhteen linkkiin eikä niitä voi reitittää tunnelin läpi. Siksi pelkkä VPN harvoin saa etäpuhelinta ilmestymään: osoite, jonka laite ilmoittaa, on merkityksellinen vain omassa segmentissään.
Applen tekninen muistio TN3158 toteaa, että versiosta 15 alkaen Xcode puhuu kaapeloidun laitteen kanssa verkkorajapinnan kautta, joka on rakennettu linkkikohtaiselle IPv6:lle, joten paikallinen suodatus voi häiritä jopa fyysisesti kytkettyä puhelinta. Eskaloi tämä tapaus suodatuskäytännön omistajalle sen sijaan että kytkisit sen itse pois.
Todista se buildilla, älä laitekuvakkeella
Laitemerkintä luettelossa, vihreä ilmaisin työkalurivillä tai onnistunut parituspyyntö ovat välivaiheen havaintoja. Työnkulku on todistettu, kun Xcode asentaa sallitun buildin ja debuggeri kiinnittyy laitteella käynnissä olevaan prosessiin.
Aja koko sarja Macilta. xcrun devicectl device install app --device DEVICE_UDID build/MyApp.app asentaa ilman IDE:tä, mikä erottaa Xcoden käyttöliittymäongelman laitteen reittiongelmasta. Käynnistä sitten sovellus ja kiinnitä siihen konsoli. Jos komentoriviasennus toimii ja IDE ei, jäljellä oleva vika on skeemassa tai allekirjoituskokoonpanossa, ei verkossa.
Pidä järjestely kapeana: yksi valtuutettu kehittäjä, yksi rekisteröity Mac, yksi laite ja pääsy, joka päättyy istunnon päättyessä. Peruuta tunnistetiedot, kun järjestely lakkaa. Jos puhelin voi yksinkertaisesti jäädä Macin viereen, valitse se, koska yksinkertaisimmalla tuetulla reitillä on vähiten kerroksia jäljellä debugattavaksi.