Pemecahan Masalah Koneksi ion untuk Host Build Xamarin.iOS
Panduan ini menyediakan langkah-langkah pemecahan masalah untuk masalah yang mungkin dihadapi menggunakan manajer koneksi baru, termasuk masalah konektivitas dan SSH.
Lokasi File Log
- Mac –
~/Library/Logs/Xamarin.Messaging-[VERSION.BUILD]
- Windows –
%LOCALAPPDATA%\Xamarin\Logs
File log dapat ditemukan dengan menelusuri Bantuan > Log Xamarin > Zip di Visual Studio.
Di mana Aplikasi Host Build Xamarin?
Xamarin Build Host dari versi Xamarin.iOS yang lebih lama tidak lagi diperlukan. Visual Studio sekarang secara otomatis menyebarkan agen melalui Login Jarak Jauh dan menjalankannya di latar belakang. Tidak ada aplikasi tambahan yang akan berjalan di mesin Mac atau Windows.
Pemecahan Masalah Masuk Jarak Jauh
Penting
Langkah-langkah pemecahan masalah ini terutama ditujukan untuk masalah yang terjadi selama penyiapan awal pada sistem baru. Jika sebelumnya Anda telah berhasil menggunakan koneksi di lingkungan tertentu dan kemudian koneksi tiba-tiba atau terputus-putus berhenti berfungsi, Anda dapat (dalam kebanyakan kasus) langsung melompat untuk memeriksa apakah salah satu hal berikut membantu:
- Matikan proses sisa seperti yang dijelaskan di bawah ini di bawah Kesalahan karena Proses Host Build yang ada.
- Hapus agen seperti yang dijelaskan di bawah Membersihkan Agen Broker, IDB, Build, dan Perancang, lalu gunakan koneksi internet berkabel dan sambungkan langsung melalui alamat IP seperti yang dijelaskan di bawah Tidak dapat terhubung ke MacBuildHost.local. Silakan coba lagi..
Jika tidak ada opsi tersebut yang memperbaiki masalah, ikuti instruksi di langkah 9 untuk mengajukan laporan bug baru.
Pastikan Anda telah menginstal versi Xamarin.iOS yang kompatibel di Mac Anda. Untuk melakukan ini dengan Visual Studio 2017, pastikan Anda berada di saluran distribusi Stabil di Visual Studio untuk Mac. Di Visual Studio 2015 dan yang lebih lama, pastikan Anda berada di saluran distribusi yang sama di kedua ID.
- Di Visual Studio untuk Mac, buka Visual Studio untuk Mac > Periksa Pembaruan... untuk melihat atau mengubah saluran Pembaruan.
- Di Visual Studio 2015 dan yang lebih lama, periksa saluran distribusi di bawah Opsi > Alat > Xamarin > Lainnya.
Pastikan Bahwa Masuk Jarak Jauh diaktifkan di Mac. Atur akses hanya untuk pengguna ini, dan pastikan pengguna Mac Anda disertakan dalam daftar atau grup:
Periksa apakah firewall Anda mengizinkan koneksi masuk melalui port 22 - default untuk SSH:
Jika Anda telah menonaktifkan Secara otomatis mengizinkan perangkat lunak yang ditandatangani untuk menerima koneksi masuk, OS X akan menyajikan dialog selama proses pemasangan yang meminta untuk mengizinkan
mono-sgen
ataumono-sgen32
menerima koneksi masuk. Pastikan untuk mengklik Izinkan pada dialog ini:Konfirmasikan bahwa Anda masuk ke akun pengguna di Mac tersebut dan memiliki sesi GUI aktif.
Pastikan Anda menyambungkan ke Mac dengan nama pengguna, bukan Nama Lengkap. Ini menghindari batasan yang diketahui untuk nama lengkap yang menyertakan karakter beraksen.
Anda dapat menemukan nama pengguna dengan menjalankan
whoami
perintah di Terminal.app.Misalnya, dari cuplikan layar di bawah ini, nama akun akan amyb dan bukan Amy Burns:
Periksa apakah alamat IP yang Anda gunakan untuk Mac sudah benar. Anda dapat menemukan alamat IP di bawah Preferensi Sistem Berbagi >> Login Jarak Jauh di Mac.
Setelah Anda mengonfirmasi alamat IP Mac, coba
ping
alamat tersebut dicmd.exe
Windows:ping 10.1.8.95
Jika ping gagal, maka Mac tidak dapat dirutekan dari komputer Windows. Masalah tersebut perlu diselesaikan pada tingkat konfigurasi jaringan area lokal antara 2 komputer. Pastikan kedua komputer berada di Jaringan Lokal yang sama.
Selanjutnya, uji apakah
ssh
klien dari OpenSSH dapat berhasil tersambung ke Mac dari Windows. Salah satu cara untuk menginstal program ini adalah dengan menginstal Git untuk Windows. Anda kemudian dapat memulai prompt perintah Git Bash dan mencobassh
masuk ke Mac dengan nama pengguna dan alamat IP Anda:ssh amyb@10.1.8.95
Jika langkah 8 berhasil, Anda dapat mencoba menjalankan perintah sederhana seperti
ls
melalui koneksi:ssh amyb@10.1.8.95 'ls'
Ini harus mencantumkan konten direktori beranda Anda di Mac.
ls
Jika perintah berfungsi dengan benar tetapi koneksi Visual Studio masih gagal, Anda dapat memeriksa bagian Masalah dan Batasan yang Diketahui tentang komplikasi khusus untuk Xamarin. Jika tidak ada yang cocok dengan masalah Anda, silakan ajukan laporan bug baru di Komunitas Pengembang dengan masuk ke Bantuan > Kirim Umpan Balik > Laporkan masalah di Visual Studio dan lampirkan log yang dijelaskan di bawah Periksa File Log Verbose.Jika langkah 8 gagal, Anda dapat menjalankan perintah berikut di Terminal di Mac untuk melihat apakah server SSH menerima koneksi apa pun :
ssh localhost
Jika langkah 8 gagal tetapi langkah 10 berhasil, maka kemungkinan besar masalahnya adalah port 22 pada host build Mac tidak dapat diakses dari Windows karena konfigurasi jaringan. Kemungkinan masalah konfigurasi meliputi:
Pengaturan firewall OS X melarang koneksi. Pastikan untuk memeriksa ulang langkah 3.
Terkadang konfigurasi per aplikasi untuk firewall OS X juga dapat berakhir dalam keadaan tidak valid di mana pengaturan yang ditampilkan di Preferensi Sistem tidak mencerminkan perilaku aktual. Menghapus file konfigurasi (/Library/Preferences/com.apple.alf.plist) dan me-reboot komputer dapat membantu memulihkan perilaku default. Salah satu cara untuk menghapus file adalah dengan memasukkan /Library/Preferences di bawah Buka > Folder di Finder, lalu pindahkan file com.apple.alf.plist ke Sampah.
Pengaturan firewall salah satu router antara Mac dan komputer Windows memblokir koneksi.
Windows itu sendiri melarang sambungan keluar ke port jarak jauh 22. Ini akan menjadi tidak biasa. Dimungkinkan untuk mengonfigurasi Windows Firewall untuk melarang koneksi keluar, tetapi pengaturan defaultnya adalah mengizinkan semua koneksi keluar.
Host build Mac melarang akses ke port 22 dari semua host eksternal melalui
pfctl
aturan. Ini tidak mungkin kecuali Anda tahu bahwa Anda telah mengonfigurasipfctl
di masa lalu.
Jika langkah 8 gagal dan langkah 10 gagal, maka kemungkinan masalahnya adalah proses server SSH pada Mac tidak berjalan atau tidak dikonfigurasi untuk memungkinkan pengguna saat ini masuk. Dalam hal ini pastikan untuk memeriksa kembali pengaturan Masuk Jarak Jauh dari langkah 2 sebelum Anda menyelidiki kemungkinan yang lebih rumit.
Masalah dan Batasan yang Diketahui
Catatan
Bagian ini hanya berlaku jika Anda telah berhasil tersambung ke host build Mac dengan nama pengguna dan kata sandi Mac Anda menggunakan klien OpenSSH SSH, seperti yang dibahas dalam langkah 8 dan 9 di atas.
"Kredensial tidak valid. Harap coba lagi."
Penyebab yang diketahui:
- Batasan – Kesalahan ini dapat muncul saat mencoba masuk ke host build menggunakan Nama Lengkap akun jika nama menyertakan karakter beraksen. Ini adalah batasan pustaka SSH.NET yang digunakan Xamarin untuk koneksi SSH. Solusi sementara: Lihat langkah 5 di atas.
"Tidak dapat mengautentikasi dengan kunci SSH. Silakan coba masuk dengan kredensial terlebih dahulu"
Penyebab yang diketahui:
- Pembatasan keamanan SSH – Pesan ini paling sering berarti bahwa salah satu file atau direktori di jalur $HOME/.ssh/authorized_keys yang sepenuhnya memenuhi syarat di Mac memiliki izin tulis yang diaktifkan untuk anggota lain atau grup . Perbaikan umum: Jalankan
chmod og-w "$HOME"
di prompt perintah Terminal di Mac. Untuk detail tentang file atau direktori tertentu mana yang menyebabkan masalah, jalankangrep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
di Terminal, lalu buka file sshd.log dari Desktop Anda dan cari "Autentikasi ditolak: kepemilikan atau mode yang buruk".
"Mencoba menyambungkan..." tidak pernah selesai
- Bug – Masalah ini dapat terjadi pada Xamarin 4.1 jika shell Masuk di menu konteks Opsi Tingkat Lanjut untuk pengguna Mac di Pengguna & Grup Preferensi > Sistem diatur ke nilai selain /bin/bash. (Dimulai dengan Xamarin 4.2, skenario ini malah mengarah ke pesan kesalahan "Tidak dapat terhubung".) Solusi sementara: Ubah shell Login kembali ke default asli /bin/bash.
"Tidak dapat tersambung ke MacBuildHost.local. Harap coba lagi."
Penyebab yang dilaporkan:
Bug - Beberapa pengguna telah melihat pesan kesalahan ini bersama dengan kesalahan yang lebih rinci dalam file log "Terjadi kesalahan tak terduga saat mengonfigurasi SSH untuk pengguna ... Operasi sesi telah kehabisan waktu" saat mencoba masuk ke host build menggunakan Direktori Aktif atau akun pengguna domain layanan direktori lainnya. Solusi sementara: Masuk ke host build menggunakan akun pengguna lokal sebagai gantinya.
Bug – Beberapa pengguna telah melihat kesalahan ini saat mencoba menyambungkan ke host build dengan mengklik dua kali nama Mac dalam dialog koneksi. Kemungkinan solusi sementara: Tambahkan Mac secara manual menggunakan alamat IP.
Bug – Beberapa pengguna telah menjalankan kesalahan ini saat menggunakan koneksi jaringan nirkabel antara host build Mac dan Windows. Kemungkinan solusi sementara: Pindahkan kedua komputer ke koneksi jaringan berkabel.
Bug – Pada Xamarin 4.0, pesan ini akan muncul kapan saja file $HOME/.bashrc di Mac berisi kesalahan. (Dimulai dengan Xamarin 4.1, kesalahan dalam file .bashrc tidak akan lagi memengaruhi proses koneksi.) Solusi sementara: Pindahkan file .bashrc ke lokasi cadangan (atau hapus jika Anda tahu anda tidak membutuhkannya).
Bug – Kesalahan ini dapat muncul jika shell Login di menu konteks Opsi Tingkat Lanjut untuk pengguna Mac di Pengguna & Grup Preferensi > Sistem diatur ke nilai selain /bin/bash. Solusi sementara: Ubah shell Login kembali ke default asli /bin/bash.
Batasan – Kesalahan ini dapat muncul jika host build Mac tersambung ke router yang tidak memiliki akses ke internet (atau jika Mac menggunakan server DNS yang kehabisan waktu ketika dimintai pencarian reverse-DNS komputer Windows). Visual Studio akan memakan waktu sekitar 30 detik untuk mengambil sidik jari SSH dan akhirnya gagal terhubung.
Solusi yang mungkin: Tambahkan "UseDNS no" ke file sshd_config . Pastikan untuk membaca tentang pengaturan SSH ini sebelum mengubahnya. Lihat misalnya unix.stackexchange.com/questions/56941/what-is-the-point-of-sshd-usedns-option.
Langkah-langkah berikut menjelaskan salah satu cara untuk mengubah pengaturan. Anda harus masuk ke akun administrator di Mac untuk menyelesaikan langkah-langkahnya.
Konfirmasi lokasi file sshd_config dengan menjalankan
ls /etc/ssh/sshd_config
danls /etc/sshd_config
di prompt perintah Terminal. Untuk semua langkah yang tersisa, pastikan untuk menggunakan lokasi yang tidak mengembalikan "Tidak ada file atau direktori tersebut".Jalankan
cp /etc/ssh/sshd_config "$HOME/Desktop/"
di Terminal untuk menyalin file ke desktop Anda.Buka file dari Desktop Anda di editor teks. Misalnya, Anda dapat menjalankan
open -a TextEdit "$HOME/Desktop/sshd_config"
di Terminal.Tambahkan baris berikut di bagian bawah file:
UseDNS no
Hapus baris apa pun yang mengatakan
UseDNS yes
untuk memastikan pengaturan baru berlaku.Simpan file.
Jalankan
sudo cp "$HOME/Desktop/sshd_config" /etc/ssh/sshd_config
di Terminal untuk menyalin file yang diedit kembali ke tempatnya. Masukkan kata sandi Anda jika diminta.Nonaktifkan dan aktifkan kembali Masuk Jarak Jauh di bawah Preferensi > Sistem Berbagi > Login Jarak Jauh untuk memulai ulang server SSH.
Menghapus Agen Broker, IDB, Build, dan Designer di Mac
Jika file log Anda menunjukkan masalah selama langkah-langkah "Menginstal", "Mengunggah", atau "Memulai" untuk salah satu agen Mac, Anda dapat mencoba menghapus folder cache XMA untuk memaksa Visual Studio mengunggahnya kembali.
Jalankan perintah berikut di Terminal di Mac:
open "$HOME/Library/Caches/Xamarin"
Klik kontrol folder XMA dan pilih Pindahkan ke Sampah:
Ada cache pada Windows juga yang dapat membantu menghapus. Buka perintah cmd sebagai Administrator di Windows:
del %localappdata%\Temp\Xamarin\XMA
Pesan Peringatan
Bagian ini membahas beberapa pesan yang dapat muncul di jendela Output dan log yang biasanya dapat Anda abaikan.
"Ada ketidakcocokan antara Xamarin.iOS yang diinstal ... dan Xamarin.iOS lokal"
Selama Anda telah mengonfirmasi bahwa Mac dan Windows diperbarui ke saluran distribusi Xamarin yang sama, peringatan ini tidak dapat diabaikan.
"Gagal mengeksekusi 'ls /usr/bin/mono': ExitStatus=1"
Pesan ini dapat diabaikan selama Mac menjalankan OS X 10.11 (El Capitan) atau yang lebih baru. Pesan ini tidak menjadi masalah pada OS X 10.11 karena Xamarin juga memeriksa /usr/local/bin/mono, yang merupakan lokasi yang diharapkan yang benar untuk mono
pada OS X 10.11.
"Layanan Bonjour 'MacBuildHost' tidak merespons dengan alamat IP-nya."
Pesan ini tidak dapat diabaikan kecuali Anda melihat bahwa dialog koneksi tidak menampilkan alamat IP host build Mac. Jika alamat IP hilang dalam dialog tersebut , Anda masih dapat menambahkan Mac secara manual.
"Pengguna tidak valid a dari 10.1.8.95" dan "input_userauth_request: pengguna yang tidak valid [preauth]"
Anda mungkin melihat pesan ini jika Anda melihat di sshd.log. Pesan-pesan ini adalah bagian dari proses koneksi normal. Mereka muncul karena Xamarin menggunakan nama pengguna untuk sementara waktu saat mengambil Sidik Jari SSH.
Jendela Output dan File Log
Jika Visual Studio mengalami kesalahan saat menyambungkan ke host build, ada 2 lokasi untuk memeriksa pesan tambahan: jendela Output dan file log.
Jendela output
Jendela Output adalah tempat terbaik untuk memulai. Ini menampilkan pesan tentang langkah dan kesalahan koneksi utama. Untuk melihat pesan Xamarin di jendela Output:
- Pilih Tampilkan > Output dari menu atau klik tab Output .
- Klik menu drop-down Tampilkan output dari.
- Pilih Xamarin.
File Log
Jika jendela Output tidak menyertakan informasi yang cukup untuk mendiagnosis masalah, file log adalah tempat berikutnya untuk dilihat. File log berisi pesan diagnostik tambahan yang tidak muncul di jendela Output. Untuk melihat file log:
Mulai Visual Studio.
Penting
Perhatikan bahwa .svclogs tidak diaktifkan secara default. Untuk mengaksesnya, Anda harus memulai Visual Studio dengan log verbose seperti yang dijelaskan dalam panduan Log Versi. Untuk informasi selengkapnya, lihat Ekstensi Pemecahan Masalah dengan blog Log Aktivitas.
Coba sambungkan ke host build.
Setelah Visual Studio mencapai kesalahan koneksi, kumpulkan log dari Bantuan > Xamarin > Log Zip:
Saat membuka file .zip, Anda akan melihat daftar file yang mirip dengan contoh di bawah ini. Untuk kesalahan koneksi, file yang paling penting adalah file *Ide.log dan *Ide.svclog . File-file ini berisi pesan yang sama dalam dua format yang sedikit berbeda. .svclog adalah XML dan berguna jika Anda ingin menelusuri pesan. .log adalah teks biasa dan berguna jika Anda ingin memfilter pesan menggunakan alat baris perintah.
Untuk menelusuri semua pesan, pilih dan buka file .svclog :
File .svclog akan terbuka di Microsoft Service Trace Viewer. Anda dapat menelusuri pesan menurut utas untuk melihat grup pesan terkait. Untuk menelusuri menurut utas, pertama-tama pilih tab Grafik , lalu klik menu drop-down Mode Tata Letak dan pilih Utas:
File Log Verbose
Jika file log normal masih tidak memberikan informasi yang memadai untuk mendiagnosis masalah, salah satu teknik terakhir yang harus dicoba adalah mengaktifkan pengelogan verbose. Log verbose juga lebih disukai pada laporan bug.
Keluar dari Visual Studio.
Mulai Perintah Pengembang.
Jalankan perintah berikut di prompt perintah untuk meluncurkan Visual Studio dengan pengelogan verbose:
devenv /log
Coba sambungkan ke host build dari Visual Studio.
Setelah Visual Studio mencapai kesalahan koneksi, kumpulkan log dari Bantuan > Xamarin > Log Zip.
Jalankan perintah berikut di Terminal di Mac untuk menyalin pesan log terbaru dari server SSH ke dalam file di Desktop Anda:
grep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
Jika file log verbose ini tidak memberikan petunjuk yang cukup untuk menyelesaikan masalah secara langsung, silakan ajukan laporan bug baru dan lampirkan file .zip dari langkah 5 dan file .log dari langkah 6.
Pemecahan masalah provisi Mac otomatis
File log IDE
Jika Anda mengalami masalah saat menggunakan provisi Mac otomatis, lihat log IDE Visual Studio 2017, yang disimpan di %LOCALAPPDATA%\Xamarin\Logs\15.0.
Pemecahan Masalah Kesalahan Build dan Penyebaran
Bagian ini mencakup beberapa masalah yang dapat terjadi setelah Visual Studio berhasil terhubung ke host build.
"Tidak dapat tersambung ke Address='192.168.1.2:22' dengan User='macuser'"
Penyebab yang diketahui:
Fitur keamanan Xamarin 4.1 – Kesalahan ini akan terjadi jika Anda menurunkan ke Xamarin 4.0 setelah menggunakan Xamarin 4.1 atau yang lebih tinggi. Dalam hal ini kesalahan akan disertai dengan peringatan tambahan "Kunci privat dienkripsi tetapi frase sandi kosong". Ini adalah perubahan yang disengaja karena fitur keamanan baru di Xamarin 4.1. Perbaikan yang direkomendasikan: Hapus id_rsa dan id_rsa.pub dari %LOCALAPPDATA%\Xamarin\MonoTouch, lalu sambungkan kembali ke host build Mac.
Pembatasan keamanan SSH – Ketika pesan ini disertai dengan peringatan tambahan "Tidak dapat mengautentikasi pengguna menggunakan kunci ssh yang ada", itu paling sering berarti salah satu file atau direktori di jalur $HOME/.ssh/authorized_keys yang sepenuhnya memenuhi syarat di Mac memiliki izin tulis yang diaktifkan untuk anggota lain atau grup . Perbaikan umum: Jalankan
chmod og-w "$HOME"
di prompt perintah Terminal di Mac. Untuk detail tentang file atau direktori tertentu mana yang menyebabkan masalah, jalankangrep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
di Terminal, lalu buka file sshd.log dari Desktop Anda dan cari "Autentikasi ditolak: kepemilikan atau mode yang buruk".
Solusi tidak dapat dimuat dari Berbagi Jaringan
Solusi hanya akan dikompilasi jika ada di sistem file Windows lokal atau drive yang dipetakan.
Solusi yang disimpan dalam berbagi jaringan mungkin melemparkan kesalahan, atau sepenuhnya menolak untuk dikompilasi. File .sln apa pun yang digunakan di Visual Studio harus disimpan pada sistem file Windows lokal.
Kesalahan berikut dilemparkan karena masalah ini:
error : Building from a network share path is not supported at the moment. Please map a network drive to '\\SharedSources\HelloWorld\HelloWorld' or copy the source to a local directory.
Profil Provisi hilang atau Kesalahan "Gagal membuat pustaka lemak"
Luncurkan Xcode di Mac dan pastikan akun pengembang Apple Anda masuk dan Profil Pengembangan iOS Anda diunduh:
"Operasi soket dicoba ke jaringan yang tidak dapat dijangkau"
Penyebab yang dilaporkan:
- Peningkatan - Kesalahan ini dapat mencegah build yang berhasil saat Visual Studio menggunakan alamat IPv6 untuk terhubung ke host build. (Koneksi host build belum mendukung alamat IPv6.)
Plugin Visual Studio Xamarin.iOS gagal dimuat setelah penginstalan ulang saluran beta/alpha
Masalah ini mungkin terjadi ketika Visual Studio gagal me-refresh cache komponen MEF. Jika demikian, menginstal ekstensi Visual Studio ini dapat membantu: https://visualstudiogallery.msdn.microsoft.com/22b94661-70c7-4a93-9ca3-8b6dd45f47cd
Ini akan menghapus cache komponen Visual Studio MEF untuk memperbaiki masalah kerusakan cache.
Kesalahan karena Proses Host Build yang ada di Mac
Proses dari koneksi host build sebelumnya terkadang dapat mengganggu perilaku koneksi aktif saat ini. Untuk memeriksa proses yang ada, tutup Visual Studio lalu jalankan perintah berikut di Terminal di Mac:
ps -A | grep mono
Untuk mematikan proses yang ada, gunakan perintah berikut:
killall mono
Menghapus Cache Build Mac
Jika Anda memecahkan masalah build dan ingin memastikan perilaku tidak terkait dengan file build sementara yang disimpan di Mac, Anda dapat menghapus folder cache build.
Jalankan perintah berikut di Terminal di Mac:
open "$HOME/Library/Caches/Xamarin"
Klik kontrol folder mtbs dan pilih Pindahkan ke Sampah: