如何重新签名调试签名的apk,以便不压缩mp3文件?

时间:2014-07-18 07:06:21

标签: android maven jarsigner

我的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

我无法直接使用我的密钥签名。尽管有所设定 我的android-maven-plugin中的<sign><debug>false</debug></sign>用android调试密钥签名。

我如何直接用我的钥匙签名?或者我如何重新签名以使mp3文件不被压缩?

1 个答案:

答案 0 :(得分:1)

将其放入Raw内部,您可以将其放在assets文件夹中。要从资产文件夹访问文件,您可以getAssets()

例如,要获取File对象,您可以执行以下操作:

File f = new File(getAssets().open("music/something.mp3"));