上谷狗市场
谷歌市场上包,会检测api密钥,官方的文档有说明,如果你不限制密钥的使用,不让过
https://support.google.com/faqs/answer/9287711
这个页面给出相应的操作提示了.操作完就可以了.
主要是进入它的认证中心,把api的使用限制添加上,比如android/ios这些,然后最好把api也选上就可以了.
上市场遇到的问题
问题总会有的,比如 gcp密钥泄露问题是比较糟糕的.在市场上会有提示的.
GCP API 密钥已泄露
error错误brightness_1安全性
您的应用包含已泄露的 Google Cloud Platform (GCP) API 密钥。如需了解详情
这里是官方文档,告诉我们怎么处理https://support.google.com/faqs/answer/9287711
https://cloud.google.com/docs/authentication/api-keys?sjid=4083464845092995840-NC&hl=zh-cn#android
还是以anddoird为例.
总结就是两个要求,进入凭据里面的api密钥,添加限制,一个是api的限制.一个是应用的限制,应用上添加包名与sha1,然后代码里面添加两个值.
static final String X_ANDROID_PACKAGE = "X-Android-Package"; static final String X_ANDROID_CERT = "X-Android-Cert";
在请求头里面添加这两个值.
public static HttpHeaders getHttpHeader() {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set(X_ANDROID_PACKAGE, androidPackage);
if (TextUtils.isEmpty(androidCert)) {
String fp = getFingerprintHashForPackage();
androidCert = fp;
Log.d(TAG, "fp:" + fp);
}
httpHeaders.set(X_ANDROID_CERT, androidCert);
return httpHeaders;
}
static String getFingerprintHashForPackage() {
Context context = App.getApp();
byte[] hash;
try {
hash = AndroidUtilsLight.getPackageCertificateHashBytes(context, context.getPackageName());
if (hash == null) {
Log.e(TAG, "Could not get fingerprint hash for package: " + context.getPackageName());
return null;
}
return Hex.bytesToStringUppercase(hash, /* zeroTerminated= */ false);
} catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, "No such package: " + context.getPackageName(), e);
return null;
}
}
加完之后,还会提示密钥泄露了.
那么我尝试把密钥放到locale.properties里面,这样是从buildconfig.xxkey读取,还是不对,它始终是固定在代码里面的.
那么密钥泄露的意思应该是不能明文写在代码里面了.那我就从服务器里面获取.用接口去获取.然后就成功了.
有人用加密的方式,可能也可以,最重要的应该是不能用静态常量.狗检测能力相当强,会把像素不对,颜色对比度差都检测出报告