Δεν μπορείτε απλώς να συνδέσετε ένα iPhone σε απομακρυσμένο Mac για το Xcode
Η απομακρυσμένη επιφάνεια εργασίας σάς δείχνει το Xcode, όχι το iPhone που βρίσκεται στο γραφείο σας. Ζευγαρώστε τη συσκευή με το Mac που κάνει build και αντιμετωπίστε την ανακάλυψη ως ξεχωριστό ζήτημα από τη μεταφορά.
Η συνήθης υπόθεση είναι ότι μια συνεδρία απομακρυσμένης επιφάνειας εργασίας μεταφέρει ολόκληρο το περιβάλλον ανάπτυξης στο φορητό σας. Μεταφέρει την οθόνη, το πληκτρολόγιο και το ποντίκι, και τίποτε άλλο. Το iPhone πρέπει να φτάσει στο Mac που εκτελεί το Xcode, και αυτή είναι ξεχωριστή σύνδεση με δικές της απαιτήσεις εμπιστοσύνης, μεταφοράς και αδειών. Όλα παρακάτω προκύπτουν από αυτόν τον διαχωρισμό, και εκεί ακριβώς οι περισσότερες αποτυχημένες ρυθμίσεις χάνουν ένα απόγευμα.
Ο μύθος: ο απομακρυσμένος έλεγχος μεταφέρει και τη συσκευή
Το λογισμικό απομακρυσμένης επιφάνειας εργασίας προωθεί μια οθόνη και μια ροή εισόδου, και σε καλή σύνδεση μοιάζει σαν το Mac να κάθεται μπροστά σας. Αυτό που δεν προωθεί είναι το USB, και ούτε τοποθετεί το τηλέφωνο στο δίκτυο του Mac. Η συνεδρία τελειώνει στην επιφάνεια εργασίας του Mac, όπου το Xcode πρέπει μετά να βρει συσκευή με τους δικούς του κανόνες. Η υπόθεση ότι το τηλέφωνο ταξιδεύει μαζί με τα pixel είναι το πιο συνηθισμένο λάθος σε αυτή τη διάταξη.
Οι δύο συνδέσεις είναι ανεξάρτητες, και η μία μπορεί να είναι τέλεια ενώ η άλλη δεν υπάρχει καθόλου. Η επισκευή της συνεδρίας επιφάνειας εργασίας δεν σας λέει τίποτε για τη διαδρομή προς τη συσκευή.
Αποφασίστε πού βρίσκεται φυσικά το τηλέφωνο πριν ρυθμίσετε οτιδήποτε
Αν το τηλέφωνο μένει δίπλα στο Mac, κάντε εκεί τη συνηθισμένη τοπική ρύθμιση: εμπιστευτείτε τον υπολογιστή, ενεργοποιήστε τη λειτουργία προγραμματιστή στη συσκευή και επιβεβαιώστε ότι το Xcode κάνει build και εκτελείται σε αυτή ενώ κάθεστε μπροστά στο μηχάνημα. Τότε η απομακρυσμένη επιφάνεια εργασίας ελέγχει μια ροή εργασίας που ήδη λειτουργεί. Αυτή είναι η φθηνότερη διάταξη και εκείνη που πρέπει να προτιμάτε όταν το επιτρέπει το υλικό.
Αν το τηλέφωνο ταξιδεύει μαζί σας και το 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 μόνο του σπάνια κάνει ένα απομακρυσμένο τηλέφωνο να εμφανιστεί: η διεύθυνση που διαφημίζει η συσκευή έχει νόημα μόνο στο δικό της τμήμα.
Η τεχνική σημείωση TN3158 της Apple αναφέρει ότι από την έκδοση 15 και μετά το Xcode μιλά με ενσύρματη συσκευή μέσω διεπαφής δικτύου χτισμένης σε τοπικό για ζεύξη IPv6, οπότε το τοπικό φιλτράρισμα μπορεί να εμποδίσει ακόμη και ένα τηλέφωνο που είναι φυσικά συνδεδεμένο. Κλιμακώστε αυτή την περίπτωση σε όποιον είναι υπεύθυνος για την πολιτική φιλτραρίσματος αντί να την απενεργοποιήσετε μόνοι σας.
Αποδείξτε το με ένα build, όχι με ένα εικονίδιο συσκευής
Μια καταχώριση συσκευής σε λίστα, μια πράσινη ένδειξη στη γραμμή εργαλείων ή ένα επιτυχές αίτημα ζευγαρώματος είναι ενδιάμεσες παρατηρήσεις. Η ροή εργασίας αποδεικνύεται όταν το Xcode εγκαθιστά ένα επιτρεπόμενο build και ο αποσφαλματωτής προσκολλάται σε μια διεργασία που εκτελείται στη συσκευή.
Εκτελέστε ολόκληρη την ακολουθία από το Mac. Το xcrun devicectl device install app --device DEVICE_UDID build/MyApp.app εγκαθιστά χωρίς το IDE, κάτι που διαχωρίζει ένα πρόβλημα της διεπαφής του Xcode από ένα πρόβλημα της διαδρομής προς τη συσκευή. Στη συνέχεια εκκινήστε την εφαρμογή και προσαρτήστε μια κονσόλα σε αυτή. Αν η εγκατάσταση από τη γραμμή εντολών λειτουργεί και το IDE όχι, το υπόλοιπο σφάλμα είναι στο σχήμα ή στη ρύθμιση υπογραφής και όχι στο δίκτυο.
Κρατήστε τη διάταξη στενή: ένας εξουσιοδοτημένος προγραμματιστής, ένα καταχωρισμένο Mac, μία συσκευή και πρόσβαση που τελειώνει όταν τελειώνει η συνεδρία. Ανακαλέστε τα διαπιστευτήρια όταν σταματήσει η διάταξη. Αν το τηλέφωνο μπορεί απλώς να μείνει δίπλα στο Mac, προτιμήστε το, γιατί η απλούστερη υποστηριζόμενη διαδρομή είναι εκείνη με τα λιγότερα στρώματα που απομένουν για αποσφαλμάτωση.