Giả định thông thường là một phiên màn hình từ xa di chuyển toàn bộ môi trường phát triển sang laptop của bạn. Nó chỉ di chuyển màn hình, bàn phím và chuột, không gì khác. iPhone phải đến được Mac đang chạy Xcode, và đó là một kết nối riêng với các yêu cầu riêng về tin cậy, truyền tải và quyền. Mọi thứ bên dưới đều xuất phát từ sự tách biệt đó, và đó cũng là chỗ mà phần lớn các thiết lập thất bại mất nửa ngày.

Lầm tưởng: điều khiển từ xa cũng di chuyển thiết bị

Phần mềm màn hình từ xa chuyển tiếp màn hình và luồng nhập liệu, và trên một kết nối tốt, cảm giác như Mac đang ngồi trước mặt bạn. Nhưng thứ nó không chuyển tiếp là USB, và nó cũng không đưa điện thoại vào mạng của Mac. Phiên làm việc kết thúc trên màn hình của Mac, nơi Xcode sau đó phải tìm thiết bị theo quy tắc của chính nó. Cho rằng điện thoại di chuyển cùng các điểm ảnh là sai lầm phổ biến nhất trong cách bố trí này.

Hai kết nối độc lập, và một cái có thể hoàn hảo trong khi cái kia không tồn tại. Việc sửa phiên màn hình không cho bạn biết gì về đường đi của thiết bị.

Hãy xác định điện thoại đang ở đâu về mặt vật lý trước khi cấu hình bất cứ thứ gì

Nếu điện thoại ở cạnh Mac, hãy thực hiện thiết lập cục bộ thông thường tại đó: tin tưởng máy tính, bật chế độ nhà phát triển trên thiết bị, và xác nhận rằng Xcode biên dịch và chạy trên nó khi bạn ngồi trước máy. Màn hình từ xa sau đó điều khiển một quy trình đã hoạt động. Đó là cách bố trí rẻ nhất và là cách nên chọn khi phần cứng cho phép.

Nếu điện thoại đi cùng bạn và Mac ở lại văn phòng, Mac cần một đường đi được hỗ trợ tới thiết bị đó. VPN cung cấp một tuyến mạng giữa hai đầu và không cung cấp gì khác: ghép nối, chế độ nhà phát triển, danh tính ký và đăng ký thiết bị đều vẫn là những yêu cầu riêng. Hãy coi đường hầm là một lớp trong chồng lớp, không phải là bản thân kết nối.

Hãy ghi lại bạn đang ở cách bố trí nào trong hai cách đó. Mọi kiểm tra sau này phụ thuộc vào điều đó, và việc trộn lẫn chúng tạo ra các cách sửa không thể hoạt động.

Coi phát hiện và truyền tải là hai vấn đề khác nhau

Xcode tìm các thiết bị không dây đã ghép nối qua Bonjour trên mạng cục bộ, và nó cũng có thể tiếp cận một thiết bị tại địa chỉ đã biết qua Connect via IP Address. Đó là hai cơ chế với hai kiểu hỏng khác nhau. Một thiết bị không bao giờ xuất hiện trong danh sách và một thiết bị xuất hiện nhưng từ chối kết nối không phải là cùng một triệu chứng, dù cả hai đều được đọc như một chiếc điện thoại bị mất.

Hãy tìm quảng cáo trước khi thay đổi bất cứ điều gì: dns-sd -B _apple-mobdev2._tcp liệt kê dịch vụ mà một điện thoại đã ghép nối công bố trên liên kết cục bộ. Nếu không có gì xuất hiện, phát hiện là lớp bị hỏng và kết nối dựa trên địa chỉ là con đường duy nhất còn lại. Nếu dịch vụ xuất hiện nhưng Xcode vẫn không thể kết nối, phát hiện hoạt động và thứ thất bại là truyền tải hoặc quan hệ tin cậy.

Trợ giúp của Apple về thiết bị không dây bao gồm cả yêu cầu cùng mạng và quy trình làm việc với địa chỉ, vì vậy hãy đọc nó so với các phiên bản đã cài đặt thay vì đi theo một đường menu nhớ từ bản phát hành cũ. Nhãn menu dịch chuyển giữa các bản phát hành Xcode ngay cả khi cơ chế bên dưới không đổi.

Kiểm tra những gì Mac có thể thấy từ vị trí của nó

Hãy chạy việc liệt kê trên Mac chứ không phải trên laptop, vì Mac là cỗ máy cần thiết bị. xcrun devicectl list devices in ra các thiết bị mà Xcode có thể tiếp cận, và system_profiler SPUSBDataType cho thấy thứ gì được kết nối vật lý. Một điện thoại xuất hiện trong danh sách thứ hai nhưng không có trong danh sách thứ nhất là đã kết nối mà chưa ghép nối, đó là vấn đề tin cậy chứ không phải vấn đề mạng.

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

Nếu thiết bị nằm trên một mạng con khác, hãy xác nhận rằng Mac có thể tiếp cận địa chỉ mà điện thoại công bố, và nhớ rằng địa chỉ link-local IPv6 chỉ giới hạn trong một liên kết và không được định tuyến qua đường hầm. Đó là lý do một VPN đơn lẻ hiếm khi làm xuất hiện một điện thoại từ xa: địa chỉ mà thiết bị quảng cáo chỉ có ý nghĩa trong phân đoạn của chính nó.

Ghi chú kỹ thuật TN3158 của Apple nêu rằng từ phiên bản 15 trở đi, Xcode giao tiếp với thiết bị có dây qua một giao diện mạng xây trên link-local IPv6, nên việc lọc cục bộ có thể can thiệp ngay cả với một điện thoại được cắm vật lý. Hãy chuyển trường hợp đó cho người sở hữu chính sách lọc thay vì tự tắt nó.

Hãy chứng minh bằng một bản dựng, không phải bằng biểu tượng thiết bị

Một mục thiết bị trong danh sách, một chỉ báo xanh trên thanh công cụ hay một lời nhắc ghép nối thành công đều là những quan sát trung gian. Quy trình được chứng minh khi Xcode cài đặt một bản dựng được phép và trình gỡ lỗi gắn vào một tiến trình đang chạy trên thiết bị.

Hãy chạy toàn bộ trình tự từ Mac. xcrun devicectl device install app --device DEVICE_UDID build/MyApp.app cài đặt mà không cần IDE, điều này tách một vấn đề giao diện Xcode khỏi một vấn đề đường đi của thiết bị. Sau đó khởi chạy ứng dụng và gắn một bảng điều khiển vào nó. Nếu việc cài đặt từ dòng lệnh hoạt động mà IDE thì không, lỗi còn lại nằm ở scheme hoặc ở cấu hình ký chứ không phải ở mạng.

Giữ cách bố trí hẹp: một nhà phát triển được cấp quyền, một Mac đã đăng ký, một thiết bị và quyền truy cập kết thúc khi phiên kết thúc. Hãy thu hồi thông tin đăng nhập khi cách bố trí chấm dứt. Nếu điện thoại chỉ cần ở cạnh Mac, hãy chọn cách đó, vì con đường được hỗ trợ đơn giản nhất là con đường còn ít lớp nhất để gỡ lỗi.

Bài viết liên quan