尝试安装已签名的应用程序 (app-release.apk) 时,会显示“被 Play Protect 阻止”警报并且该应用程序未安装。但是,可以毫无问题地安装未签名的应用程序 (app-debug.apk)。
错误信息:
Play Protect 无法识别此应用的开发者。来自未知开发者的应用有时可能不安全。
为什么会发生这个错误?解决方案是什么?
尝试安装已签名的应用程序 (app-release.apk) 时,会显示“被 Play Protect 阻止”警报并且该应用程序未安装。但是,可以毫无问题地安装未签名的应用程序 (app-debug.apk)。
错误信息:
Play Protect 无法识别此应用的开发者。来自未知开发者的应用有时可能不安全。
为什么会发生这个错误?解决方案是什么?
尝试创建一个新的密钥库并用旧的替换,然后重建一个新的签名 APK。
更新:请注意,如果您使用与服务器的 http 连接,则应使用 SSL。
看看:https ://developer.android.com/distribute/best-practices/develop/understand-play-policies
有三个选项可以消除此警告:
Google play 通过您的密钥库找到您作为开发者。
当您生成新的密钥库时,也许您的国家/地区 IP 在 Google 上被禁止。
更改您的 IP 地址并生成新的密钥库,问题将得到解决。
如果您没有成功,请在 Android Studio 中使用另一个 Gmail 并生成新的密钥库。
如果您不想在 Playstore 上上传您的应用程序,我正在为仍在寻求解决此问题的其他人添加此答案,然后暂时有解决此问题的方法。
Google 提供了安全设备验证 API,您只需在应用程序中调用一次,之后您的应用程序将不会被 Play Protect 阻止:
这里有链接:
https://developer.android.com/training/safetynet/attestation#verify-attestation-response
示例代码项目链接:
唯一对我有用的解决方案是使用 java keytool 并生成 . keystore
归档命令行,然后使用该.keystore
文件签署我的应用程序
您可以在此目录中找到 java keytoolC:\Program Files\Java\jre7\bin
打开命令窗口并切换到该目录并输入这样的命令
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
Keytool 会提示您提供密钥库的密码、您的姓名、公司等。请注意,在最后一个提示中,您需要输入 yes。
然后它将密钥库生成为您所在目录中名为 my-release-key.keystore 的文件。密钥库和密钥受您输入的密码保护。密钥库包含一个密钥,有效期为 10000 天。别名是您稍后将使用的名称,用于在签署应用程序时引用此密钥库。
有关 Keytool 的更多信息,请参阅以下文档:http ://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html
有关签署 Android 应用程序的更多信息,请访问此处:http: //developer.android.com/tools/publishing/app-signing.html
如果您正在使用一些跟踪器,例如google analytics
oramplitude
并且您试图在除 之外的其他平台上发布您的应用程序,Google Play
则会向用户显示此错误。所以有两种可能的解决方案:
Google Play
没有非常精确的方法来解决这个问题,但是下面的任务可以有效地解决这个问题
单击无效缓存/重新启动
做Android Studio的登录流程
点击生成签名的Bundle / APK
完整填写所有“生成签名包”信息。
不要使用相同的密码。确保您的密码在“生成签名的捆绑包”中有所不同。最好使用代码 01 输入美国地址
可能对波斯语比较敏感,所以程序中最好不要用波斯语写。用英语编写程序菜单,并在下次更新中使其成为波斯语
移除额外权限
最后,访问以下站点并请求故障排除 https://support.google.com/googleplay/android-developer/answer/2992033?hl=en
正确填写名字和姓氏
上传安装文件,例如在 Dropbox 中,然后复制链接
如果您使用的是 Dropbox,请务必将链接末尾的数字0更改为1,然后提交或使用链接缩短网站。
如果您的请求未获批准,请缩短安装文件的链接,例如使用https://bit.ly站点
在描述部分,解释问题。为了您的方便,我将为您留下一个示例文本:
Greetings to the esteemed Google Team
I am sending this request to fix the "Blocked by Pay Protect" error
****{Write your app info and your reasons}****
Fast, simple, free and lightweight, no annoying ads ,This app does not collect and store user data!
Also, no unnecessary cost is imposed on the user and is completely free , It
also certifies that this app does not harm user privacy and is not harmful to users
Thank you
如果您没有收到确认电子邮件,请在几天后再次重复请求
这是由于调试证书过期,只需删除debug.keystore
位于
C:\Users\.android\
在构建您的项目之后,构建工具将重新生成一个新密钥,它会正常工作。这是一个参考:
https://developer.android.com/studio/publish/app-signing
解决方案在于在生成签名的 apk 时创建一个新密钥。这对我来说毫不费力。
安装时,警告不会出现。
我通过根据签名证书详细信息更改我的应用程序包名称解决了这个问题。起初我使用 com.foo.xyz 创建了应用程序,但我的证书组织是“bar”。所以我将我的包名更改为 com.bar.xyz 现在没有谷歌播放保护警告!
如果有硬件更改,请尝试重新下载或重新创建 jks 文件。
我也遇到过这样的问题,它是在将我的 SSD 从一台 PC 移动到另一台 PC 之后发生的。这暗示了无需将应用程序发送给 Google 进行验证:一个旧的 apk 文件正在安装而没有任何警告。所以我用云端的那个替换了我硬盘上的 android.jks,创建了一个签名的 apk,问题就消失了。
不是解决方案,但您可以使用调试密钥对发布版本进行签名,以避免阻止来自 Google Play Protect 的安装。看起来 Play Protect 不会对使用自动生成的版本发出警告debug.keystore
。
请注意,您的调试版本不是unsigned,它们只是使用调试密钥签名。
当然,您不能将构建用于生产分发(Google Play、Amazon 等),但它仍然值得进行需要高频反馈循环的生产前内部测试。
您可以通过在中添加配置来添加任务以使用 debug.keystore 构建发布build.gradle
,例如:
android {
buildTypes {
// add after the `release` definition
releaseDebugKey { initWith release }
}
signingConfigs {
// use debug.keystore for releaseDebugKey builds
releaseDebugKey { initWith debug }
}
}
然后执行./gradlew assembleReleaseDebugKey
以使用调试密钥构建发布版本。