我能够构建发布apk,经过测试,一切正常。但是,当我将其上传到Play商店时,由于某些恶意行为,它被拒绝了。
服务器连接代码:
HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
DefaultHttpClient client = new DefaultHttpClient();
SchemeRegistry registry = new SchemeRegistry();
SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
registry.register(new Scheme("https", socketFactory, 443));
SingleClientConnManager mgr = new SingleClientConnManager(client.getParams(), registry);
DefaultHttpClient httpClient = new DefaultHttpClient(mgr, client.getParams());
// Set verifier
HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);
build.gradle:
implementation 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
谷歌播放被拒绝错误消息:
The app uses software that contains security vulnerabilities for users or allows the collections of user data without proper disclosure.
您的代码正在禁用 SSL 主机名验证,引用屏幕截图中链接的帮助中心文章,
在与远程主机建立 HTTPS 连接时,会忽略所有 SSL 证书验证错误,从而使您的应用容易受到中间人攻击。攻击者可以读取传输的数据(例如登录凭据(,甚至可以更改在HTTPS连接上传输的数据。
这是一个安全漏洞 - 正如CommonsWare所指出的,您应该删除问题中的所有代码。 如果您这样做是因为之前遇到 SSL 验证错误,下面是 SSL 验证的一些常见问题,以及有关如何修复这些问题的信息。
尝试在您的代码中搜索"TrustManager",如果没有找到,大多数情况下是因为包含第三方库。
可能是因为在您的 gradle 中使用了任何库的旧版本