2016-05-19 81 views
4

有一天,我從一個正在開發的應用程序中檢查「App Info」,而我驚訝地發現有大量的Mb被用作「緩存」 (應用程序還沒有下載任何內容,它只是一個模型)。起初我以爲我可能會加入一些沉重的圖書館(壁畫..),所以我決定創建一個空白的項目,試圖找出問題所在。Gradle v1.x vs v2.x之間巨大的差異

我試過2種情況:前棒棒糖和棒棒糖。有了這個,我發現他們處理「數據」的方式有些不同,但是整體apk大小是一樣的。儘管在這裏,在棒棒糖(4.4.4)中,棒棒糖中幾乎沒有「緩存」(FIRST IMAGE)......以及8MB的「緩存」。

lollipop vs pre-lollipop - gradle 2.1

所有這一切是不夠的,因爲我已經在開發棒棒糖及以上的其他應用程序有辦法少「緩存」。我開始考慮可能是什麼區別,最後我想我已經找到了一些東西,gradle版本!

lollipop vs pre-lollipop - gradle 1.5

該項目建設有gradle這個1.5具有更小的尺寸APK,幾乎沒有「緩存」(包括棒棒糖和預棒棒糖)
有我丟失的東西?爲什麼「緩存」大小突然增加。
在使用最新的gradle版本時,有什麼方法可以避免這種情況嗎?

+1

您使用的是Android Studio嗎?如果是這樣,請嘗試再次運行您的測試,使用Android插件for Gradle 2.x,並使用Instant Run啓用和禁用,以比較兩種情況。我的猜測是你所看到的是即時運行的效果,而這並不能反映你的實際生產應用程序的行爲。 – CommonsWare

+0

**你絕對正確!!! **我認爲這可能是問題,但沒有檢查:P。 **謝謝** – iroyo

回答

1

即時運行會發送增量塊的應用程序,反映您對代碼所做的更改。這些東西仍然需要由您的應用程序加載,所以他們顯然會將這些信息放在某個位置,並將其計入「緩存」(getCacheDir()?)。

同樣,你的應用程序的主APK本身會更大,因爲它必須包含一段代碼,它知道如何加載這些動態變化的位。

如果您需要測量這些值,請禁用即時運行或運行發佈版本(該版本會自動爲非即時運行)。

相關問題