安装应用被Play保护阻止

时间:2018-06-28 10:36:24

标签: android signature google-play-protect

尝试安装已签名的应用程序(app-release.apk)时,显示“被Play保护阻止”警报,并且未安装该应用程序。但是,可以安装未签名的应用程序(app-debug.apk),不会出现问题。

错误消息:

  

Play Protect无法识别此应用的开发者。来自未知开发人员的应用有时可能不安全。

为什么会发生此错误?有什么解决方案?

image of Error

12 个答案:

答案 0 :(得分:35)

我找到了解决方案: 转到下面的链接并提交您的申请。

Play Protect Appeals Submission Form

几天后,问题将得到解决

答案 1 :(得分:27)

我找到了更好的解决方案。如果您想解决这个问题,则应该打开Play商店,在菜单中找到 Play保护 herehere 并取消选中扫描设备是否存在安全威胁

答案 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 analyticsamplitude之类的某些跟踪器,并且尝试在Google Play以外的其他平台上发布您的应用,则该错误会向用户显示。因此,有两种可能的解决方案:

  1. 在您的应用中使用特殊的跟踪器(firebase和appmetrica已经过测试并且可以)
  2. Google Play中发布您的应用

答案 5 :(得分:1)

有三种方法可以消除此警告:

  1. 您需要在Play商店中禁用Play Protect-> Play Protect->设置图标->扫描设备是否存在安全威胁
  2. 在Google Play商店中发布应用
  3. 提交Appeal to the Play Protect

答案 6 :(得分:1)

我通过根据签名证书详细信息更改我的应用程序包名称解决了这个问题。起初我用 com.foo.xyz 创建了应用程序 但我的证书组织是“酒吧”。所以我将包名更改为 com.bar.xyz,现在没有 google play 保护警告!

答案 7 :(得分:0)

解决方案在于在生成签名的apk时创建一个新密钥。 这对我没事。

  1. 点击“构建”
  2. 点击生成已签名的Bundle / APK ...
  3. 选择Bundle / APK(在我的情况下为APK),然后单击“下一步”
  4. 单击“新建”(确保计算机上具有密钥库路径)
  5. 完成所有操作后,单击“完成”以生成签名的APK

安装时,不会出现警告。

答案 8 :(得分:0)

如果您不想将应用程序上载到Playstore上,那么我仍在为其他仍在寻找此问题的解决方案的人添加此答案,

Google提供了安全设备验证api,您只需在应用程序中调用它一次,之后该应用程序就不会被播放保护程序阻止:

这里有链接:

https://developer.android.com/training/safetynet/attestation#verify-attestation-response

示例代码项目的链接:

https://github.com/googlesamples/android-play-safetynet

答案 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

中找到Java键盘工具

打开命令窗口并切换到该目录,然后输入如下命令

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以使用调试键构建发行版。