Udostępnij za pośrednictwem


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:

  1. Platforma docelowa jest ustawiona na wartość zawierającą tekst -ios.
  2. Konfiguracja kompilacji jest ustawiona na Releasewartość .

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:

Zezwól na codesign, aby podpisać aplikację 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ść: