尝试安装已签名的应用程序(app-release.apk)时,显示“被Play保护阻止”警报,并且未安装该应用程序。但是,可以安装未签名的应用程序(app-debug.apk),不会出现问题。
错误消息:
Play Protect无法识别此应用的开发者。来自未知开发人员的应用有时可能不安全。
为什么会发生此错误?有什么解决方案?
答案 0 :(得分:35)
答案 1 :(得分:27)
我找到了更好的解决方案。如果您想解决这个问题,则应该打开Play商店,在菜单中找到 Play保护 和 并取消选中扫描设备是否存在安全威胁。
答案 2 :(得分:13)
尝试创建一个新的密钥库并替换为旧的密钥库,然后重建一个新的签名APK。
更新:请注意,如果您使用与服务器的http连接,则应使用SSL。
看看:https://developer.android.com/distribute/best-practices/develop/understand-play-policies
答案 3 :(得分:9)
Google Play通过您的密钥库找到您作为开发人员。
也许当您生成新的密钥库时,您所在国家的IP在Google上已被禁止。
更改您的IP地址并生成新的密钥库,此问题将得到解决。
如果未成功,请在Android Studio中使用另一个Gmail并生成新的密钥库。
答案 4 :(得分:1)
如果您使用诸如google analytics
或amplitude
之类的某些跟踪器,并且尝试在Google Play
以外的其他平台上发布您的应用,则该错误会向用户显示。因此,有两种可能的解决方案:
Google Play
中发布您的应用答案 5 :(得分:1)
有三种方法可以消除此警告:
答案 6 :(得分:1)
我通过根据签名证书详细信息更改我的应用程序包名称解决了这个问题。起初我用 com.foo.xyz 创建了应用程序 但我的证书组织是“酒吧”。所以我将包名更改为 com.bar.xyz,现在没有 google play 保护警告!
答案 7 :(得分:0)
解决方案在于在生成签名的apk时创建一个新密钥。 这对我没事。
安装时,不会出现警告。
答案 8 :(得分:0)
如果您不想将应用程序上载到Playstore上,那么我仍在为其他仍在寻找此问题的解决方案的人添加此答案,
Google提供了安全设备验证api,您只需在应用程序中调用它一次,之后该应用程序就不会被播放保护程序阻止:
这里有链接:
https://developer.android.com/training/safetynet/attestation#verify-attestation-response
示例代码项目的链接:
答案 9 :(得分:0)
这是由于调试证书已过期 只需删除位于
的debug.keystore
C:\Users\.android\
在构建项目之后,构建工具将重新生成新密钥,并且可以正常工作。 这是参考:
https://developer.android.com/studio/publish/app-signing
答案 10 :(得分:-1)
对我而言唯一有效的解决方案是使用java keytool并在命令行中生成。keystore
文件,然后使用该.keystore
文件对我的应用程序进行签名
您可以在此目录C:\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
答案 11 :(得分:-1)
不是解决方案,但是您可以使用调试密钥对 release 版本进行签名,以避免阻止Google Play Protect进行安装。似乎Play Protect不会警告使用自动生成的debug.keystore
签名的版本。
请注意,您的调试版本不是 unsigned ,它们只是使用 debug 密钥进行签名。
当然,您不能使用内部版本进行生产发行(Google Play,Amazon等),但是仍然需要进行生产前内部测试,因为这需要高频反馈回路。
您可以通过在build.gradle
中添加配置来添加一个任务来使用debug.keystore构建发行版,例如:
android {
buildTypes {
// add after the `release` definition
releaseDebugKey { initWith release }
}
signingConfigs {
// use debug.keystore for releaseDebugKey builds
releaseDebugKey { initWith debug }
}
}
然后执行./gradlew assembleReleaseDebugKey
以使用调试键构建发行版。