Google Play发布android app

文章目录

说明

本博文只是简单记录使用流程
操作时间是2023.1.12日,后续查看该博文,可能会发现因为Google Play Console版本升级带来操作使用上的差异

google play官方指导
https://support.google.com/googleplay/android-developer/answer/9859152?hl=zh-Hans]

1.注册开发者账户

浏览器登录google账户后,如果没有开发者账户,则需要注册开发者账户,如果有则跳过该步骤

1.1 打开 https://play.google.com/console 会直接重定向到https://play.google.com/console/signup

提示需要注册开发者账户,个人还是单位?
在这里插入图片描述

选择个人
在这里插入图片描述

在这里插入图片描述

有三项是必填
在这里插入图片描述

改成单位开发者账户
在这里插入图片描述

在这里插入图片描述

1.2 换一个google账户后,打开 https://play.google.com/console 也会直接重定向到https://play.google.com/console/signup,但是页面不一样,需要开启两步验证

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

输入密码后,点击下一步
在这里插入图片描述
输入手机号,下一步
在这里插入图片描述
输入验证码,下一步
在这里插入图片描述

开启

在这里插入图片描述
手动关闭该页面,输入https://play.google.com/console,还是会跳到https://play.google.com/console/signup页面
在这里插入图片描述

填写各种开发者(个人或者单位)信息后

再次进入Google Play控制台 https://play.google.com/console

在这里插入图片描述
成功进入Play控制台

2.创建应用

在这里插入图片描述

点击创建应用
在这里插入图片描述

在这里插入图片描述

点击创建应用

3.应用创建后的信息中心

总共分成三大块

立即开始测试
设置应用
发布应用
在这里插入图片描述
在这里插入图片描述

3.1 立即开始测试

在这里插入图片描述
点击 “创建新版本”

在这里插入图片描述
点击“创建新的发布版本”

在这里插入图片描述
在这里插入图片描述

如果使用自建签名,则需要更改应用签名密钥

点击“更改应用签名密钥”,会弹框提示
在这里插入图片描述
选择使用其他密钥
有四个选项

在这里插入图片描述
在这里插入图片描述
此处选择“从 Java 密钥库导出并上传密钥”
1.下载 Play Encrypt Private Key (PEPK) 工具。下载源代码
2.使用下面的命令运行该工具,导出您的私钥并将其加密。然后替换相应参数,在看到提示时分别输入密钥库和密钥的密码。

$ java -jar pepk.jar --keystore=foo.keystore --alias=foo --output=output.zip --include-cert --encryptionkey=eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a

按照流程把apk打包使用的密钥文件xxx.jks替换名称foo.keystore,alias也换成xxx.jks中的keyAlias

3.上传生成的zip文件

4.为了提高安全性,请创建新的上传密钥(可选)。
隐藏说明
expand_less
创建新的上传密钥,然后使用该密钥为应用的每个版本签名,而不使用应用签名密钥来签名。如果您丢失了上传密钥或者密钥被盗,可以重置上传密钥,然后开始使用新密钥。

生成新的上传密钥。了解详情
使用下方的命令以 PEM 文件格式导出上传密钥证书。请替换以粗体显示的参数。
$ keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem

此处暂时没有创建所谓的“上传密钥”了,点击保存后,回到主页
在这里插入图片描述
自己上传的密钥生效了

上传app bundle,注意这里只能上传aab文件,不支持上传apk?????
在这里插入图片描述
这里需要重新打包aab

aab打包

在这里插入图片描述
不是上述路径,而是

在这里插入图片描述

在这里插入图片描述
注意这里“Export encrypted key for enrolling published apps in Google Play App Signing”,默认勾选,暂时没有用到

在这里插入图片描述
成功生成了aab

aab转apks

aab转apks

命令格式参考如下:

java -jar <bundletool.jar的路径> build-apks --bundle=<.aab文件的路径>
--output=<输出.apks的路径> --ks=<打包使用的证书文件的路径> --ks-pass=pass:<证书密码> --ks-key-alias=<证书别名> --key-pass=pass:<证书别名密码,通常与证书密码一致>

但是本机运行报错

[BT:1.13.2] Error: Error while loading private key and certificates from the keystore.
com.android.tools.build.bundletool.model.exceptions.CommandExecutionException: Error while loading private key and certificates from the keystore.
        at com.android.tools.build.bundletool.model.exceptions.InternalExceptionBuilder.build(InternalExceptionBuilder.java:57)
        at com.android.tools.build.bundletool.model.SignerConfig.extractFromKeystore(SignerConfig.java:180)
        at com.android.tools.build.bundletool.commands.BuildApksCommand.populateSigningConfigurationFromFlags(BuildApksCommand.java:1685)
        at com.android.tools.build.bundletool.commands.BuildApksCommand.fromFlags(BuildApksCommand.java:777)
        at com.android.tools.build.bundletool.commands.BuildApksCommand.fromFlags(BuildApksCommand.java:743)
        at com.android.tools.build.bundletool.BundleToolMain.main(BundleToolMain.java:82)
        at com.android.tools.build.bundletool.BundleToolMain.main(BundleToolMain.java:54)
Caused by: java.io.IOException: Invalid keystore format
        at sun.security.provider.JavaKeyStore.engineLoad(Unknown Source)
        at sun.security.provider.JavaKeyStore$JKS.engineLoad(Unknown Source)
        at sun.security.provider.KeyStoreDelegator.engineLoad(Unknown Source)
        at sun.security.provider.JavaKeyStore$DualFormatJKS.engineLoad(Unknown Source)
        at java.security.KeyStore.load(Unknown Source)
        at com.android.tools.build.bundletool.model.SignerConfig.extractFromKeystore(SignerConfig.java:133)
        ... 5 more

原因竟然是我使用的jar包是最新版bundletool-all-1.13.2.jar,估计是jdk11编译的,所以运行也需要jdk11,而报错是因为默认使用的jdk版本是java 8(之前系统配置了java 8环境变量),可惜,这个报错提示不友好,郁闷很久!!!!有的jar包运行会提示版本不兼容

设备安装apks

命令格式参考如下:

java -jar <bundletool.jar的路径> install-apks --apks=<上一步中生成的.apks文件路径>

本机因为bundletool-all-1.13.2.jar 所以还是需要使用jdk11启动jvm

本机运行后提示信息如下

The APKs have been extracted in the directory: C:\Users\Administrator\AppData\Local\Temp\9626548363570726817

安装成功

问题

如果是面向海外的app,优先使用Google Play市场发布应用,所以aab是首选,但是怎么方便机器测试aab呢?每次都要主动运行这个jar程序两次??

参考
https://copyfuture.com/blogs-details/202207120550060058
https://baijiahao.baidu.com/s?id=1739494345616322323&wfr=spider&for=pc

上传aab到Google Play

上传上一步生成的aab文件到Google Play Console
在这里插入图片描述
提示我aab使用的target api level为30,低于31了,需要修改为至少31

解决方案就是修改项目的compileSdkVersion版本为31,但是项目里的compileSdkVersion还是保持30,会不会有问题呢?待后续研究,重点!!!

重新编译后上传,还是上传失败
在这里插入图片描述
多了一个问题,提到了android;exported=false
官方指南 https://developer.android.com/about/versions/12/behavior-changes-12#exported

修改后,继续上传,还是报错
在这里插入图片描述
尝试在GooglePlay应用商店去寻找这个包名的应用,没找到,经查询可能是已经下架的app曾经占用过这个包名
于是针对在GooglePlay市场发布的版本专门去更改包名
重新打包后上传,不报错了

点击右下角“检查发布内部测试”,有提示报错
在这里插入图片描述

错误1:您的应用所用的 APK(版本代码:1)会请求以下权限:android.permission.CAMERA, android.permission.RECORD_AUDIO, android.permission.READ_PHONE_STATE。对于在 APK 中使用这些权限的应用,您必须设置隐私权政策。

怎么设置隐私权政策?
入口在
在这里插入图片描述
在这里插入图片描述
需要有自己的网页!

错误2:此版本含有尚未在 Play 管理中心内声明的权限。请转到“敏感的应用权限”,更新您的权限声明

在这里插入图片描述
在这里插入图片描述
尝试选择第一个

google play控制台然后会检测apk,针对当前apk,分析具体apk的敏感权限,结果。。。

这时候回到“当前应用”内部测试“-》”检查并发布版本“-》还是选择第二个错误 转到”敏感的应用权限“,点击
在这里插入图片描述

所有文件访问权限(不具有普适性,针对具体apk)

点击”开始“
在这里插入图片描述
在这里插入图片描述
这个所有文件访问权限其实是android.permission.MANAGE_EXTERNAL_STORAGE,api level30上新增的
在这里插入图片描述
而项目AndroidManifest.xml中的确有声明

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

解决方案:貌似这个权限针对该项目没什么特别作用,先删除看看
软件包安装请求权限(不具有普适性,针对具体apk)

在这里插入图片描述
在这里插入图片描述
REQUEST_INSTALL_PACKAGES 是api level 23 新增的
MANAGE_EXTERNAL_STORAGE
而项目AndroidManifest.xml中的确有声明

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

解决方案:貌似这个权限针对该项目没什么特别作用,先删除看看

两个问题都解决后,上传报错直接提示需要提供隐私权政策
在这里插入图片描述
回到之前的隐私权政策页面,输入app隐私权政策对应网址保存,然后继续重新上传包,成功

内部测试版本下载

控制台首页选择该应用,右侧选择“内部测试”,目前处于尚未审核状态(后续公开发布需要填写app所有信息并且审核通过才行),并且会有一个临时应用名称unreviewed,但是有相关测试人员提供的下载链接
在这里插入图片描述

下载链接需要切换到tab页面“测试用户数量”查看,输入相关测试人员的邮箱后,底部有提供下载链接,点击复制即可,此下载链接会跳转到google play商店,如果商店登录google账户不是测试人员邮箱对应的google账户,则无法下载???

在这里插入图片描述

如点击链接后,跳转
在这里插入图片描述
点击download,跳转到google play商店下载

3.2 设置应用(如果只是百人内测,后续步骤即使不做也可以,但是如果要公开发布,从这里就要开始做,目标为了应用审核通过,不然包名始终是unreviewed)

在这里插入图片描述

设置隐私权政策

已设置过,跳过

应用访问权限

已设置过,跳过

广告

在这里插入图片描述
选择否

内容分级

在这里插入图片描述

点击"开始填写"
在这里插入图片描述
点击“下一步”

在这里插入图片描述

在这里插入图片描述

点击“保存”、“下一步”

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

直接点击“提交”

目标受众群体

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击“保存”

新闻应用

在这里插入图片描述

新冠肺炎 (COVID-19) 接触者追踪应用和感染状况应用

在这里插入图片描述

数据安全(这是技术需要关注的重点!!!)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

因为之前就看到过app有申请
camera 拍照权限
record audio 录音权限
read phone state 读取设备状态权限

而这些权限都是google play定义的需要说明的权限

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这里只选择了“拍照”、“录音”,点击“下一步”
拍照权限说明
在这里插入图片描述
在这里插入图片描述

点击“保存”

录音权限说明
在这里插入图片描述

在这里插入图片描述
点击“保存”

在这里插入图片描述

在这里插入图片描述
点击“提交”

政府应用

在这里插入图片描述

选择应用类别并提供详细联系信息

在这里插入图片描述

在这里插入图片描述
填写完所有信息后点击“保存”

设置商品详情

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
上传完应用图标、置顶大图、效果图(手机、平板1.0寸、平板10.0寸)后,点击“保存”

至此,静静等待审核吧~

3.3.当然在发布正式版之前,需要看下发布前测试报告(因为之前有发布过内部测试版本,默认发布完内部测试版本后,google play自动会进行测试并生成发布前测试报告)

在这里插入图片描述
可以看出问题挺多
这7台机器是谁测试的?play商店自动测试????

答:的确是play商店自己安排的测试
官网链接 https://support.google.com/googleplay/android-developer/answer/9842757?hl=zh-Hans

在这里插入图片描述

先挑错误看

明确一点:这里的错误不是app本身运行报错,而是平台考虑,基于安全性之类的考量,强制给上架app加上限制要求

错误1:安全性问题-不安全的加密模式

在这里插入图片描述

在这里插入图片描述

提示存在不安全的加密模式,详情链接 https://support.google.com/faqs/answer/9450925

在这里插入图片描述

而我们去看下项目依赖的三方库com.geetest.sensebot:sensebot:4.3.0
在这里插入图片描述

修改方案:

查看项目虽然引入了依赖库,但是根本没有调用依赖库中相关api,于是直接删除依赖库重新打包

解决完所有错误后

重新打包,发布新的内部测试版本

打包上传完新的aab后,回到控制台-你的应用,查看发布前测试报告,可以看到,有提示“正在测试。测试过程通常需要 1 小时左右,但也可能会用更长时间。”
在这里插入图片描述

安静等待测试报告吧

3.4.发布(这里特指正式版)

创建正式版本

在这里插入图片描述
点击“创建新的发布版本”

在这里插入图片描述

错误:无法上传aab,提示“已有版本使用版本号xxx”

在这里插入图片描述
因为每次发布内部测试包的时候,google play都会存储包到内容库,点击上传新的aab,会对比内容库中包的版本号是否已经存在,存在则不允许上传,这时候可以点击“从内容库添加”
在这里插入图片描述

选择之前测试没问题的包,点击“添加到版本”即可
在这里插入图片描述
上传成功后,需要仔细填写版本说明,不同语言版本的,因为这是真实展示在play商店让用户看到的,不比内部测试版本,这里是针对全部用户开放的,必须仔细慎重

在这里插入图片描述
填写完毕后,点击右下角“检查发布版本”

发起审核(竟然不是发布后自动审核)

选择左侧菜单栏”Production“
在这里插入图片描述
或者选择左侧菜单栏”Dashboard“

在这里插入图片描述

两个都可以

点击”Go to publishing overview“

在这里插入图片描述

手动点击”Send xx changes for review“

在这里插入图片描述
二次确认,提示审核最多需要7天,点击确认

等待审核完成

回到”Dashboard“,可以看到当前处于正在审核状态,最多等待7天

在这里插入图片描述

3.5 技巧

发布内测包后测试有问题的话,怎么上传修改后的新内测包,要求不升级版本号,之前只能修改一次,升级下版本号,太傻瓜了

在这里插入图片描述
在这里插入图片描述
点击暂停测试,然后回到app bundle explorer中删除(经过验证,也找不到删除按钮,所以即使发布的内测包也删除不了?了??? 该方案失败)

猜你喜欢

转载自blog.csdn.net/weixin_41548050/article/details/128663066