Membangun aplikasi Xamarin untuk iOS
Penting
Visual Studio App Center dijadwalkan untuk dihentikan pada 31 Maret 2025. Meskipun Anda dapat terus menggunakan Visual Studio App Center hingga sepenuhnya dihentikan, ada beberapa alternatif yang direkomendasikan yang dapat Anda pertimbangkan untuk bermigrasi.
Pelajari selengkapnya tentang garis waktu dukungan dan alternatif.
Catatan
Versi dan persyaratan yang didukung App Center mendukung proyek Portable Class Library (PCL) dan .NET Standard . Lihat Cloud Build Machines untuk versi .NET Standard. App Center tidak mendukung Komponen dari Xamarin Component Store dan kami menyarankan untuk menggunakan paket NuGet kapan pun tersedia. Jika Anda menggunakan Komponen yang tidak dapat diganti, hubungi kami. Lihat bantuan dan umpan balik.
Untuk mulai membangun aplikasi Xamarin iOS pertama, Anda harus:
- Sambungkan ke akun layanan repositori Anda (GitHub, Bitbucket, VSTS, Azure DevOps).
- Pilih repositori dan cabang tempat aplikasi Anda berada.
- Konfigurasikan proyek atau ruang kerja build, dan skema yang ingin Anda buat.
Catatan
Agar aplikasi berjalan pada perangkat nyata, build harus ditandatangani kode dengan profil provisi yang valid dan sertifikat.
Jika sebelumnya Anda belum tersambung ke akun layanan repositori, Anda harus menyambungkannya. Setelah akun Anda tersambung, pilih repositori tempat proyek iOS Anda berada. Untuk menyiapkan build untuk repositori, Anda memerlukan admin dan menarik izin untuk repositori tersebut.
Setelah memilih repositori, pilih cabang yang ingin Anda bangun. Secara default semua cabang aktif akan dicantumkan.
Sebelum build pertama Anda, proyek Xamarin perlu dikonfigurasi.
App Center secara otomatis mendeteksi solusi dan file proyek di repositori Anda jika berada dalam rentang analisis. Pilih .sln atau .csproj/.fsproj yang ingin Anda bangun.
Catatan
Untuk performa terbaik, analisis saat ini terbatas pada dua tingkat direktori untuk .sln dan empat tingkat direktori untuk .csproj/fsproj termasuk akar repositori Anda.
Dalam kode Anda, pastikan untuk menonaktifkan proyek Android dan UWP untuk konfigurasi build yang ditujukan untuk build iOS: buka pemetaan konfigurasi solusi, dan untuk semua pemetaan yang menargetkan iPhone dan iPhoneSimulator, hapus centang semua proyek yang menargetkan platform lain. Perubahan ini akan memastikan bahwa ketika .sln sedang membangun, .sln tidak akan mencoba membangun proyek lain. Ada lebih banyak informasi pemetaan konfigurasi solusi yang dapat Anda baca.
Untuk membangun dari file .csproj/.fsproj semua proyek yang direferensikan (misalnya, proyek PCL Anda) harus berisi konfigurasi dengan nama yang sama dengan yang dari proyek iOS sumber Anda. Jadi, jika Anda menjalankan konfigurasi Debug untuk simulator di App Center, proyek PCL Anda harus memiliki konfigurasi Debug|iPhoneSimulator . Jika tidak ada dan untuk mencegah kesalahan lebih lanjut, kami menambahkan konfigurasi tersebut sebelum membangun proyek Anda. Konfigurasi tersebut hanya memiliki pengaturan default dasar untuk Debug dan Rilis.
Pilih konfigurasi yang ingin Anda buat. Konfigurasi secara otomatis terdeteksi tergantung pada file sumber yang dipilih pada langkah sebelumnya.
App Center memungkinkan penggunaan lingkungan Mono yang berbeda yang dibundel dengan Xamarin.iOS SDK masing-masing agar build Anda dapat mempertahankan kompatibilitas mundur sambil merilis dukungan untuk fitur baru. Mono default untuk konfigurasi cabang baru akan menjadi yang stabil terbaru. Anda dapat memilih untuk menggunakan salah satu lingkungan Mono sebelumnya untuk membangun versi kerangka kerja atau pustaka yang lebih lama. Saat memilih versi Mono yang berbeda, Anda akan melihat versi Xamarin.iOS SDK yang dibundel dengannya. Untuk melacak pembaruan versi Xamarin SDK, Anda dapat membaca posting di blog rilis Xamarin.
Versi .NET yang tepat akan dipilih secara otomatis berdasarkan versi Xamarin.iOS yang digunakan untuk build dan tidak dapat ditimpa. Anda dapat melihat pemetaan Xamarin.iOS ke .NET yang digunakan oleh layanan kami dalam tabel di bawah ini:
Xamarin.iOS | .NET |
---|---|
13.20 | 3.1.401 |
14,0 | 3.1.401 |
14,2 | 3.1.401 |
+14.4 | 3.1.401 |
+14.6 | 5.0.100 |
+14.8 | 5.0.100 |
14.10 | 5.0.100 |
14.14 | 5.0.100 |
14.16 | 5.0.100 |
14.20 | 5.0.100 |
15 | 5.0.100 |
15.2 | 5.0.100 |
15.4 | 5.0.100 |
15.6 | 5.0.100 |
15.8 | 5.0.100 |
15.10 | 5.0.100 |
15.12 | 5.0.100 |
16,0 | 5.0.100 |
16.0 (.NET 6) | 6.0.405 |
16.1 | 6.0.405 |
16.2 | 6.0.405 |
Versi Xamarin yang saat ini didukung memerlukan Xcode 11.7 atau yang lebih tinggi
Secara default, build baru dipicu setiap kali pengembang mendorong ke cabang yang dikonfigurasi. Jika Anda lebih suka memicu build baru secara manual, Anda bisa mengubah pengaturan ini di panel konfigurasi.
Build simulator hanya dapat dijalankan pada simulator dan tidak dapat diinstal pada perangkat, namun build selesai lebih cepat daripada build perangkat. Jika build Anda bukan build simulator, Anda perlu mengunggah file penandatanganan kode di langkah berikutnya.
Saat diaktifkan, CFBundleVersion
di Info.plist aplikasi Anda secara otomatis meningkat untuk setiap build. Perubahan terjadi pra-build dan tidak akan diterapkan pada repositori Anda.
Build perangkat yang berhasil akan menghasilkan file IPA. Untuk menginstal build pada perangkat, build perlu ditandatangani dengan profil provisi dan sertifikat yang valid. Untuk menandatangani build yang dihasilkan dari cabang, aktifkan penandatanganan kode di panel konfigurasi dan unggah profil provisi (.mobileprovision
) dan sertifikat yang valid (.p12
), bersama dengan kata sandi untuk sertifikat. Anda dapat membaca selengkapnya tentang penandatanganan kode dan provisi perangkat aplikasi Xamarin iOS dalam dokumentasi Xamarin.
Aplikasi dengan ekstensi aplikasi atau watchOS memerlukan profil provisi tambahan per ekstensi untuk ditandatangani.
Catatan
Ada masalah yang ada saat berjalan nuget restore
dalam proyek yang berisi aplikasi Xamarin watchOS.
Membangun aplikasi watchOS di App Center tanpa solusi akan mengakibatkan kesalahan:
Project <project> is not compatible with xamarinios10 (Xamarin.iOS,Version=v1.0) / win-x86. Project <project> supports: xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0)
.
Untuk membangun aplikasi watchOS di App Center, diperlukan solusi. Dalam proyek iOS yang berisi, yang mereferensikan ke Aplikasi Watch, baris tambahan harus disertakan:
<ReferenceOutputAssembly>False</ReferenceOutputAssembly>
Contoh referensi WatchApp dengan solusi sementara:
<ProjectReference Include="..\MyWatchApp\MyWatchApp.csproj">
<Project>{59EB034F-3D29-43A5-B89F-124879504771}</Project>
<Name>MyWatchApp</Name>
<IsWatchApp>True</IsWatchApp>
<ReferenceOutputAssembly>False</ReferenceOutputAssembly>
</ProjectReference>
Gunakan file .ipa yang baru diproduksi untuk menguji apakah aplikasi Anda dimulai di perangkat nyata. Pengujian peluncuran menambahkan sekitar 10 menit lagi ke waktu build. Anda mungkin ingin memeriksa panduan yang lebih komprehensif tentang menguji build Anda
Jika file NuGet.config dicek masuk untuk repositori dan berada di samping .sln atau tingkat akar repositori Anda, App Center memulihkan umpan NuGet privat Anda saat ditambahkan seperti yang ditunjukkan pada contoh di bawah ini. Kredensial dapat ditambahkan dengan aman dengan menggunakan variabel lingkungan:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget" value="https://api.nuget.org/v3/index.json" />
<add key="MyGet" value="https://www.myget.org/F/MyUsername/api/v2/index.json" />
<add key="MyAuthNuget" value="https://nuget.example.com/v2/index.json" />
</packageSources>
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
<packageSourceCredentials>
<MyAuthNuget>
<add key="Username" value="$USER_VARIABLE" />
<add key="ClearTextPassword" value="$PASSWORD_VARIABLE" />
</MyAuthNuget>
</packageSourceCredentials>
</configuration>
Jika Anda memiliki konfigurasi yang kompleks dan memerlukan informasi lebih lanjut, lihat Mengonfigurasi perilaku NuGet.
Anda dapat mengonfigurasi setiap build yang berhasil dari cabang untuk didistribusikan ke grup distribusi yang dibuat sebelumnya. Anda dapat menambahkan grup distribusi baru dari dalam bagian Distribusikan. Selalu ada grup distribusi default yang disebut "Kolaborator" yang mencakup semua pengguna yang memiliki akses ke aplikasi.
Setelah Anda menyimpan konfigurasi, build baru akan dimulai secara otomatis.
Setelah build dipicu, build dapat berada di status berikut:
- antrean - Build dalam antrean menunggu sumber daya dibebaskan.
- building - Build sedang berjalan dan menjalankan tugas yang telah ditentukan sebelumnya.
- berhasil - Build berhasil diselesaikan.
- gagal - Build berhenti karena kegagalan. Anda dapat memecahkan masalah apa yang salah dengan mengunduh dan memeriksa log build.
- dibatalkan - Build dibatalkan oleh tindakan pengguna atau kehabisan waktu.
Untuk build yang telah selesai (berhasil atau gagal), unduh log untuk memahami lebih lanjut tentang cara build berjalan. App Center menyediakan arsip dengan file berikut:
|-- 1_build.txt (this is the general build log)
|-- build (this folder contains a separate log file for each build step)
|-- <build-step-1> (e.g. 2_Get Sources.txt)
|-- <build-step-2> (e.g. 3_Pod install.txt)
|--
|-- <build-step-n> (e.g. n_Post Job Cleanup.txt)
Log khusus langkah build (terletak di build/
direktori arsip) sangat membantu untuk pemecahan masalah dan pemahaman dalam langkah apa dan mengapa build gagal.
.ipa
adalah file arsip aplikasi iOS yang berisi aplikasi iOS. Jika build telah ditandatangani dengan benar, .ipa
dapat diinstal pada perangkat nyata, sesuai dengan profil provisi yang digunakan saat menandatangani. Ada detail selengkapnya tentang penandatanganan dan distribusi kode dengan App Center.
Jika aplikasi ini adalah build simulator, Anda dapat menjalankan .app
file pada simulator, tetapi Anda tidak dapat menggunakannya di perangkat nyata.
File simbol hanya dibuat untuk build perangkat. File .dsym berisi simbol debug untuk aplikasi.
- Jika sebelumnya mengintegrasikan App Center SDK di aplikasi Anda dengan modul pelaporan crash diaktifkan, layanan pelaporan crash mengharuskan file ini
.dsym
untuk build menampilkan laporan crash yang dapat dibaca manusia (simbolis). - Jika sebelumnya Anda mengintegrasikan SDK lain untuk pelaporan crash di aplikasi Anda (misalnya, HockeyApp SDK), layanan yang sesuai memerlukan
.dsym
file untuk menampilkan laporan crash yang dapat dibaca manusia.