Komut satırını kullanarak iOS uygulaması yayımlama

Uygulamanızı Mac'te komut satırından yayımlamak için bir terminal açın ve .NET Çok Platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI) uygulama projenizin klasörüne gidin. dotnet publish Komutunu çalıştırarak aşağıdaki parametreleri sağlayın:

Parametre Değer
-f veya --framework Hedef çerçeve olan net8.0-ios.
-c veya --configuration Derleme yapılandırmasıdır Release.

Uyarı

.NET MAUI çözümünü yayımlamaya çalışmak, komutun dotnet publish çözümdeki her projeyi tek tek yayımlamaya çalışmasıyla sonuçlanır ve bu da çözümünüze başka proje türleri eklediğinizde sorunlara neden olabilir. Bu nedenle, komutun dotnet publish kapsamı .NET MAUI uygulama projeniz olarak belirlenmiş olmalıdır.

Proje dosyanızda bir <PropertyGroup> içinde sağlanmamışsa, komut satırında ek derleme parametreleri belirtilebilir. Aşağıdaki tabloda yaygın parametrelerden bazıları listelemektedir:

Parametre Değer
-p:ApplicationTitle Uygulamanın kullanıcı tarafından görünen adı.
-p:ApplicationId Uygulamanın benzersiz tanımlayıcısı, örneğin com.companyname.mymauiapp.
-p:ApplicationVersion Uygulamanın yinelemesini tanımlayan derleme sürümü.
-p:ApplicationDisplayVersion Uygulamanın sürüm numarası.
-p:RuntimeIdentifier Projenin çalışma zamanı tanımlayıcısı (RID). ios-arm64 adresini kullanın.
-p:ArchiveOnBuild Uygulama arşivinin üretilip üretmeyeceğini gösteren boole değeri. .ipa üretmek için kullanıntrue.
-p:CodesignKey Kod imzalama anahtarının adı.
-p:CodesignProvision Uygulama paketini imzalarken kullanılacak sağlama profili.
-p:CodesignEntitlements Uygulamanın gerektirdiği yetkilendirmeleri belirten yetkilendirmeler dosyasının yolu.

Derleme özelliklerinin tam listesi için bkz . Proje dosyası özellikleri.

Önemli

Bu parametrelerin değerlerinin komut satırında sağlanması gerekmez. Bunlar proje dosyasında da sağlanabilir. Komut satırında ve proje dosyasında bir parametre sağlandığında, komut satırı parametresi önceliklidir. Proje dosyanızda derleme özellikleri sağlama hakkında daha fazla bilgi için bkz . Proje dosyanızda derleme özelliklerini tanımlama.

Örneğin, Mac'te .ipa oluşturmak ve imzalamak için aşağıdaki komutu kullanın:

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"

Dekont

.NET 8'de dotnet publish komut varsayılan olarak yapılandırmaya sahiptir Release . Bu nedenle, derleme yapılandırması komut satırından atlanabilir. Buna ek olarak, dotnet publish komutu varsayılan olarak olarak da bulunur ios-arm64RuntimeIdentifier. Bu nedenle, RuntimeIdentifier komut satırından atlanabilir.

Yayımlama, uygulamayı derleyip imzalar ve ardından .ipadosyasını bin/Release/net8.0-ios/ios-arm64/publish/ klasörüne kopyalar. Uygulamanın dağıtım kanalı, sağlama profilinde yer alan dağıtım sertifikasında belirtilir. Farklı dağıtım kanalları için sağlama profilleri oluşturma hakkında bilgi için bkz. App Store dağıtımı için iOS uygulaması yayımlama, Geçici dağıtım için iOS uygulaması yayımlama ve Şirket içi dağıtım için iOS uygulaması yayımlama.

Komut hakkında dotnet publish daha fazla bilgi için bkz . dotnet publish.

Çalışma zamanı tanımlayıcıları

RuntimeIdentifier Parametre komut satırında veya proje dosyasında belirtilmezse, derleme işlemi varsayılan olarak bir simülatör çalışma zamanı tanımlayıcısı olarak ayarlanır. Ayrıca, komut satırına çalışma zamanı tanımlayıcısının geçirilmesi, proje dosyasında birden çok hedef çerçeve varsa derlemenin geri yüklenememesine neden olabilir. Daha fazla bilgi için bkz . Proje dosyasında birden çok çerçeve varsa hem -f hem de -r to dotnet derlemesinin geri yüklenememesi belirtiliyor.

Bu sorunların bir çözümü, proje dosyanıza aşağıdakileri <PropertyGroup> eklemektir:

<PropertyGroup Condition="'$(IsPublishing)'  == 'true' And '$(TargetFramework)' == 'net7.0-ios'">
    <RuntimeIdentifier>ios-arm64</RuntimeIdentifier>
</PropertyGroup>

Ardından, uygulamanızı yayımlamak için aşağıdaki komutu kullanın:

dotnet publish -f net7.0-ios -p:IsPublishing=true ...

Bu sorunların alternatif bir çözümü, proje dosyanıza aşağıdakileri <PropertyGroup> eklemektir:

<PropertyGroup Condition="'$(Configuration)' == 'Release' And '$(TargetFramework)' == 'net7.0-ios'">
    <RuntimeIdentifier>ios-arm64</RuntimeIdentifier>
</PropertyGroup>

Ardından, uygulamanızı yayımlamak için aşağıdaki komutu kullanın:

dotnet publish -f net7.0-ios -c Release ...

Proje dosyanızda derleme özelliklerini tanımlama

Komut satırında derleme parametrelerini belirtmenin bir alternatifi, bunları içindeki <PropertyGroup>proje dosyanızda belirtmektir. Aşağıdaki tabloda, yaygın derleme özelliklerinden bazıları listelenir:

Özellik Değer
<ApplicationTitle> Uygulamanın kullanıcı tarafından görünen adı.
<ApplicationId> Uygulamanın benzersiz tanımlayıcısı, örneğin com.companyname.mymauiapp.
<ApplicationVersion> Uygulamanın yinelemesini tanımlayan derleme sürümü.
<ApplicationDisplayVersion> Uygulamanın sürüm numarası.
<RuntimeIdentifier> Projenin çalışma zamanı tanımlayıcısı (RID). ios-arm64 adresini kullanın.
<ArchiveOnBuild> Uygulama arşivinin üretilip üretmeyeceğini gösteren boole değeri. .ipa üretmek için kullanıntrue.
<CodesignKey> Kod imzalama anahtarının adı.
<CodesignProvision> Uygulama paketini imzalarken kullanılacak sağlama profili.
<CodesignEntitlements> Uygulamanın gerektirdiği yetkilendirmeleri belirten yetkilendirmeler dosyasının yolu.

Derleme özelliklerinin tam listesi için bkz . Proje dosyası özellikleri.

Önemli

Bu derleme özelliklerine ilişkin değerlerin proje dosyasında sağlanması gerekmez. Bunlar, uygulamayı yayımladığınızda komut satırında da sağlanabilir. Bu, proje dosyanızdan belirli değerleri atlamanızı sağlar.

Aşağıdaki örnekte, iOS uygulamanızı oluşturma ve sağlama profiliyle imzalamaya yönelik tipik bir özellik grubu gösterilmektedir:

<PropertyGroup Condition="$(TargetFramework.Contains('-ios')) and '$(Configuration)' == 'Release'">
  <RuntimeIdentifier>ios-arm64</RuntimeIdentifier> <!-- Required in .NET 7 but not in .NET 8 -->
  <CodesignKey>Apple Distribution: John Smith (AY2GDE9QM7)</CodesignKey>
  <CodesignProvision>MyMauiApp</CodesignProvision>
  <ArchiveOnBuild>true</ArchiveOnBuild>
</PropertyGroup>

Bu örnek <PropertyGroup> , koşul denetimi geçmediği sürece ayarların işlenmesini engelleyen bir koşul denetimi ekler. Koşul denetimi iki öğeyi arar:

  1. Hedef çerçeve, metnini -iosiçeren bir şeye ayarlanır.
  2. Derleme yapılandırması olarak Releaseayarlanır.

Bu koşullardan biri başarısız olursa, ayarlar işlenmez. Daha da önemlisi ve <CodesignKey><CodesignProvision> ayarları ayarlanmamıştır ve uygulamanın imzalanmasını engeller.

Windows'tan iOS uygulaması yayımlama

.NET MAUI kullanarak yerel iOS uygulamaları oluşturmak için Apple'ın yalnızca Mac üzerinde çalışan derleme araçlarına erişim gerekir. Bu nedenle, Visual Studio 2022'nin .NET MAUI iOS uygulamaları oluşturmak için ağdan erişilebilir bir Mac'e bağlanması gerekir. Daha fazla bilgi için bkz . iOS geliştirmesi için Mac ile eşleştirme.

Dekont

Mac ile Eşleştir, Visual Studio 2022'den bir Mac derleme konağından ilk kez oturum açtığında SSH anahtarlarını ayarlar. Bu anahtarlarla, gelecekteki oturum açma işlemleri için kullanıcı adı veya parola gerekmez.

Uygulamanızı Windows'da komut satırından yayımlamak için bir terminal açın ve .NET MAUI uygulama projenizin klasörüne gidin. Mac'ten dotnet publish yayımlarken sağladığınız komut satırı parametrelerini veya proje dosyanızda derleme özelliklerini sağlayarak komutunu çalıştırın. Ayrıca, aşağıdaki komut satırı parametrelerini sağlamanız gerekir:

Parametre Değer
-p:ServerAddress Mac derleme ana bilgisayarınızın IP adresi.
-p:ServerUser Mac derleme ana bilgisayarınızda oturum açarken kullanılacak kullanıcı adı. Tam adınız yerine sistem kullanıcı adınızı kullanın.
-p:ServerPassword Mac derleme ana bilgisayarınızda oturum açmak için kullanılan kullanıcı adının parolası.
-p:TcpPort Mac derleme konağınızla iletişim kurmak için kullanılacak TCP bağlantı noktası( 58181).
-p:_DotNetRootRemoteDirectory Mac derleme konağınızdaki .NET SDK'sını içeren klasör. /Users/{macOS username}/Library/Caches/Xamarin/XMA/SDKs/dotnet/ adresini kullanın.

Önemli

Bu parametrelerin değerleri proje dosyasında derleme özellikleri olarak da sağlanabilir. Ancak, , <ServerUser>, <ServerPassword>ve <_DotNetRootRemoteDirectory> değerleri <ServerAddress>genellikle güvenlik nedeniyle komut satırında sağlanır.

Örneğin, Windows'tan bir .ipa oluşturmak ve imzalamak için aşağıdaki komutu kullanın:

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/

Dekont

.NET 8'de dotnet publish komut varsayılan olarak yapılandırmaya sahiptir Release . Bu nedenle, derleme yapılandırması komut satırından atlanabilir. Buna ek olarak, dotnet publish komutu varsayılan olarak olarak da bulunur ios-arm64RuntimeIdentifier. Bu nedenle, RuntimeIdentifier komut satırından atlanabilir.

Dekont

ServerPassword Parametre bir komut satırı derleme çağrısından atlanırsa, Mac ile Eşleştir, kaydedilmiş SSH anahtarlarını kullanarak Mac derleme konağından oturum açmayı dener.

Yayımlama, uygulamayı derleyip imzalar ve ardından .ipadosyasını Windows makinenizdeki bin\Release\net8.0-ios\ios-arm64\publish klasörüne kopyalar. Uygulamanın dağıtım kanalı, sağlama profilinde yer alan dağıtım sertifikasında belirtilir. Farklı dağıtım kanalları için dağıtım sağlama profilleri oluşturma hakkında bilgi için bkz. App Store dağıtımı için iOS uygulaması yayımlama, Geçici dağıtım için iOS uygulaması yayımlama ve Şirket içi dağıtım için iOS uygulaması yayımlama

Yayımlama işlemi sırasında, eşleştirilmiş Mac'inizde çalıştırılmasına izin codesign vermek gerekebilir:

Allow codesign to sign your app on your paired Mac.

Uzak derleme sorunlarını giderme

Windows'da komut satırından uzaktan oluştururken bir RuntimeIdentifier belirtilmezse, Windows makinesinin mimarisi kullanılır. Bunun nedeni, derlemenin mimarisini RuntimeIdentifier türetmek için Mac'e bağlanabilmesi için derleme işleminin erken bir aşamasında ayarlanması gerektiğinden oluşur.

Windows üzerinde Visual Studio'yu uzaktan oluştururken bir RuntimeIdentifier belirtilmezse, IDE uzak Mac'in mimarisini algılar ve uygun şekilde ayarlar. Derleme özelliği ayarlanarak varsayılan değer $(ForceSimulatorX64ArchitectureInIDE) geçersiz kılınabilir:

<PropertyGroup Condition="'$(Configuration)' == 'Release' And '$(TargetFramework)' == 'net8.0-ios'">
    <ForceSimulatorX64ArchitectureInIDE>true</ForceSimulatorX64ArchitectureInIDE>
</PropertyGroup>

Uygulamayı dağıtma

.ipa dosyası aşağıdaki yaklaşımlardan biriyle dağıtılabilir:

  • Geçici uygulamalar Apple Configurator kullanılarak dağıtılabilir. Daha fazla bilgi için support.apple.com'da Apple Configurator kullanıcı kılavuzuna bakın. |
  • App Store uygulamaları, Transporter gibi bir uygulama aracılığıyla App Store'a yüklenebilir. Bunun için App Store Bağlan'nde uygulama için bir kayıt oluşturmanız ve uygulamaya özgü bir parola oluşturmanız gerekir. Daha fazla bilgi için bkz . developer.apple.com üzerinde uygulama kaydı oluşturma ve support.apple.com'de uygulamaya özgü parolaları kullanarak Apple kimliğinizle uygulamalarda oturum açma.
  • Şirket içi uygulamalar güvenli bir web sitesi veya Mobil Cihaz Yönetimi (MDM) aracılığıyla dağıtılabilir. Bu yaklaşımların her ikisi de uygulamanın bir bildirimin hazırlanmasını içeren dağıtıma hazırlanmasını gerektirir. Daha fazla bilgi için bkz . support.apple.com'da apple cihazlarına özel şirket içi uygulamaları dağıtma.