Publikowanie aplikacji systemu iOS przy użyciu wiersza polecenia
Aby opublikować aplikację z poziomu wiersza polecenia na komputerze Mac, otwórz terminal i przejdź do folderu dla projektu aplikacji wieloplatformowej aplikacji platformy .NET (.NET MAUI). dotnet publish
Uruchom polecenie , podając następujące parametry:
Parametr | Wartość |
---|---|
-f lub --framework |
Struktura docelowa, czyli net8.0-ios . |
-c lub --configuration |
Konfiguracja kompilacji, czyli Release . |
Ostrzeżenie
Próba opublikowania rozwiązania MAUI platformy .NET spowoduje dotnet publish
, że polecenie podejmie próbę opublikowania każdego projektu w rozwiązaniu osobno, co może powodować problemy podczas dodawania innych typów projektów do rozwiązania. W związku z dotnet publish
tym polecenie powinno być ograniczone do projektu aplikacji .NET MAUI.
Dodatkowe parametry kompilacji można określić w wierszu polecenia, jeśli nie są one podane w <PropertyGroup>
pliku projektu. W poniższej tabeli wymieniono niektóre typowe parametry:
Parametr | Wartość |
---|---|
-p:ApplicationTitle |
Nazwa widoczna dla użytkownika dla aplikacji. |
-p:ApplicationId |
Unikatowy identyfikator aplikacji, taki jak com.companyname.mymauiapp . |
-p:ApplicationVersion |
Wersja kompilacji identyfikującej iterację aplikacji. |
-p:ApplicationDisplayVersion |
Numer wersji aplikacji. |
-p:RuntimeIdentifier |
Identyfikator środowiska uruchomieniowego (RID) dla projektu. Użyj witryny ios-arm64 . |
-p:ArchiveOnBuild |
Wartość logiczna wskazująca, czy utworzyć archiwum aplikacji. Użyj true polecenia , aby utworzyć plik ipa. |
-p:CodesignKey |
Nazwa klucza podpisywania kodu. |
-p:CodesignProvision |
Profil aprowizacji do użycia podczas podpisywania pakietu aplikacji. |
-p:CodesignEntitlements |
Ścieżka do pliku uprawnień, który określa uprawnienia wymagane przez aplikację. |
Aby uzyskać pełną listę właściwości kompilacji, zobacz Właściwości pliku projektu.
Ważne
Wartości tych parametrów nie muszą być podane w wierszu polecenia. Można je również udostępnić w pliku projektu. Jeśli parametr jest udostępniany w wierszu polecenia i w pliku projektu, parametr wiersza polecenia ma pierwszeństwo. Aby uzyskać więcej informacji na temat udostępniania właściwości kompilacji w pliku projektu, zobacz Definiowanie właściwości kompilacji w pliku projektu.
Na przykład użyj następującego polecenia, aby skompilować i podpisać adres IPa na komputerze Mac:
dotnet publish -f net8.0-ios -c Release -p:ArchiveOnBuild=true -p:RuntimeIdentifier=ios-arm64 -p:CodesignKey="Apple Distribution: John Smith (AY2GDE9QM7)" -p:CodesignProvision="MyMauiApp"
Uwaga
W programie .NET 8 dotnet publish
polecenie jest domyślnie ustawione na konfigurację Release
. W związku z tym konfigurację kompilacji można pominąć z wiersza polecenia. Ponadto dotnet publish
polecenie jest również domyślnie ustawione na ios-arm64
RuntimeIdentifier
. W związku z tym można również pominąć element RuntimeIdentifier
z wiersza polecenia.
Publikowanie kompiluje i podpisuje aplikację, a następnie kopiuje plik ipa do folderu bin/Release/net8.0-ios/ios-arm64/publish/ . Kanał dystrybucji aplikacji jest określony w certyfikacie dystrybucji zawartym w profilu aprowizacji. Aby uzyskać informacje na temat tworzenia profilów aprowizacji dla różnych kanałów dystrybucji, zobacz Publikowanie aplikacji systemu iOS dla dystrybucji ze sklepu App Store, Publikowanie aplikacji systemu iOS na potrzeby dystrybucji ad hoc i Publikowanie aplikacji systemu iOS na potrzeby dystrybucji wewnętrznej.
Aby uzyskać więcej informacji o poleceniu dotnet publish
, zobacz dotnet publish (Publikowanie dotnet).
Definiowanie właściwości kompilacji w pliku projektu
Alternatywą do określenia parametrów kompilacji w wierszu polecenia jest określenie ich w pliku projektu w pliku <PropertyGroup>
. W poniższej tabeli wymieniono niektóre typowe właściwości kompilacji:
Właściwości | Wartość |
---|---|
<ApplicationTitle> |
Nazwa widoczna dla użytkownika dla aplikacji. |
<ApplicationId> |
Unikatowy identyfikator aplikacji, taki jak com.companyname.mymauiapp . |
<ApplicationVersion> |
Wersja kompilacji identyfikującej iterację aplikacji. |
<ApplicationDisplayVersion> |
Numer wersji aplikacji. |
<RuntimeIdentifier> |
Identyfikator środowiska uruchomieniowego (RID) dla projektu. Użyj witryny ios-arm64 . |
<ArchiveOnBuild> |
Wartość logiczna wskazująca, czy utworzyć archiwum aplikacji. Użyj true polecenia , aby utworzyć plik ipa. |
<CodesignKey> |
Nazwa klucza podpisywania kodu. |
<CodesignProvision> |
Profil aprowizacji do użycia podczas podpisywania pakietu aplikacji. |
<CodesignEntitlements> |
Ścieżka do pliku uprawnień, który określa uprawnienia wymagane przez aplikację. |
Aby uzyskać pełną listę właściwości kompilacji, zobacz Właściwości pliku projektu.
Ważne
Wartości tych właściwości kompilacji nie muszą być podane w pliku projektu. Można je również udostępnić w wierszu polecenia podczas publikowania aplikacji. Dzięki temu można pominąć określone wartości z pliku projektu.
W poniższym przykładzie przedstawiono typową grupę właściwości do tworzenia i podpisywania aplikacji systemu iOS przy użyciu profilu aprowizacji:
<PropertyGroup Condition="$(TargetFramework.Contains('-ios')) and '$(Configuration)' == 'Release'">
<CodesignKey>Apple Distribution: John Smith (AY2GDE9QM7)</CodesignKey>
<CodesignProvision>MyMauiApp</CodesignProvision>
<ArchiveOnBuild>true</ArchiveOnBuild>
</PropertyGroup>
W tym przykładzie <PropertyGroup>
dodano sprawdzanie warunku, co uniemożliwia przetworzenie ustawień, chyba że sprawdzanie warunku zostanie pomyślnie zrealizowane. Sprawdzanie warunku wyszukuje dwa elementy:
- Platforma docelowa jest ustawiona na wartość zawierającą tekst
-ios
. - Konfiguracja kompilacji jest ustawiona na
Release
wartość .
Jeśli którykolwiek z tych warunków nie powiedzie się, ustawienia nie są przetwarzane. Co ważniejsze, <CodesignKey>
ustawienia i <CodesignProvision>
nie są ustawione, uniemożliwiając podpisanie aplikacji.
Publikowanie aplikacji systemu iOS z systemu Windows
Tworzenie natywnych aplikacji systemu iOS przy użyciu interfejsu MAUI platformy .NET wymaga dostępu do narzędzi kompilacji firmy Apple, które działają tylko na komputerze Mac. W związku z tym program Visual Studio 2022 musi łączyć się z dostępnym w sieci komputerem Mac w celu kompilowania aplikacji .NET MAUI dla systemu iOS. Aby uzyskać więcej informacji, zobacz Pair to Mac for iOS development (Parowanie do komputerów Mac na potrzeby programowania w systemie iOS).
Uwaga
Przy pierwszym zalogowaniu par do komputerów Mac na hoście kompilacji komputera Mac z programu Visual Studio 2022 konfiguruje klucze SSH. W przypadku tych kluczy przyszłe logowania nie będą wymagać nazwy użytkownika ani hasła.
Aby opublikować aplikację z poziomu wiersza polecenia w systemie Windows, otwórz terminal i przejdź do folderu projektu aplikacji .NET MAUI. dotnet publish
Uruchom polecenie, podając te same parametry wiersza polecenia lub właściwości kompilacji w pliku projektu, które należy podać podczas publikowania z komputera Mac. Ponadto należy podać następujące parametry wiersza polecenia:
Parametr | Wartość |
---|---|
-p:ServerAddress |
Adres IP hosta kompilacji komputera Mac. |
-p:ServerUser |
Nazwa użytkownika używana podczas logowania się do hosta kompilacji komputera Mac. Użyj nazwy użytkownika systemu, a nie pełnej nazwy użytkownika. |
-p:ServerPassword |
Hasło nazwy użytkownika użytej do zalogowania się na hoście kompilacji komputera Mac. |
-p:TcpPort |
Port TCP używany do komunikowania się z hostem kompilacji komputera Mac, czyli 58181. |
-p:_DotNetRootRemoteDirectory |
Folder na hoście kompilacji na komputerze Mac zawierającym zestaw SDK platformy .NET. Użyj witryny /Users/{macOS username}/Library/Caches/Xamarin/XMA/SDKs/dotnet/ . |
Ważne
Wartości tych parametrów można również podać w pliku projektu jako właściwości kompilacji. Jednak wartości dla <ServerAddress>
, <ServerUser>
, <ServerPassword>
i <_DotNetRootRemoteDirectory>
są zwykle udostępniane w wierszu polecenia ze względów bezpieczeństwa.
Na przykład użyj następującego polecenia, aby skompilować i podpisać adres IPa z systemu Windows:
dotnet publish -f net8.0-ios -c Release -p:ArchiveOnBuild=true -p:RuntimeIdentifier=ios-arm64 -p:CodesignKey="Apple Distribution: John Smith (AY2GDE9QM7)" -p:CodesignProvision="MyMauiApp" -p:ServerAddress={macOS build host IP address} -p:ServerUser={macOS username} -p:ServerPassword={macOS password} -p:TcpPort=58181 -p:_DotNetRootRemoteDirectory=/Users/{macOS username}/Library/Caches/Xamarin/XMA/SDKs/dotnet/
Uwaga
W programie .NET 8 dotnet publish
polecenie jest domyślnie ustawione na konfigurację Release
. W związku z tym konfigurację kompilacji można pominąć z wiersza polecenia. Ponadto dotnet publish
polecenie jest również domyślnie ustawione na ios-arm64
RuntimeIdentifier
. W związku z tym można również pominąć element RuntimeIdentifier
z wiersza polecenia.
Uwaga
ServerPassword
Jeśli parametr zostanie pominięty z wywołania kompilacji wiersza polecenia, pair to Mac próbuje zalogować się na hoście kompilacji dla komputerów Mac przy użyciu zapisanych kluczy SSH.
Publikowanie kompilacji i podpisuje aplikację, a następnie kopiuje plik ipa do folderu bin\Release\net8.0-ios\ios-arm64\publish na komputerze z systemem Windows. Kanał dystrybucji aplikacji jest określony w certyfikacie dystrybucji zawartym w profilu aprowizacji. Aby uzyskać informacje na temat tworzenia profilów aprowizacji dystrybucji dla różnych kanałów dystrybucji, zobacz Publikowanie aplikacji systemu iOS dla dystrybucji ze sklepu App Store, Publikowanie aplikacji systemu iOS dla dystrybucji ad hoc i Publikowanie aplikacji systemu iOS dla dystrybucji w domu
Podczas procesu publikowania może być konieczne zezwolenie codesign
na uruchamianie na sparowanym komputerze Mac:
Rozwiązywanie problemów z kompilacją zdalną
Jeśli parametr RuntimeIdentifier
nie zostanie określony podczas zdalnego kompilowania z poziomu wiersza polecenia w systemie Windows, zostanie użyta architektura maszyny z systemem Windows. Dzieje się tak, ponieważ RuntimeIdentifier
należy ustawić element na wczesnym etapie procesu kompilacji, zanim kompilacja będzie mogła nawiązać połączenie z komputerem Mac w celu uzyskania jego architektury.
Jeśli element RuntimeIdentifier
nie zostanie określony podczas zdalnego kompilowania przy użyciu programu Visual Studio w systemie Windows, środowisko IDE wykryje architekturę zdalnego komputera Mac i odpowiednio je ustawi. Zastąpienie wartości domyślnej można osiągnąć, ustawiając właściwość kompilacji $(ForceSimulatorX64ArchitectureInIDE)
:
<PropertyGroup Condition="'$(Configuration)' == 'Release' And '$(TargetFramework)' == 'net8.0-ios'">
<ForceSimulatorX64ArchitectureInIDE>true</ForceSimulatorX64ArchitectureInIDE>
</PropertyGroup>
Dystrybuowanie aplikacji
Plik ipa można dystrybuować przy użyciu jednego z następujących podejść:
- Aplikacje ad hoc można rozpowszechniać przy użyciu programu Apple Configurator. Aby uzyskać więcej informacji, zobacz Podręcznik użytkownika programu Apple Configurator w witrynie support.apple.com. |
- Aplikacje ze sklepu App Store można przekazywać do sklepu App Store za pośrednictwem aplikacji, takiej jak Transporter. Będzie to wymagało utworzenia rekordu dla aplikacji w programie App Store Connect i utworzenia hasła specyficznego dla aplikacji. Aby uzyskać więcej informacji, zobacz Tworzenie rekordu aplikacji na developer.apple.com i Logowanie do aplikacji przy użyciu identyfikatora Apple ID przy użyciu haseł specyficznych dla aplikacji w support.apple.com.
- Aplikacje wewnętrzne mogą być dystrybuowane za pośrednictwem bezpiecznej witryny internetowej lub za pośrednictwem usługi Mobile Zarządzanie urządzeniami (MDM). Oba te podejścia wymagają przygotowania aplikacji do dystrybucji, która obejmuje przygotowanie manifestu. Aby uzyskać więcej informacji, zobacz Distribute proprietary in-house apps to Apple devices on support.apple.com (Rozpowszechnianie zastrzeżonych aplikacji w firmie Apple na urządzeniach firmy Apple na support.apple.com).