Kompilowanie aplikacji platformy Xamarin dla systemu iOS
Ważne
Program Visual Studio App Center ma zostać wycofany 31 marca 2025 r. Mimo że możesz nadal używać programu Visual Studio App Center do momentu jej pełnego wycofania, istnieje kilka zalecanych alternatyw, do których można rozważyć migrację.
Dowiedz się więcej o osiach czasu pomocy technicznej i alternatywach.
Uwaga
Obsługiwane wersje i wymagania w usłudze App Center obsługują projekty Portable Class Library (PCL) i .NET Standard . Zapoznaj się z tematem Cloud Build Machines for versions of .NET Standard ( Maszyny kompilacji w chmurze ), aby zapoznać się z wersjami platformy .NET Standard. Usługa App Center nie obsługuje składników ze sklepu składników Xamarin i zalecamy korzystanie z pakietów NuGet zawsze, gdy są dostępne. Jeśli używasz składnika, którego nie można zamienić, skontaktuj się z nami. Zobacz pomoc i opinie.
Aby rozpocząć tworzenie pierwszej aplikacji platformy Xamarin dla systemu iOS, należy wykonać następujące kroki:
- Połącz się z kontem usługi repozytorium (GitHub, Bitbucket, VSTS, Azure DevOps).
- Wybierz repozytorium i gałąź, w której znajduje się aplikacja.
- Skonfiguruj projekt lub obszar roboczy kompilacji oraz schemat, który chcesz skompilować.
Uwaga
Aby aplikacja działała na rzeczywistym urządzeniu, kompilacja musi być podpisana kodem z prawidłowym profilem aprowizacji i certyfikatem.
Jeśli wcześniej nie nawiązaliśmy połączenia z kontem usługi repozytorium, musisz nawiązać z nim połączenie. Po nawiązaniu połączenia konta wybierz repozytorium, w którym znajduje się projekt systemu iOS. Aby skonfigurować kompilację dla repozytorium, musisz mieć uprawnienia administratora i ściągania.
Po wybraniu repozytorium wybierz gałąź, którą chcesz skompilować. Domyślnie zostaną wyświetlone wszystkie aktywne gałęzie.
Przed pierwszą kompilacją należy skonfigurować projekt Xamarin.
Usługa App Center automatycznie wykrywa pliki rozwiązania i projektu w repozytorium, jeśli znajdują się one w zakresie analizy. Wybierz .sln lub csproj/.fsproj , które chcesz skompilować.
Uwaga
Aby uzyskać najlepszą wydajność, analiza jest obecnie ograniczona do dwóch poziomów katalogu dla .sln i czterech poziomów katalogów dla pliku csproj/fsproj , w tym katalogu głównego repozytorium.
W kodzie pamiętaj, aby wyłączyć projekty systemu Android i platformy UWP dla konfiguracji kompilacji przeznaczonych dla kompilacji systemu iOS: przejdź do mapowań konfiguracji rozwiązania i dla wszystkich mapowań przeznaczonych dla urządzeń iPhone i iPhoneSimulator, usuń zaznaczenie wszystkich projektów przeznaczonych dla innych platform. Ta zmiana zapewni, że po utworzeniu .sln nie podejmie próby skompilowania innych projektów. Istnieje więcej informacji o mapowaniu konfiguracji rozwiązań , które można przeczytać.
Aby skompilować plik csproj/.fsproj , wszystkie przywołyzowane projekty (na przykład projekt PCL) muszą zawierać konfigurację o takiej samej nazwie jak projekt źródłowy systemu iOS. Dlatego jeśli uruchomisz konfigurację debugowania dla symulatora w usłudze App Center, projekt PCL musi mieć konfigurację Debug|iPhoneSimulator . W przypadku, gdy nie istnieją i aby zapobiec dalszym błędom, dodamy takie konfiguracje przed utworzeniem projektów. Te konfiguracje mają podstawowe ustawienia domyślne tylko dla debugowania i wydania.
Wybierz konfigurację, z którą chcesz utworzyć. Konfiguracje są wykrywane automatycznie w zależności od pliku źródłowego wybranego w poprzednim kroku.
Usługa App Center umożliwia korzystanie z różnych środowisk Mono dołączonych do odpowiedniego zestawu SDK platformy Xamarin.iOS dla kompilacji w celu zachowania zgodności z poprzednimi wersjami podczas wydawania obsługi nowych funkcji. Domyślną konfiguracją mono dla nowej gałęzi będzie najnowsza stabilna. Możesz użyć jednego z poprzednich środowisk Mono do tworzenia starszych wersji platform lub bibliotek. Po wybraniu innej wersji mono zobaczysz wersję zestawu SDK platformy Xamarin.iOS, która jest dołączona do niego. Aby śledzić aktualizacje wersji zestawu Xamarin SDK, możesz przeczytać wpisy w blogu wydania platformy Xamarin.
Właściwa wersja platformy .NET zostanie wybrana automatycznie na podstawie wersji platformy Xamarin.iOS używanej do kompilacji i nie można jej zastąpić. Mapowanie platformy Xamarin.iOS można wyświetlić na platformie .NET używanej przez nasze usługi w poniższej tabeli:
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 |
Obecnie obsługiwane wersje platformy Xamarin wymagają środowiska Xcode 11.7 lub nowszego
Domyślnie nowa kompilacja jest wyzwalana za każdym razem, gdy deweloper wypycha do skonfigurowanej gałęzi. Jeśli wolisz ręcznie wyzwolić nową kompilację, możesz zmienić to ustawienie w okienku konfiguracji.
Kompilacje symulatora można uruchamiać tylko w symulatorach i nie można ich zainstalować na urządzeniu, ale kompilacje są ukończone szybciej niż kompilacje urządzeń. Jeśli kompilacja nie jest kompilacją symulatora, musisz przekazać pliki podpisywania kodu w następnym kroku.
Po włączeniu w CFBundleVersion
pliku Info.plist aplikacji automatycznie zwiększa się dla każdej kompilacji. Zmiana jest wykonywana przed kompilacją i nie zostanie zatwierdzona w repozytorium.
Pomyślna kompilacja urządzenia spowoduje utworzenie pliku IPA. Aby zainstalować kompilację na urządzeniu, należy ją podpisać przy użyciu prawidłowego profilu aprowizacji i certyfikatu. Aby podpisać kompilacje utworzone z gałęzi, włącz podpisywanie kodu w okienku konfiguracji i przekaż profil aprowizacji () oraz prawidłowy certyfikat (.mobileprovision
.p12
) wraz z hasłem dla certyfikatu. Więcej informacji na temat podpisywania kodu i aprowizacji urządzeń aplikacji platformy Xamarin dla systemu iOS można uzyskać w dokumentacji platformy Xamarin.
Aplikacje z rozszerzeniami aplikacji lub systemu watchOS wymagają podpisania dodatkowego profilu aprowizacji dla każdego rozszerzenia.
Uwaga
Podczas uruchamiania nuget restore
w projektach zawierających aplikacje Xamarin watchOS występuje istniejący problem.
Utworzenie aplikacji systemu watchOS w usłudze App Center bez obejścia spowoduje wystąpienie błędu:
Project <project> is not compatible with xamarinios10 (Xamarin.iOS,Version=v1.0) / win-x86. Project <project> supports: xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0)
.
Aby tworzyć aplikacje systemu watchOS w usłudze App Center, wymagane jest obejście problemu. W projekcie zawierającym system iOS, który odwołuje się do aplikacji do obejrzenia, należy uwzględnić dodatkowy wiersz:
<ReferenceOutputAssembly>False</ReferenceOutputAssembly>
Przykładowa dokumentacja aplikacji WatchApp z obejściem:
<ProjectReference Include="..\MyWatchApp\MyWatchApp.csproj">
<Project>{59EB034F-3D29-43A5-B89F-124879504771}</Project>
<Name>MyWatchApp</Name>
<IsWatchApp>True</IsWatchApp>
<ReferenceOutputAssembly>False</ReferenceOutputAssembly>
</ProjectReference>
Użyj nowo utworzonego pliku ipa, aby sprawdzić, czy aplikacja zostanie uruchomiona na rzeczywistym urządzeniu. Uruchamianie testowania dodaje około 10 minut do czasu kompilacji. Warto zapoznać się z bardziej kompleksowym przewodnikiem dotyczącym testowania kompilacji
Jeśli plik NuGet.config jest zaewidencjonowany dla repozytorium i znajduje się obok .sln lub poziomu głównego repozytorium, centrum aplikacji przywraca prywatne źródła danych NuGet po dodaniu, jak pokazano w poniższym przykładzie. Poświadczenia można bezpiecznie dodać przy użyciu zmiennych środowiskowych:
<?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>
Jeśli masz złożone konfiguracje i potrzebujesz więcej informacji, zapoznaj się z tematem Konfigurowanie zachowania narzędzia NuGet.
Można skonfigurować każdą pomyślną kompilację z gałęzi, która ma być dystrybuowana do wcześniej utworzonej grupy dystrybucyjnej. Nową grupę dystrybucyjną można dodać z sekcji Dystrybucja. Zawsze istnieje domyślna grupa dystrybucyjna o nazwie "Współpracownicy", która obejmuje wszystkich użytkowników, którzy mają dostęp do aplikacji.
Po zapisaniu konfiguracji zostanie automatycznie uruchomiona nowa kompilacja.
Po wyzwoleniu kompilacji może ona znajdować się w następujących stanach:
- queued — kompilacja znajduje się w kolejce oczekującej na zwolnienie zasobów.
- building — kompilacja jest uruchomiona i wykonuje wstępnie zdefiniowane zadania.
- succeeded — kompilacja została ukończona pomyślnie.
- failed — kompilacja została zatrzymana z powodu błędu. Aby rozwiązać problemy, możesz pobrać i sprawdzić dziennik kompilacji.
- canceled — kompilacja została anulowana przez akcję użytkownika lub upłynął limit czasu.
W przypadku ukończonej kompilacji (zakończonej powodzeniem lub niepowodzeniem) pobierz dzienniki, aby dowiedzieć się więcej na temat sposobu działania kompilacji. Usługa App Center udostępnia archiwum z następującymi plikami:
|-- 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)
Dzienniki specyficzne dla kroków kompilacji (znajdujące się w build/
katalogu archiwum) są przydatne do rozwiązywania problemów i zrozumienia, w jakim kroku i dlaczego kompilacja nie powiodła się.
Jest .ipa
to plik archiwum aplikacji systemu iOS, który zawiera aplikację systemu iOS. Jeśli kompilacja została poprawnie podpisana, .ipa
można ją zainstalować na rzeczywistym urządzeniu odpowiadającym profilowi aprowizacji używanemu podczas podpisywania. Więcej szczegółowych informacji na temat podpisywania i dystrybucji kodu można znaleźć w Centrum aplikacji.
Jeśli aplikacja jest kompilacją symulatora, możesz uruchomić .app
plik w symulatorze, ale nie można go używać na rzeczywistym urządzeniu.
Pliki symboli są generowane tylko dla kompilacji urządzenia. Pliki .dsym zawierają symbole debugowania dla aplikacji.
- Jeśli wcześniej zintegrowano zestaw SDK centrum aplikacji w aplikacji z włączonym modułem raportowania awarii, usługa raportowania awarii wymaga tego
.dsym
pliku dla kompilacji do wyświetlania raportów awarii możliwych do odczytania przez człowieka (symboliczne). - Jeśli wcześniej zintegrowano inny zestaw SDK na potrzeby raportowania awarii w aplikacji (na przykład zestaw SDK usługi HockeyApp), odpowiednia usługa wymaga
.dsym
pliku do wyświetlania raportów awarii możliwych do odczytania przez człowieka.