2016-03-07 88 views
0

我正在嘗試重新簽署Android .apk。即現在是自簽名的,我希望用官方證書重新簽名。防止zipalign壓縮.wav文件

要做到這一點,我

  1. 下載構建歸檔
  2. 從name.apk重命名爲name.zip
  3. 解壓縮ZIP
  4. 刪除META-INF
  5. 郵編備份目錄
  6. 將.zip重命名爲.apk
  7. 將.apk簽名爲官方密鑰庫使用的jarsigner
  8. 運行的zipalign對.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文件。

FileReader csv : FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed

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

打開assets文件夾中的壓縮文件是有限制的。這是因爲未壓縮的文件可以直接存儲器映射到進程虛擬地址空間,因此避免再次需要相同數量的內存進行解壓縮。 你可以閱讀這article hava參考。

+0

但我怎麼能避免壓縮正式密鑰庫?現有的版本不會壓縮wav文件,我希望這樣做? –

0

得到了工作同事的解決方案。基本上我不應該提取檔案。要解決此我做了以下

  1. 下載構建歸檔
  2. 從name.apk重命名爲從name.zip

例如name.zip

  • 刪除META-INF

    7z d name.zip META-INF 
    
  • 將.zip重命名回的apk
  • 簽署。APK使用的jarsigner
  • 運行的zipalign對簽署的apk