我的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文件不被压缩?
答案 0 :(得分:1)
将其放入Raw内部,您可以将其放在assets文件夹中。要从资产文件夹访问文件,您可以getAssets()。
例如,要获取File对象,您可以执行以下操作:
File f = new File(getAssets().open("music/something.mp3"));