如何在 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/