admin管理员组

文章数量:1604638

文章目录

  • 说明
  • 1.注册开发者账户
    • 1.1 打开 https://play.google/console 会直接重定向到https://play.google/console/signup
    • 1.2 换一个google账户后,打开 https://play.google/console 也会直接重定向到https://play.google/console/signup,但是页面不一样,需要开启两步验证
  • 2.创建应用
  • 3.应用创建后的信息中心
    • 3.1 立即开始测试
      • 如果使用自建签名,则需要更改应用签名密钥
        • aab打包
        • aab转apks
          • aab转apks
          • 设备安装apks
          • 问题
      • 上传aab到Google Play
        • 错误1:您的应用所用的 APK(版本代码:1)会请求以下权限:android.permission.CAMERA, android.permission.RECORD_AUDIO, android.permission.READ_PHONE_STATE。对于在 APK 中使用这些权限的应用,您必须设置隐私权政策。
        • 错误2:此版本含有尚未在 Play 管理中心内声明的权限。请转到“敏感的应用权限”,更新您的权限声明
          • 所有文件访问权限(不具有普适性,针对具体apk)
          • 软件包安装请求权限(不具有普适性,针对具体apk)
      • 内部测试版本下载
    • 3.2 设置应用(如果只是百人内测,后续步骤即使不做也可以,但是如果要公开发布,从这里就要开始做,目标为了应用审核通过,不然包名始终是unreviewed)
      • 设置隐私权政策
      • 应用访问权限
      • 广告
      • 内容分级
      • 目标受众群体
      • 新闻应用
      • 新冠肺炎 (COVID-19) 接触者追踪应用和感染状况应用
      • 数据安全(这是技术需要关注的重点!!!)
      • 政府应用
      • 选择应用类别并提供详细联系信息
      • 设置商品详情
      • 至此,静静等待审核吧~
    • 3.3.当然在发布正式版之前,需要看下发布前测试报告(因为之前有发布过内部测试版本,默认发布完内部测试版本后,google play自动会进行测试并生成发布前测试报告)
      • 错误1:安全性问题-不安全的加密模式
        • 修改方案:
      • 解决完所有错误后
        • 重新打包,发布新的内部测试版本
        • 安静等待测试报告吧
    • 3.4.发布(这里特指正式版)
      • 创建正式版本
        • 错误:无法上传aab,提示“已有版本使用版本号xxx”
      • 发起审核(竟然不是发布后自动审核)
      • 等待审核完成
    • 3.5 技巧

说明

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

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

1.注册开发者账户

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

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

提示需要注册开发者账户,个人还是单位?

选择个人

有三项是必填

改成单位开发者账户

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


输入密码后,点击下一步

输入手机号,下一步

输入验证码,下一步

开启


手动关闭该页面,输入https://play.google/console,还是会跳到https://play.google/console/signup页面

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

再次进入Google Play控制台 https://play.google/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.bundletoolmands.BuildApksCommand.populateSigningConfigurationFromFlags(BuildApksCommand.java:1685)
        at com.android.tools.build.bundletoolmands.BuildApksCommand.fromFlags(BuildApksCommand.java:777)
        at com.android.tools.build.bundletoolmands.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/blogs-details/202207120550060058
https://baijiahao.baidu/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/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 新增的

而项目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/googleplay/android-developer/answer/9842757?hl=zh-Hans

先挑错误看

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

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

提示存在不安全的加密模式,详情链接 https://support.google/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中删除(经过验证,也找不到删除按钮,所以即使发布的内测包也删除不了?了??? 该方案失败)

本文标签: playGoogleappandroid