关于.Net Maui中应用程序的本地发布。
#macos #android #maui #tizen

入口

在本文中,我想谈论本地发布毛伊岛的应用程序。我将从非窗口操作系统中展示,我们将为不同的平台发布。我将在每个平台上进行详细介绍,我们将为他们找出陷阱。我将在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文件。

Android

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文件。

Mac

如果您运行它,您将看到安装窗口。

install

第二组

将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时,运行软件包管理器并为所选平台安装软件包。我选择了最新的移动平台。

packages

第二步是您需要安装工作负载软件包:

#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文件。与此处生成的默认证书不同。

tizen

结论

MAUI允许您为5个平台开发应用程序,并且只有一个应用程序。但是,如果您使用非Windows平台,您将面临一些对Windows平台的限制。而且,我想说的是Tizen,您只能使用Visual Studio,骑手不支持此平台。

感谢您阅读,订阅,放赞和愉快的编码。

Buy Me A Beer