使用应用程序包和Play应用程序签名是Google目前推荐在Google Play上部署新应用的方式。从2021年8月开始,新应用将被强制使用这些格式。
我该如何在Unity中设置此项功能,并如何在Google Play中配置应用程序?
使用应用程序包和Play应用程序签名是Google目前推荐在Google Play上部署新应用的方式。从2021年8月开始,新应用将被强制使用这些格式。
我该如何在Unity中设置此项功能,并如何在Google Play中配置应用程序?
我还没有成功将2019.4应用程序捆绑包上传到Play控制台,所以在开始之前升级到2020.3 LTS可能是个好主意(因为这对我最后起作用了)。
首先在Play控制台中创建一个新应用程序,为其命名并接受条款等。
然后,在左侧菜单上单击内部测试
,并创建一个新的内部版本。
在第一个问题中,单击更改应用签名密钥
,然后选择使用其他密钥
和第三个选项,在其中可以上传您现有的密钥(和添加上传密钥的可选步骤)到Google Play。
现在,请不要仅按照Google Play上列出的说明进行操作,因为您最终会得到一个Unity不知道如何处理的上传密钥存储。
相反,我们将使用Unity创建两个密钥存储和两个密钥。 第一个是应用程序签名密钥,您只需要在上传到Google Play时查看它一次,然后Google会负责使用它来对您的应用程序进行最终签名,之后您将上传您的应用程序捆绑包。
转到Player settings
→Publishing Settings
→Keystore Manager
→Create new in dedicated location
您不需要填写所有内容。只需填写密码、密钥别名和密钥密码即可。无论您如何称呼密钥,都没有关系。现在不要立即配置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
文件了。
希望您的项目现在已设置为使用刚创建的上传密钥签名。
通过前往Player Settings
→Other Settings
覆盖默认包名称
自行设置软件包名称。仅使用小写字符输入适当的内容,默认软件包名称具有大写字符,这可能会引起问题。您无法在以后更改此设置,否则您必须创建一个新的Play商店条目,因此请确保它是客户可接受的内容,即com.yourcompany.gamename
。
还建议您在播放器设置中启用64位版本构建,否则Google Play稍后将会出现问题。将Scripting Backend
切换到IL2CPP
,然后勾选ARM64
:
在构建设置中勾选Build App Bundle
。
单击Build
并构建您的.aab
文件。
然后将其上传至Google Play控制台:
如果您很幸运,一切都顺利进行,并且您可以点击保存并准备开始测试您的应用程序。
如果没有,则可能会收到有帮助的错误消息,在这种情况下,请遵循它们,如果不是非常描述性的(例如“无法上传。再试一次。”),则尝试暂时上传.apk,因为这有时会提供更好的错误消息,然后在解决问题后切换回.aab。
对于所有在最后一步遇到困难的优秀人才!- 请阅读以下内容!
当您创建了密钥库并将其公钥导出为.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
在上传应用程序包时遇到问题后,我意识到了一件额外的事情:
在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应该解决这个问题,否则它会让我疯掉;)
祝和平:)