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-arm64
RuntimeIdentifier
. 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:
- Hedef çerçeve, metnini
-ios
içeren bir şeye ayarlanır. - Derleme yapılandırması olarak
Release
ayarlanı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-arm64
RuntimeIdentifier
. 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:
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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin