c# - .NET 6 发布 Android 应用程序

标签 c# android .net-6.0 visual-studio-2022 maui

如何在 VS2022 中发布 Android 应用?我从“Android 应用程序(预览)”模板开始。一切在模拟器中运行良好。单击项目上的“发布”时,只会创建一个 *.nupgk。单击“查看存档...”时,会显示解决方案,但唯一的文本是“没有可用的存档版本”,而且我没有看到任何创建存档的选项。

编辑:发布是指创建可以安装的 *.apk。我不需要发布到 Google Play 或任何其他商店。

最佳答案

更新

我现在已经为每个平台创建了指南,其中包含哪些内容有效、哪些无效以及如何继续在 .NET MAUI 存储库上发布。在这里找到链接:

原始答案:

正如评论中所指出的,我一直在玩这个,我总是完成所有的事情并创建一些内容,但还没有完全完成。

第一;这在当时或从 UI 中写入是不可能的。当然,这将在 .NET MAUI 发布之前进行,但目前您需要命令行,特别是 dotnetpublish

您已经发现此命令通常用于创建 nupkg,但为了统一所有内容,它现在也将用于发布您的 .NET MAUI 应用程序。

问题是我们现在有一个可用于各种目标的单个项目:iOS、Android、Windows、MacO,那么我们如何知道 dotnetpublish 应该发布什么?

您需要指定目标框架。对于 Android,我们会遇到这样的情况:

dotnet 发布 -f:net6.0-android -c:Release

这应该会生成一个您可以使用的 APK。我还不确定的一件事是如何将 keystore 文件添加到组合中并实际对其进行正确签名以便在 Play 商店中使用。

为了让事情更完整,对于 iOS,命令和过程有点复杂。来自 Windows 的命令看起来更像是这样:

dotnet 发布 -f:net6.0-ios -c:Release/p:ServerAddress=192.168.1.77/p:ServerUser=jfversluis/p:TcpPort=58181/p:ArchiveOnBuild=true/p:_DotNetRootRemoteDirectory =/Users/{您的用户名}/Library/Caches/Xamarin/XMA/SDKs/dotnet/

有几个参数仅在从 Windows 构建时才需要: /p:ServerAddress={Mac 构建主机 IP 地址}/p:ServerUser={Mac 用户名}/p:TcpPort=58181 如果您从未连接到此构建主机,您还应该添加 /p:ServerPassword={您的密码}。但是,您只需进入 Visual Studio,从那里连接到构建主机一次,您就会知道连接正常并且省略密码参数。有关 Mac 构建主机功能的更多信息是 here .

但我们还没有到那一步!在 csproj 文件中,我们需要添加一小部分来添加 RuntimeIdentifier 以及一些使 IPA 文件签名正常工作的内容。

<PropertyGroup Condition="$(TargetFramework.Contains('-ios')) and '$(Configuration)' == 'Release'">
    <RuntimeIdentifier>ios-arm64</RuntimeIdentifier>
    <CodesignEntitlement>Entitlements.plist</CodesignEntitlement>
    <CodesignKey>Apple Development: Gerald Versluis (BLABLAID)</CodesignKey>
    <CodesignProvision>VS: WildCard Development</CodesignProvision>
</PropertyGroup>

Entitlements.plist 文件还不是默认模板的一部分,因此只需从 Xamarin.Forms 项目中获取一个即可,它可以是默认模板,当然也可以在以下情况下配置它:你确实需要它,但无论怎样你似乎都需要它。

您需要从 Apple 证书中获取的代码签名值。这也是我还不太清楚的部分。有关代码签名和配置的更多信息是 here ,这可能会帮助您走得更远。

对于 iOS 命令,还可以查看背景故事 here 。如此链接所示,您可能还需要从 Platforms/iOS/Resources 文件夹中删除 LaunchScreen.xib 文件,并可能包含 /p:EnableAssemblyILStripping =false 标记到发布命令以解决一些错误。两者均已修复但尚未发布。

免责声明:我尚未向商店发布任何内容,因此这里可能存在空白,请随时根据您的发现添加一些评论。

关于c# - .NET 6 发布 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70437037/

相关文章:

android - 开发者如何在 Play 商店中更新他们的应用程序? [安卓]

android - "W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@eb23963"是什么意思?

asp.net-core - 表单字段是必需的,即使未如此定义

c# - 尝试将经度和纬度转换为地址名称,但它跳过了太多帧

android - 如何在android中正确下载带有java代码的zip文件?

c# - 使用两列的 Linq 查询分组数据表

c# - 自定义授权过滤最小 API .Net 6

c# - EF Core 日期时间偏移

C# 使用 StreamReader 和 DownloadFileAsync 从文件中读取行

c# - Swagger 的服务堆栈不起作用