Bagikan melalui


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:

  1. 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.
  2. Pastikan Bahwa Masuk Jarak Jauh diaktifkan di Mac. Atur akses hanya untuk pengguna ini, dan pastikan pengguna Mac Anda disertakan dalam daftar atau grup:

    Set access for Only these users

  3. Periksa apakah firewall Anda mengizinkan koneksi masuk melalui port 22 - default untuk SSH:

    Check that the firewall allows incoming connections through port 22

    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 atau mono-sgen32 menerima koneksi masuk. Pastikan untuk mengklik Izinkan pada dialog ini:

    Click Allow on this dialog

  4. Konfirmasikan bahwa Anda masuk ke akun pengguna di Mac tersebut dan memiliki sesi GUI aktif.

  5. 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:

    Getting the account name from the Terminal app

  6. 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.

    The IP address in the System Preferences app

  7. Setelah Anda mengonfirmasi alamat IP Mac, coba ping alamat tersebut di cmd.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.

  8. 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 mencoba ssh masuk ke Mac dengan nama pengguna dan alamat IP Anda:

    ssh amyb@10.1.8.95
    

  9. 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.

  10. Jika langkah 8 gagal, Anda dapat menjalankan perintah berikut di Terminal di Mac untuk melihat apakah server SSH menerima koneksi apa pun :

    ssh localhost
    
  11. 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 mengonfigurasi pfctl di masa lalu.

  12. 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, jalankan grep 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.

    1. Konfirmasi lokasi file sshd_config dengan menjalankan ls /etc/ssh/sshd_config dan ls /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".

      Running ls /etc/ssh/sshd_config and ls /etc/sshd_config in the Terminal

    2. Jalankan cp /etc/ssh/sshd_config "$HOME/Desktop/" di Terminal untuk menyalin file ke desktop Anda.

    3. Buka file dari Desktop Anda di editor teks. Misalnya, Anda dapat menjalankan open -a TextEdit "$HOME/Desktop/sshd_config" di Terminal.

    4. Tambahkan baris berikut di bagian bawah file:

      UseDNS no
      
    5. Hapus baris apa pun yang mengatakan UseDNS yes untuk memastikan pengaturan baru berlaku.

    6. Simpan file.

    7. 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.

    8. 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.

  1. Jalankan perintah berikut di Terminal di Mac:

    open "$HOME/Library/Caches/Xamarin"
    
  2. Klik kontrol folder XMA dan pilih Pindahkan ke Sampah:

    Move the XMA folder to Trash

  3. 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:

  1. Pilih Tampilkan > Output dari menu atau klik tab Output .
  2. Klik menu drop-down Tampilkan output dari.
  3. Pilih Xamarin.

Select Xamarin in the Output tab

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:

  1. 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.

  2. Coba sambungkan ke host build.

  3. Setelah Visual Studio mencapai kesalahan koneksi, kumpulkan log dari Bantuan > Xamarin > Log Zip:

    Collect the logs from Help > Xamarin > Zip Logs

  4. 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 :

    Select the svclog file

  5. 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:

    Click the Layout Mode drop-down menu and select Thread

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.

  1. Keluar dari Visual Studio.

  2. Mulai Perintah Pengembang.

  3. Jalankan perintah berikut di prompt perintah untuk meluncurkan Visual Studio dengan pengelogan verbose:

    devenv /log
    
  4. Coba sambungkan ke host build dari Visual Studio.

  5. Setelah Visual Studio mencapai kesalahan koneksi, kumpulkan log dari Bantuan > Xamarin > Log Zip.

  6. 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, jalankan grep 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:

Ensuring that the Apple developer account is logged in and the iOS Development Profile is downloaded

"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

Running commands in Terminal on the Mac

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.

  1. Jalankan perintah berikut di Terminal di Mac:

    open "$HOME/Library/Caches/Xamarin"
    
  2. Klik kontrol folder mtbs dan pilih Pindahkan ke Sampah:

    Move the mtbs folder to Trash