本文由 NRatel 历史笔记整理而来,如有错误欢迎指正。
1、debug签名问题
原因:
为应用签名 | Android Studio | Android Developers
从 IDE 中运行或调试您的项目时,Android Studio 会自动使用由 Android SDK 工具生成的调试证书为您的应用签名。当您首次在 Android Studio 中运行或调试项目时,IDE 会自动在 $HOME/.android/debug.keystore 中创建调试密钥库和证书,并设置密钥库和密钥密码。
由于调试证书由构建工具创建并且在设计上不安全,因此大多数应用商店(包括 Google Play 商店)都 不接受使用调试证书为要发布的应用签名。
签名分为2个,
1、上传签名秘钥:用于确保应用在上传到GooglePlay时,应用的身份是合法的。(若泄漏,他人可能恶意传包到GooglePlay后台(其实还需要开发人员账密))
2、应用签名秘钥:用于确保应用完整性和来源的真实性(如果某个第三方在您不知情或未经授权的情况下设法取得您的应用签名密钥,此人可能会为应用签名并进行分发,从而恶意替换您的原版应用或损坏它们。另外,此人还可能利用您的身份为应用签名并进行分发,从而攻击其他应用或系统本身,或者损坏或窃取用户数据。)
解决:
使用自己创建的签名打包后解决。
2、安卓TargetVersion 问题
原因:TargetVersion 需要满足googleplay要求。(会随时间变化增大)
解决:提升TargetVersion。
3、隐私政策问题
原因:
包中一些请求的权限,需要隐私政策链接中说明。
解决:
在googleplay后台左侧 设置/高级设置/应用提供情况/信息中心 中,补充隐私权政策网址
4、上传签名变化
原因:
使用了 非上传签名 的包上传。
本想替换一个上传签名,因为签名秘钥的信息不是正式的,且因为日久,忘记了别名。
解决:暂使用原签名。
使用 jdk 的bin/keytool.exe 可以查看keystore信息 (前提是记得密码)
keytool.exe -list -v -keystore xxxx.keystor
上传签名可以请求重置,但可能较麻烦。
5、应用被拒-提示包含低版本的unity-ads,违反隐私政策
原因:
检查了项目 PackageManager、Services、Plugins/Android 均无集成,仍报此错。
官方说明是Unity 某些版本(我的是Unity2021.3.4f1c1)的bug,提升Unity中国版版本至最新或改用国际版可解决。
网上有人说,使用Unity Pro 去掉Unity splash也可以解决,猜测是 splash 偷偷集成了低版本的unity ads。
解决:
将 Unity LTS小版本提升至最新(Unity2021.3.33f1c1)后解决。
6、后台崩溃问题
应用包在成功传到 内部测试中时,会自动进行测试,大约需要1小时,
在后台左侧 发布前测试报告/概览 中,可以看道一些 崩溃和 ANR
会提示:
“发现错误。请先解决错误,然后再发布正式版。”
理论上应该先解决这些错误,再发布正式版,
但一些非重复的原生代码崩溃。并不一定导致提审被拒。
https://developer.android.com/topic/performance/vitals/crash?hl=zh-cn
解决:
发布前测试报告中的错误堆栈是很底层的,难以分析
考虑利用 火山/Firebase 等打点工具分析用户行为,再处理
7、提审前验证 aab
测试人员在拿到 aab 包时,无法直接安装到手机,需要先转成 apk。
可先使用 bundletool 将 aab 转为 apks
再通过 bundletool 将 apks 安装到真机
具体用法见下方链接
https://github.com/google/bundletool/releases
8、其他应提前准备的问题
包名
CPU架构支持范围:ARM64、ARMv7?x86?
AppVersion 从多少开始
9、当安装一个不是从 Googleplay 商店下载的且已签名(非debug签)的安装包时,Googleplay会提示“不安全”。
解决:打包签名时,只对release包签名,不对 debug包签名。
或者,直接忽略这个提示就可以。