要写这篇文章已经好久了,一直没得空。
前段时间接受一项目(大致是6月下旬),是关于android6.0对应及一些新功能。 当时想着这应该很简单,对于去年已经发布的6.0,此时已经有很多手机都能升级6.0的操作系统,那么对应6.0的新特性应该是很简单的,可没想到差点愁死我,废话有点多了~~
首先在2016/5/17召开的google大会规定,app存在证书安全漏洞不能够在GooglePlay上发布,也是这个原因导致我浪费了很多时间
以下是被拒的提示信息:
APP被拒的提示信息:
此后在网上搜了很多种方法:
1、Vitamio的解决方案:
当时用的是vitamio4.0,官方提示直接升级到5.0.2 来解决X509证书漏洞问题;
2、X509TrusterManger 解决方案:
首先,改漏洞在网上有很多资料,大致方法都一样,在checkServerTrusted()方法中做以下处理:
@Override
public void checkServerTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
if (null == chain || 0 == chain.length) {
throw new IllegalArgumentException("parameter is not used");
} else if(null == authType || 0 == authType.length()){
throw new IllegalArgumentException("parameter is not used");
}
try {
// if the certificate chain is not trusted by this TrustManager.
chain[0].checkValidity();
} catch (Exception e) {
throw new CertificateException("Certificate not valid or trusted.");
}
}总之就是当证书存在漏洞或者不可用是,捕捉异常。项目中有5处用到这个方法,都改完之后还是不行,还是报错,卡在这里很久
最后发现baidusdk中存在证书漏洞,在国外用的app,所以直接删掉baidusdk(项目用了两套地图,还有一套是googlemap),这样这个漏洞就算过了。也可以升级baidusdk到最新版。
3、onReceivedSslError证书漏洞
@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
/* if (BuildConfig.DEBUG) {
handler.proceed();
} else {
handler.cancel();
}*/
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setMessage("ssl証明書が正しくないページですが開いてもいいですか");
builder.setPositiveButton("yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
handler.proceed();
}
});
builder.setNegativeButton("no", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
handler.cancel();
}
});
builder.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) {
handler.cancel();
dialog.dismiss();
return true;
}
return false;
}
});
AlertDialog dialog = builder.create();
dialog.show();
}弹出一个dialog,这样修改之后还是被拒,同样被卡在这里很久最终的解决方法,推荐方法
直接联系 GooglePlay开发人员支援小组
他们通过分析代码,直接定位漏洞存在代码的哪些地方,通过定位能够快速找到漏洞,支援小组反馈邮件如下:
因为只剩余一个证书漏洞,所以反馈的只有CustomWebView这个漏洞。
由于快速定位问题所在,所以耽搁很久的问题一下子解决了,所以建议大家解决不了直接联系技术支持小组。
以下是联系链接:
https://support.google.com/googleplay/android-developer/?hl=zh-Hant#topic=3450769
你也可以直接和支援小组对话。