2016-01-21 112 views
7

我注意到在使用這兩個選項生成的apk之間的大小差異。Android Studio:建立APK之間的差異大小APK

爲什麼會發生這種情況?

隨着生成 - >構建APK選項:

MyProject的\應用\構建\輸出\ APK \ APP-debug.apk(尺碼2.997 KB)

隨着運行應用選項:

MyProject的\應用\構建\輸出\ APK \ APP-debug.apk(尺碼3.300 KB)

感謝。

回答

3

如果對Android Studio團隊構成issue,這可能會更好。我的猜測是你在Android Studio(AS)中使用​​。這將解釋更大的尺寸,因爲即時運行會爲已更改的代碼生成代理類。

編輯Run配置以使用gradle build構建,您應該能夠刪除額外的代碼......但是這會帶來更大的構建/部署時間......如果調試構建的大小對於然後你確定,但對於大多數情況下,這將毀了Android團隊最近對DSL做出的所有改進以提高速度

+0

是的,即時運行它增加了文件大小,謝謝! – seba123neo

4

構建APK是運行:app:assembleDebug Gradle任務的快捷方式(假設您的調試變體在中處於活動狀態構建變體窗口)。

運行應用程序時,我們首先詢問您想要定位哪個設備,然後將信息傳遞給Gradle。除此之外,這可以讓我們過濾掉不必要的資源。如果您啓用了即時運行功能,我們還會將其他代碼打包到APK中。

+0

是的,即時運行它增加了文件大小,謝謝! – seba123neo

+0

好的,那麼如何讓我的舊apk與縮小的尺寸,一次也包裝額外的代碼到APK中 –

4

我的即時運行已關閉。

我使用Run->Run 'App'使用了6MB的APK大小,使用Build->Build APK的11MB使用了簽名和未簽名的APK。 Build->Generate Signed APK...選項也爲我的應用程序提供了11MB APK。

我認爲Android Studio會放下一些資源以使構建速度更快。

11MB大小的APK有更多的資源,所以它會是更好的選擇上傳到遊戲商店。

我使用Build->Analyze Apk...來分析這兩個APK,所以我發現5.7MB的差異導致v4和v17庫中的一些額外的drawable。

enter image description here

6

當您通過建設 - 構建>生成APK,該APK將包含所有設備的所有資源。 即對於ldpi,mdpi,hdpi,xhdpi,xxhdpi,xxxhdpi。

但是,如果您在設備/模擬器上運行應用程序,它會檢測到手機的分辨率,並且只會將具有該分辨率的資源添加到apk文件中。例如,如果您的設備是xhdpi,它將放棄所有其他屏幕分辨率,並將只包含xhdpi資源。