2017-08-09 153 views
1

Apple在https://developer.apple.com/library/content/qa/qa1795/_index.html中提到它們在爲開發部署導出時生成的壓縮應用程序小於人們實際從應用程序商店下載的應用程序,因爲在壓縮之前它們加密應用有效負載。估算iOS應用程序在應用程序商店中的大小

首先,他們爲什麼不在壓縮之前加密,而不是在加密前進行壓縮?它似乎將應用程序的大小增加了90%。

其次,有沒有辦法讓我模擬Apple所做的工作,以便我可以估計它會有多大,以及它是否會超過100MB的WWAN下載限制?

+0

請按照您發佈的鏈接中的步驟*獲取應用程序大小報告* – nathan

+0

注意:此報告不考慮加密App Store應用程序,請參閱iOS App Store特定注意事項以獲取更多信息。 – meisel

+0

我知道,但這是儘可能準確,因爲你可以從你的mac得到 – nathan

回答

2

首先:加密的結果與隨機數據不可區分。壓縮依賴於重複的序列。由於隨機數據沒有重複序列,因此它是不可壓縮的。因此加密數據不會被壓縮。

其次:Apple對代碼部分進行加密並且不進行壓縮。模擬Apple所做的:只壓縮非代碼部分,添加代碼部分並檢查大小。這應該是接近的。 (不需要加密代碼,加密不會改變大小。)

從SAI Peregrinus on Cryptography:Compress then Encrypt將減小密文的大小,但會破壞安全性。壓縮,然後加密可以安全地存儲靜態數據。有關更多詳細信息,請參閱關聯答案

+0

爲什麼他們不會在加密前壓縮代碼? – meisel

+0

只有代碼是加密的資源不是。 .app軟件包包含資源和編譯的代碼,只有代碼被加密。這與一些元文件相結合,這些元文件被壓縮爲一個用.ipa擴展名重新命名的zip文件。代碼的整體壓縮也是壓縮的。 \t 查看蘋果技術問答QA1795 [減小Apple的尺寸(https://developer.apple.com/library/content/qa/qa1795/_index.html)。 – zaph

+0

我知道只有代碼是加密的,但我不明白爲什麼它不能在加密步驟之前進行壓縮,從本質上說,這是兩全其美的。 – meisel

0

由於多種原因,App Store中列出的「大小」可能因不同設備而不同:應用程序細化,壓縮等,只要您的應用程序的壓縮大小小於100 MB(大小爲實際數據下載)。 所以,你不應該擔心解壓縮後的應用程序大小,因爲它通常不考慮通過蜂窩連接下載應用程序。

您的用戶應該能夠通過蜂窩連接下載它。但是請注意,如果用戶的設備有足夠的磁盤空間用於「下載大小」,而不是「安裝大小」,則它們將無法安裝該應用程序,因爲設備上沒有足夠的空間來解開它。

相關問題