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,看看对不对。代码如下:
测试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帮忙测试以求印证。
上网搜索,这个问题的解决方案很多。但都不能解决我现在的问题。
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帮忙测试以求印证。