入口
在本文中,我想谈论本地发布毛伊岛的应用程序。我将从非窗口操作系统中展示,我们将为不同的平台发布。我将在每个平台上进行详细介绍,我们将为他们找出陷阱。我将在Mac OS上进行演示,并请您考虑到它。让我们走。
发现项目
首先,通过模板创建一个简单的毛伊岛项目。我们将以它为示例出版。
如果您可以找到.proj
文件并进行编辑,则可以看到支持的平台。
<TargetFrameworks>net7.0-android;net7.0-ios;net7.0-maccatalyst</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net7.0-windows10.0.19041.0</TargetFrameworks>
<!-- Uncomment to also build the tizen app. You will need to install tizen by following this: https://github.com/Samsung/Tizen.NET -->
<!-- <TargetFrameworks>$(TargetFrameworks);net7.0-tizen</TargetFrameworks> -->
您可能已经注意到目标框架分为三组。第一组net7.0-android, net7.0-ios, net7.0-maccatalyst
。第二组net7.0-windows10.0.19041.0
。最后,对第三组Net7.0-tizen
进行了评论。稍后我将解释原因。
第一组
默认情况下,您只能为Android,iOS和Mac OS运行应用程序。但是,对于Android,您需要下载SDK和所需的OS版本。
安卓
对于Android,如前所述,它需要SDK。如果您已经拥有它,那么让我们转到解决方案的命令行。对于发布,您不需要其他任何内容,只能运行此命令:
dotnet publish -f net7.0-android -c Release
框架名称与项目文件中显示的名称相同。
如果您可以进入项目中的发布文件夹,则会看到生成的.apk
文件。
ios
使用iOS,一切都更加问题。 Apple Inc不允许没有开发人员证书的发布申请。否则,您会遇到错误。但是无论如何,我将展示出版的命令。它与Android有点不同。您需要在参数中设置架构。
dotnet publish -f net7.0-ios -c Release -r ios-arm64
,如果您没有证书,您会遇到错误:
/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk/16.4.7089/tools/msbuild/iOS/Xamarin.Shared.targets(1714,3): error : No valid iOS code signing keys found in keychain. You need to request a codesigning certificate from https://developer.apple.com. [/Users/serhiikorol/RiderProjects/MauiApp1/MauiApp1/MauiApp1.csproj::TargetFramework=net7.0-ios]
/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk/16.4.7089/tools/msbuild/iOS/Xamarin.Shared.targets(1714,3): error : [/Users/serhiikorol/RiderProjects/MauiApp1/MauiApp1/MauiApp1.csproj::TargetFramework=net7.0-ios]
MAC我们
最简单的操作系统是Mac OS。您不需要安装其他SDK,并且您不需要任何证书,只需放置此命令:
dotnet publish -f net7.0-maccatalyst -c Release
最后您将获得.pkg
文件。
如果您运行它,您将看到安装窗口。
第二组
将Windows平台删除到单独的组。它需要,因为您只能从Windows OS发布Windows应用程序。此条件检查当前的OS $([MSBuild]::IsOSPlatform('windows'))
。当然,您可以从Mac OS运行它:
dotnet publish -f net7.0-windows10.0.19041.0 -c Release -p:WindowsPackageType=None
确保您会遇到一个没有窗口的错误:
/usr/local/share/dotnet/sdk/7.0.203/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets(90,5): error NETSDK1100: To build a project targeting Windows on this operating system, set the EnableWindowsTargeting property to true. [/Users/serhiikorol/RiderProjects/MauiApp1/MauiApp1/MauiApp1.csproj::TargetFramework=net7.0-windows10.0.19041.0]
顺便说一句,您可能已经注意到我设置了p:WindowsPackageType=None
参数。如果要生成.exe
文件,它需要。
第三组
tizen也被搬到了一个单独的小组中,甚至评论了你为什么要问我。由于不支持Tizen。您需要安装其他SDK。
第一步是下载此link的Tizen Studio。它支持Windows,Linux和Mac OS。安装IDE时,运行软件包管理器并为所选平台安装软件包。我选择了最新的移动平台。
第二步是您需要安装工作负载软件包:
#Mac OS and linux
curl -sSL https://raw.githubusercontent.com/Samsung/Tizen.NET/main/workload/scripts/workload-install.sh | sudo bash
#windows
PS D:\workspace> Invoke-WebRequest 'https://raw.githubusercontent.com/Samsung/Tizen.NET/main/workload/scripts/workload-install.ps1' -OutFile 'workload-install.ps1';
这样做后,您可以取消tizen目标框架。
<TargetFrameworks>$(TargetFrameworks);net7.0-tizen</TargetFrameworks>
接下来放置出版命令:
dotnet publish -f net7.0-tizen -c Release
几秒钟后,是的,发布非常快,您将获得一个.tpk
文件。与此处生成的默认证书不同。
结论
MAUI允许您为5个平台开发应用程序,并且只有一个应用程序。但是,如果您使用非Windows平台,您将面临一些对Windows平台的限制。而且,我想说的是Tizen,您只能使用Visual Studio,骑手不支持此平台。
感谢您阅读,订阅,放赞和愉快的编码。