vanilla Android rom(AOSP)不包含Google Apps。如果我从其他来源下载Google Apps,我该如何验证它是否未被篡改?
答案 0 :(得分:3)
每个apk都使用发布密钥签名。如果apk被解编译并重新编译,则必须使用不同的发布密钥对新apk进行签名(因为每个发布密钥都需要一个只有开发人员/公司知道的密码)。因此,您可以通过检查密钥的sha1来验证apk的真实性。希望它有所帮助
编辑: 您必须使用Web服务来验证应用程序的有效性(就像facebook所做的那样)
使用以下代码以编程方式获取密钥哈希。验证两个值是否相同。
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.play.fabin", //Replace your package name here
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA1");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
System.out.println("key hash = " + Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
希望它可以帮助你..