尝试安装签名的应用程序(app-release.apk)时,显示“被Play保护阻止”警报,并且未安装该应用程序。但是,可以安装未签名的应用程序(app-debug.apk),不会出现问题。
错误信息:
Play Protect无法识别此应用的开发者。来自未知开发人员的应用程序有时可能不安全。
为什么会发生此错误?有什么解决方案?
尝试安装签名的应用程序(app-release.apk)时,显示“被Play保护阻止”警报,并且未安装该应用程序。但是,可以安装未签名的应用程序(app-debug.apk),不会出现问题。
错误信息:
Play Protect无法识别此应用的开发者。来自未知开发人员的应用程序有时可能不安全。
为什么会发生此错误?有什么解决方案?
Answers:
android:usesCleartextTraffic="true"
应该可以解决问题了吗?谢谢。
我找到了更好的解决方案。如果您想解决这个问题,则应该打开Play商店,在菜单中找到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保护的阻止:
这里有链接:
https://developer.android.com/training/safetynet/attestation#verify-attestation-response
示例代码项目的链接:
对我唯一有效的解决方案是使用java keytool并生成一个。keystore
归档命令行,然后使用该.keystore
文件对我的应用进行签名
您可以在此目录中找到java keytool 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
解决方案在于在生成签名的apk时创建一个新密钥。这为我工作没有大惊小怪。
安装时,不会出现警告。
这是由于调试证书过期而已,只需删除debug.keystore
位于
C:\Users\.android\
在构建项目之后,构建工具将重新生成新密钥,并且可以正常工作。这里是参考:
https://developer.android.com/studio/publish/app-signing
不是解决方案,但是您可以使用调试密钥来签署发行版本,以避免阻止Google Play Protect进行安装。看来Play Protect不会警告使用自动生成功能签名的版本debug.keystore
。
请注意,您的调试版本不是未签名的,它们只是使用调试密钥签名的。
当然,您不能使用内部版本进行生产发行(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
以使用调试键构建发布版本。