我正在尝试重新签名Android .apk。即它目前已经自签名,我希望用官方证书重新签名。
要做到这一点我
但是当我上传并运行.apk到移动设备时,它会在启动时崩溃。这是由以下错误引起的
Caused by: android.content.res.Resources$NotFoundException: File res/raw/my_file.wav from drawable resource ID #0x7f070002
Caused by: java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
当我检查控制台日志时,我可以看到zipalign正在压缩此文件
res/raw/my_file.wav (OK - compressed)
它应该这样做
res/raw/my_file.wav (OK)
如何获取zipalign不压缩我的.wav文件?根据这个答案,Android不应该压缩.wav文件。
在运行zipalign之前我也注意到了一个警告。即在我运行jarsigner之后出现
No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (2043-01-30) or after any future revocation date.
导致此消息出现的原因是什么?似乎很可能是相关的。
答案 0 :(得分:0)
在资源文件夹中打开压缩文件存在限制。这是因为未压缩文件可以直接内存映射到进程虚拟地址空间,因此避免再次需要相同数量的内存进行解压缩。 您可以阅读此article以获得参考资料。
答案 1 :(得分:0)
得到了同事的解决方案。基本上我不应该提取档案。为了解决这个问题,我做了以下
e.g。
7z d name.zip META-INF