【问题标题】:How do I re-sign a debug signed apk such that the mp3 files are not compressed?如何重新签署调试签名的 apk 以使 mp3 文件不被压缩?
【发布时间】: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

我无法使用我的密钥直接对其进行签名。尽管设置 &lt;sign&gt;&lt;debug&gt;false&lt;/debug&gt;&lt;/sign&gt; 在我的 android-maven-plugin 中使用 android 调试密钥进行签名。

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

【问题讨论】:

    标签: android maven jarsigner


    【解决方案1】:

    除了放在 Raw 里面,你可以把它放在 assets 文件夹中。要访问资产文件夹中的文件,您可以getAssets()

    例如,要获取 File 对象,您可以这样做:

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

    【讨论】:

    • 你最后缺少了一个 ')'。 (不能编辑,因为它少于 6 个字符)
    • 已修复。谢谢@Andreas :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 2012-02-23
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多