Hindi mo basta maisasaksak ang iPhone sa malayong Mac para sa Xcode
Ipinapakita ng malayong desktop ang Xcode, hindi ang iPhone sa iyong mesa. Ipagpares ang device sa Mac na nagbi-build, at ituring ang pagtuklas na hiwalay sa transport.
Ang karaniwang palagay ay inililipat ng sesyon ng malayong desktop ang buong kapaligiran ng pag-develop sa iyong laptop. Inililipat nito ang screen, keyboard at mouse, at wala nang iba. Kailangang maabot ng iPhone ang Mac na nagpapatakbo ng Xcode, at iyon ay hiwalay na koneksyon na may sariling mga pangangailangan sa tiwala, transport at pahintulot. Lahat ng nasa ibaba ay nagmumula sa paghahating iyon, at doon nawawalan ng kalahating araw ang karamihan sa mga nabigong setup.
Ang mito: inililipat din ng malayong kontrol ang device
Ang software ng malayong desktop ay nagpapasa ng display at input stream, at sa magandang koneksyon pakiramdam mo ay nakaupo ang Mac sa harap mo. Ngunit ang hindi nito ipinapasa ay ang USB, at hindi rin nito inilalagay ang telepono sa network ng Mac. Nagtatapos ang sesyon sa desktop ng Mac, kung saan kailangan namang humanap ng Xcode ng device ayon sa sarili nitong mga patakaran. Ang pag-aakalang sumasama ang telepono sa mga pixel ang pinakakaraniwang pagkakamali sa kaayusang ito.
Malaya ang dalawang koneksyon, at maaaring perpekto ang isa habang wala nang wala ang isa. Walang sinasabi sa iyo ang pag-aayos ng sesyon ng desktop tungkol sa landas ng device.
Magpasya kung saan pisikal na naroon ang telepono bago mag-configure ng kahit ano
Kung mananatili ang telepono sa tabi ng Mac, gawin doon ang karaniwang lokal na setup: pagkatiwalaan ang computer, i-enable ang developer mode sa device, at kumpirmahin na nagbi-build at nagpapatakbo ang Xcode dito habang nakaupo ka sa harap ng makina. Kinokontrol ng malayong desktop pagkatapos ang workflow na gumagana na. Iyon ang pinakamurang kaayusan at ang dapat piliin kapag pinapayagan ng hardware.
Kung sumasama sa iyo ang telepono at nananatili ang Mac sa opisina, kailangan ng Mac ng sinusuportahang landas patungo sa device na iyon. Nagbibigay ang VPN ng ruta ng network sa pagitan ng dalawang dulo at wala nang iba: ang pagpapares, developer mode, identity ng pag-sign at pagpaparehistro ng device ay nananatiling magkakahiwalay na pangangailangan. Ituring ang tunnel bilang isang layer sa isang stack, hindi bilang ang koneksyon mismo.
Isulat kung alin sa dalawang kaayusang iyon ang kinalalagyan mo. Nakasalalay doon ang bawat susunod na pagsusuri, at ang paghahalo ng mga ito ay gumagawa ng mga pagtatama na hindi maaaring gumana.
Ituring ang pagtuklas at transport bilang dalawang magkaibang problema
Nakikita ng Xcode ang mga nakapares na wireless na device sa pamamagitan ng Bonjour sa lokal na network, at maaari rin nitong maabot ang device sa kilalang address sa pamamagitan ng Connect via IP Address. Iyon ay dalawang mekanismo na may dalawang magkaibang paraan ng pagpalya. Ang device na hindi kailanman lumilitaw sa listahan at ang device na lumilitaw ngunit tumatanggi na kumonekta ay hindi magkaparehong sintomas, kahit pareho silang nababasa bilang nawawalang telepono.
Hanapin ang anunsyo bago magbago ng kahit ano: inililista ng dns-sd -B _apple-mobdev2._tcp ang serbisyo na inilalathala ng nakapares na telepono sa lokal na link. Kung walang lumilitaw, ang pagtuklas ang sirang layer at ang koneksyong nakabatay sa address ang tanging natitirang landas. Kung lumilitaw ang serbisyo ngunit hindi pa rin makakonekta ang Xcode, gumagana ang pagtuklas at ang transport o ang relasyon ng tiwala ang pumapalya.
Sinasaklaw ng tulong ng Apple para sa mga wireless na device ang parehong pangangailangan ng isang network at ang workflow na may address, kaya basahin ito laban sa mga naka-install na bersyon sa halip na sundan ang landas ng menu na naaalala mula sa lumang release. Lumilipat ang mga label ng menu sa pagitan ng mga release ng Xcode kahit hindi nagbabago ang mekanismong nasa ilalim.
Tingnan kung ano ang nakikita ng Mac mula sa kinaroroonan nito
Patakbuhin ang enumerasyon sa Mac at hindi sa iyong laptop, dahil ang Mac ang makinang nangangailangan ng device. Inililimbag ng xcrun devicectl list devices ang mga device na naaabot ng Xcode, at ipinapakita ng system_profiler SPUSBDataType kung ano ang pisikal na nakakabit. Ang teleponong lumilitaw sa pangalawang listahan ngunit wala sa una ay nakakabit at hindi nakapares, na problema ng tiwala at hindi ng network.
xcrun devicectl list devices
system_profiler SPUSBDataType | grep -i iphone
xcrun devicectl device info DEVICE_UDIDKung nasa ibang subnet ang device, kumpirmahin na naaabot ng Mac ang address na inilalathala ng telepono, at tandaan na ang mga link-local IPv6 address ay limitado sa isang link at hindi niruruta sa isang tunnel. Iyon ang dahilan kung bakit bihirang gawing nakikita ng VPN lamang ang isang malayong telepono: ang address na inaanunsyo ng device ay may kahulugan lamang sa sarili nitong segment.
Sinasabi ng teknikal na tala ng Apple na TN3158 na mula sa bersyon 15, nakikipag-usap ang Xcode sa isang device na may kable sa pamamagitan ng interface ng network na itinayo sa link-local IPv6, kaya ang lokal na pag-filter ay maaaring makagambala kahit sa pisikal na nakasaksak na telepono. I-escalate ang kasong iyon sa nagmamay-ari ng patakaran sa pag-filter sa halip na ikaw mismo ang magpatay nito.
Patunayan ito sa pamamagitan ng build, hindi ng icon ng device
Ang entry ng device sa isang listahan, berdeng indicator sa toolbar o matagumpay na kahilingan ng pagpapares ay mga intermediate na obserbasyon. Napatunayan ang workflow kapag nag-install ang Xcode ng pinapayagang build at kumonekta ang debugger sa isang prosesong tumatakbo sa device.
Patakbuhin ang buong pagkakasunod-sunod mula sa Mac. Nag-i-install ang xcrun devicectl device install app --device DEVICE_UDID build/MyApp.app nang walang IDE, na naghihiwalay ng problema sa interface ng Xcode mula sa problema sa landas ng device. Pagkatapos ay ilunsad ang app at ikabit ang isang console dito. Kung gumagana ang pag-install mula sa command line at hindi ang IDE, nasa scheme o sa configuration ng pag-sign ang natitirang depekto at hindi sa network.
Panatilihing makitid ang kaayusan: isang awtorisadong developer, isang rehistradong Mac, isang device, at access na nagtatapos kapag natapos ang sesyon. Bawiin ang mga kredensyal kapag tumigil ang kaayusan. Kung maaari lamang manatili ang telepono sa tabi ng Mac, piliin iyon, dahil ang pinakasimpleng sinusuportahang landas ang may pinakakaunting layer na natitira para i-debug.