如何使用Play应用签名和应用程序包在Google Play上设置和部署Unity应用程序?

5

使用应用程序包和Play应用程序签名是Google目前推荐在Google Play上部署新应用的方式。从2021年8月开始,新应用将被强制使用这些格式。

我该如何在Unity中设置此项功能,并如何在Google Play中配置应用程序?

4个回答

20

我还没有成功将2019.4应用程序捆绑包上传到Play控制台,所以在开始之前升级到2020.3 LTS可能是个好主意(因为这对我最后起作用了)。

配置Google Play应用签名

首先在Play控制台中创建一个新应用程序,为其命名并接受条款等。

然后,在左侧菜单上单击内部测试,并创建一个新的内部版本。

在第一个问题中,单击更改应用签名密钥,然后选择使用其他密钥和第三个选项,在其中可以上传您现有的密钥(和添加上传密钥的可选步骤)到Google Play。

不要按照这些说明操作

现在,请不要仅按照Google Play上列出的说明进行操作,因为您最终会得到一个Unity不知道如何处理的上传密钥存储。

相反,我们将使用Unity创建两个密钥存储和两个密钥。 第一个是应用程序签名密钥,您只需要在上传到Google Play时查看它一次,然后Google会负责使用它来对您的应用程序进行最终签名,之后您将上传您的应用程序捆绑包。

转到Player settingsPublishing SettingsKeystore ManagerCreate new in dedicated location

在Unity中打开密钥库管理器

您不需要填写所有内容。只需填写密码、密钥别名和密钥密码即可。无论您如何称呼密钥,都没有关系。现在不要立即配置Unity使用此密钥(我们很快就会为Unity创建另一个密钥和密钥存储)。

创建应用程序密钥和密钥存储

按照Google Play上的1-3步骤上传此新密钥,使用pepk工具。

然后,您需要创建一个上传密钥和密钥存储。 Unity将使用此密钥对您的应用程序捆绑包进行签名。同样,请勿使用Google Play上的说明创建此密钥,而是使用Unity UI创建另一个密钥存储,以便与Unity兼容。

密码和别名可以是您想要的任何内容。我将我的密钥命名为uploadkey,但请确保将密钥库和密码存放在安全的地方,以后会用到它们,否则您将不得不创建新密钥并联系Google支持以重新设置它。

提示时,单击“是”以配置项目使用此新密钥。

使用新的上传密钥签署您的项目

当您创建密钥存储和密钥并将其公共密钥导出到.pem格式时......

keytool -export -rfc -keystore upload.keystore -alias uploadkey -file upload_certificate.pem

...然后将其上传至Google Play。

在Play控制台中单击更新,然后单击继续

现在,Play商店应该已经准备好接受您的.aab文件了。

配置Unity

希望您的项目现在已设置为使用刚创建的上传密钥签名。

通过前往Player SettingsOther Settings覆盖默认包名称自行设置软件包名称。仅使用小写字符输入适当的内容,默认软件包名称具有大写字符,这可能会引起问题。您无法在以后更改此设置,否则您必须创建一个新的Play商店条目,因此请确保它是客户可接受的内容,即com.yourcompany.gamename

package name

还建议您在播放器设置中启用64位版本构建,否则Google Play稍后将会出现问题。将Scripting Backend切换到IL2CPP,然后勾选ARM64

enable 64-bit builds

在构建设置中勾选Build App Bundle

build app bundle in build settings

单击Build并构建您的.aab文件。

然后将其上传至Google Play控制台:

upload to google play

如果您很幸运,一切都顺利进行,并且您可以点击保存并准备开始测试您的应用程序。

如果没有,则可能会收到有帮助的错误消息,在这种情况下,请遵循它们,如果不是非常描述性的(例如“无法上传。再试一次。”),则尝试暂时上传.apk,因为这有时会提供更好的错误消息,然后在解决问题后切换回.aab。


请详细说明非小写包名可能带来的问题。 - undefined

1

对于所有在最后一步遇到困难的优秀人才!- 请阅读以下内容!

当您创建了密钥库并将其公钥导出为.pem格式时...

keytool -export -rfc -keystore upload.keystore -alias uploadkey -file upload_certificate.pem

... 并将其上传到 Google Play。

引用

在 Play Console 中单击“更新”,然后单击“继续”。

这个部分让我疯狂地想弄明白你到底是什么意思。我知道这是因为我完全不懂,但教程的其他部分确实很棒!

所以,让我为那些像我一样的新手澄清一下,在最后一步到达时可能会失去方向感并且不知道该怎么做。

在教程的这一点上:

引用 并将其上传到 Google Play。在 Play Console 中单击“更新”,然后单击“继续”。

这里是你需要做的事情。

  • 如果您已经上传了在Unity中创建的第一个签名密钥(而不是上传密钥),那么只需返回到内部测试页面并刷新即可。

  • 单击更改应用程序签名密钥,然后再次选择第三个选项:“从Java密钥库导出并上传密钥”。

  • 单击上传生成的ZIP,并上传在第一步创建的.zip文件....我将其命名为output.zip

  • 步骤4中,您将看到一个名为“显示说明”的链接-单击该链接并上传在最后一步生成的公共上传证书。 文件以.pem格式结尾

  • 单击保存,它应该可以工作了。

现在下一步让我感到困惑。 我不知道该怎么做。 该项目已准备好接受.aab文件,但现在不要这样做!

向Mr Impatient本人(也就是我)学习,阅读本教程的其余部分。将文件名更改为全小写是一个好习惯,以避免后来出现CamelCaseFileNames问题。

最后

您可能会收到一个错误消息,说目标Android API太低。只需转到UNITY PROJECT> FILE> BUILD SETTINGS> PLAYER SETTINGS> OTHER SETTINGS>并在页面中间将MINIMUM API LEVEL更改为“31”或更高版本,如Google提示所述,如果您忽略此提示,您将会得到这个错误 :)

您可以通过Unity完成此操作,它将下载最新版本的Android SDK(它会打开一个powershell终端- 不要关闭此终端)。

完成上述所有步骤后,您才准备好编译.aab文件并将其上传到Google Play控制台。

最后,我要感谢本教程的作者BobbaLuba,他做出了惊人的努力。经过7个小时在Unity -> Android Studio -> Google Play中折腾,我差点放弃在Google上发布我的应用程序....但最终成功了!

您真是太棒了,先生。我向您致敬。请继续保持您的工作。就我而言,我永远感激不尽...... 我在情感、精神和身体上都感到疲惫不堪。我要去睡觉了。再次感谢!

祝我的小代码猴好运!
平安出门

- NewbNinja


1
在Unity 2020.3中,您可以使用在Android Studio中生成的jks上传密钥,并保持“让Google管理您的密钥...”选项。
要生成密钥,请安装Android Studio并创建一个空的Android Studio项目,然后等待gradle完成后,选择Build> Generate Signed Bundle。当它提示您输入密钥库时,请创建一个新的密钥库并将其保存在所需位置。取消,然后在Unity中选择您保存的jks作为发布设置中的密钥库。
您应该能够在Unity中使用jks作为自定义密钥库生成aab包进行上传,并仍然像他们建议的那样让Google管理签名密钥。

0

在上传应用程序包时遇到问题后,我意识到了一件额外的事情:

在Unity的密钥库密码中不要使用任何禁止字符!这包括空格和括号,可能不仅仅是这些...

如果有疑问,请尝试使用Java keytool命令行创建密钥,它会告诉您的密码包含无法使用的字符...甚至只需将命令行键入终端,您就会发现您的密码会导致命令行崩溃!

keytool -genkey -keystore yourfile.jks -dname "n=Mark Jones, ou=JavaSoft, o=Sun, c=US" -alias android -keypass YOUR PASSWORD  -storepass YOUR PASSWORD -keyalg RSA -keysize 2048 -validity 2000

在Unity密钥生成面板中可能允许特殊字符,但是在keytool中不允许!Unity应该解决这个问题,否则它会让我疯掉;)

祝和平:)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接