簡體   English   中英

從本機代碼訪問apk中的壓縮文件(從zip內部讀取zip)

[英]Accessing a compressed file in an apk from native code (read a zip from inside a zip)

的背景:

在嘗試使我的應用程序的代碼庫(C / C ++)更具可移植性時,我想盡量減少使用android的本機AAssetManager並切換到libzip以從APK加載資源。 我看了一下libzip; 將它合並到項目中 - 並且 - 看哪 - 我可以使用libzip直接從APK中讀取我的文件。

現在,我想混淆我的資產(或者至少讓它們訪問它們非常重要),所以我想我會將它們打包成一個加密的zip存檔並在APK中包含該存檔(基本上是一個zip壓縮的郵政編碼) )。

我的問題:

使用本機代碼直接從APK中訪問存檔中文件的最簡單/最有效的方法是什么?

我希望有類似於libzip的方法,我可以簡單地指定一個文件名,然后獲得一個帶有未壓縮數據的緩沖區。

我嘗試使用libzip直接從APK中打開壓縮存檔,但我現在空了......看來libzip只會使用目錄而不是內存中的緩沖區打開一個zip文件(這就是我有)。

我認為zlib是一個明顯的選擇,但我承認我不知道如何去做。

我還考慮過從APK復制存檔,但我想浪費盡可能少的空間(很多資產==大檔案)。 單獨下載資產也是我想避免的。

歡迎提供有用的建議或指示。

從你的問題來看,聽起來你已經過去了你的APK中的資產流,所以我會跳到這個:正如你所說,zlib是一個明顯的選擇。 網上有大量的例子可以處理內存流。 例如, In Memory Decompression:GZIP 使用zlib,您還可以通過NDK獲得它的好處(例如,您不需要自己構建和鏈接)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM