【发布时间】:2014-09-09 05:51:34
【问题描述】:
我的 res/raw/ 文件夹中有一些 mp3 文件,当它第一次使用 android 调试密钥签名时,与 apk 捆绑的 mp3 文件未压缩。
我通过输入 unzip -lv 来验证这一点,我得到了这个
1670 Stored 1670 0% 06-23-14 18:48 3b4b6017 res/raw/swipe.mp3
然后使用我拥有的 jarsigner 插件将它重新签名为构建作业的一部分 removeExistingSignatures 设置为 true 之后,当我运行 unzip -lv 时,mp3 的方法是 Defl:N 而不是 Stored(即它被压缩)
即使在重新签名后我也需要它处于存储状态,因为如果 mp3 文件被压缩,我会收到此错误
07-17 03:36:00.068 E/AndroidRuntime( 9487): FATAL EXCEPTION: AsyncTask #3
07-17 03:36:00.068 E/AndroidRuntime( 9487): android.content.res.Resources$NotFoundException: File res/raw/swipe.mp3 from drawable resource ID #0x7f060000
07-17 03:36:00.068 E/AndroidRuntime( 9487): at android.content.res.Resources.openRawResourceFd(Resources.java:982)
07-17 03:36:00.068 E/AndroidRuntime( 9487): at android.media.MediaPlayer.create(MediaPlayer.java:874)
07-17 03:36:00.068 E/AndroidRuntime( 9487): at <my_package_here>
07-17 03:36:00.068 E/AndroidRuntime( 9487): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
07-17 03:36:00.068 E/AndroidRuntime( 9487): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
07-17 03:36:00.068 E/AndroidRuntime( 9487): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
07-17 03:36:00.068 E/AndroidRuntime( 9487): at java.lang.Thread.run(Thread.java:856)
07-17 03:36:00.068 E/AndroidRuntime( 9487): Caused by: java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
我无法使用我的密钥直接对其进行签名。尽管设置
<sign><debug>false</debug></sign> 在我的 android-maven-plugin 中使用 android 调试密钥进行签名。
如何使用我的密钥直接签名?或者我如何重新签名以使 mp3 文件不被压缩?
【问题讨论】: