欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Application not installed!可能是一个bug,关于SHA1-Digest Android 

程序员文章站 2022-06-06 16:43:31
...
我安装apk(sdk 2.2)的时候出现了这个错误:Application not installed!
上网搜索,这个问题的解决方案很多。但都不能解决我现在的问题。

logcat里面的情况是这样的:
引用

W/PackageParser(59): Exception reading res/drawable-mdpi/ic_launcher.png in /data/app/vmdl55069.tmp
W/PackageParser(59): java.lang.SecurityException: META-INF/MANIFEST.MF has invalid digest for res/drawable-mdpi/ic_launcher.png in /data/app/vmdl55069.tmp
W/PackageParser(59): ...
E/PackageParser(59): Package com.Afdaf has no certificates at entry res/drawable-mdpi/ic_launcher.png; ignoring!



于是将apk中的MANIFEST.MF取出来,根据上面错误“META-INF/MANIFEST.MF has invalid digest for res/drawable-mdpi/ic_launcher.png”,找到:
引用

Name: res/drawable-mdpi/ic_launcher.png
SHA1-Digest: 4ss2KZ3FzkmfE6HAAsVu0aJKx1U=


按照错误的提示,猜测问题的关键是这个png图片的SHA1-Digest不正确了。
于是自己写测试代码生成png图片的SHA1-Digest,看看对不对。代码如下:
public static void main(String[] args) throws NoSuchAlgorithmException, Exception {
	MessageDigest md = MessageDigest.getInstance("sha-1");
	FileInputStream in =  new FileInputStream("./ic_launcher.png");
	int bytes = 0;
	while ((bytes = in.read()) != -1) {
		md.update((byte)bytes);
	}
	in.close();
	byte[] thedigest = md.digest();
	System.out.println(Base64Encoder.encode(thedigest));
}

测试ic_launcher.png结果是“sjmKOs4BYDXg7COdeTc8tIfPBR0=”,确实与MANIFEST.MF文件中的不相符。
测试apk中的其他图片,SHA1-Digest则一致。

所以,可以猜测问题就是这里了,为什么ADT打包生成的SHA1-Digest会错误的呢?是不是bug?
这个问题搞不清了。因为无法访问官网,无法发帖求印证、提bug,所以到这边来把问题提出来,看有没有同学遇到类似问题?

对了,附件是个zip,当中有两个文件:1、ic_launcher.png 2、某网友apk

同学们可以测试,只要把该图片(附件中)放在res相关目录中,导出apk,安装时候就出此问题。

另外有网友发他的apk(附件中)给我,他说他测试发现没有问题。我表示怀疑,因为他的apk中的digest也是错误的,并且我测试有同样问题。同样请热心tx帮忙测试以求印证。
  • ks.zip (55 KB)
  • 下载次数: 21
相关标签: Android