Xamarin.forms 如何使用Xamarin表单生成Google Play控制台上载密钥?

Xamarin.forms 如何使用Xamarin表单生成Google Play控制台上载密钥?,xamarin.forms,apk,visual-studio-2019,google-play-console,Xamarin.forms,Apk,Visual Studio 2019,Google Play Console,摘要 我使用Xamarin表单和Visual Studio 2019创建了一个应用程序 文件夹/文件结构: [d] App |-[d] App | |-[d] App | | |- ... | |-[d] App.Android | | |- ... | |-[d] App.iOS | |- ... |-[f] App.sln 我终于摆脱了所有的错误和警告,并试图上传APK到谷歌游戏控制台。我找到了多个*.apk文件,谷歌搜索说我必须上传一个名字中有“-签

摘要

我使用Xamarin表单和Visual Studio 2019创建了一个应用程序

文件夹/文件结构:

[d] App
 |-[d] App
 |  |-[d] App
 |  |  |- ...
 |  |-[d] App.Android
 |  |  |- ...
 |  |-[d] App.iOS
 |     |- ...
 |-[f] App.sln
我终于摆脱了所有的错误和警告,并试图上传APK到谷歌游戏控制台。我找到了多个*.apk文件,谷歌搜索说我必须上传一个名字中有“-签名”的文件。它位于
App/App/App.Android/bin/Debug
中。上传失败后,我收到以下消息:

上传失败

您上载了可调试的APK或Android应用程序包。出于安全原因,您需要先禁用调试,然后才能在Google Play中发布

您上载了在调试模式下签名的APK或Android应用程序包。您需要在发布模式下签署APK或Android应用程序包

我所做的

我找到了一个,上面说我应该将我的项目从调试模式更改为发布模式

我发现,如果我在(VS)解决方案浏览器中右键单击App.Android并选择属性,我可以选择左侧的Android选项选项卡,然后选择“配置:发布”。它不起作用。但左边还有一个Android软件包签名选项卡,其中未选中“使用以下密钥库详细信息对.APK文件进行签名”复选框

在深入研究后者之前,我还发现在VisualStudio最上面的菜单中,我可以打开“Build”并选择“Configuration Manager”,在这里我可以将“Active solution Configuration”更改为“Release”,从而将所有三个项目都更改为“Release”。我这么做了,但还是不起作用。(未创建新的*.apk文件)

在上面引用的消息的最后一个链接中,我找到了关于如何创建所需密钥的说明

  • 在菜单栏中,单击生成>生成>生成签名包/APK
  • 在生成签名捆绑包或APK对话框中,选择Android应用捆绑包或APK并单击下一步
  • 在密钥存储路径字段下方,单击新建。 {等等……}

  • 但这些仅适用于Android Studio,不适用于Visual Studio。使用Visual Studio有什么方法可以做到这一点吗?

    Xamarin可能会让新用户感到恼火,特别是如果您在不知不觉中更改了默认设置。默认模板中的版本配置会创建一个可调试的APK,所以这也没有什么帮助

    让我们按照以下步骤发布应用程序,并从发布APK禁用调试:

  • 确保选择Android,在主窗口中释放配置,如图所示。

  • 然后双击Android项目以打开项目选项并导航到编译器。确保对于选择的“Release”配置,您将调试信息更改为“None”。不要忘记按OK并保存更改

  • 全部重建

  • 右键单击Android项目并选择Archive for Publishing

  • 存档后,继续像以前一样进行签名和分发


  • 请务必阅读评论以了解更多详细信息

    @s3c你可以分享你的答案并标记它。这将使答案搜索更容易,并有利于社区成员。谢谢~我的Visual Studio看起来完全不同(Win10上的VS19C),但最好的线索是右键单击App.Android和Archive。在我的例子中,上传签名是由谷歌管理的,上传创建的应用程序就像一个魔咒。如果有人像我一样陷入困境,我还发现了两件事。要在发布后编辑代码,必须将其设置回调试(生成>配置管理器)。要再次存档,您需要设置版本号并将其设置为Release。KudosHey s3c,我很高兴你找到了答案。我编辑了答案,以便人们也能看到你的评论!:)