论坛首页 移动开发技术论坛

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

浏览 4831 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-05-18  
我安装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
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics