2015-09-13 35 views
1

有一個應用程序使用谷歌地圖API第2 構建簽名發佈APK,文件長度是太龐大了之後 我建「HELLOWORD」工程測量長度和添加google_play_services_lib項目 文件長度可達2.2 MB超過「HELLOWORD」 APK谷歌地圖API V2使APK比老版大尺寸

而且存儲庫和谷歌Play服務SKD經理已經更新。

我使用Android Studio IDE(Gradle)並導入所有google-play-services。 是否可以導入的一部分

+0

你使用的是Eclipse還是Android Studio? –

+0

你的依賴關係是怎樣的?您是否導入了所有的谷歌播放服務或只是其中的一部分? –

+0

@MarekSebera我將它全部導入到我的項目中。 – AndroSco

回答

2

假設你正在使用AS和搖籃爲構建腳本/依賴管理

要導入谷歌Play服務,您正在使用的依賴全是這樣的:

compile 'com.google.android.gms:play-services:7.8.0' 

,其中包括所有的服務資源,類,這是巨大的名單:

+--- com.google.android.gms:play-services:7.8.0 
| +--- com.google.android.gms:play-services-ads:7.8.0 
| | +--- com.google.android.gms:play-services-base:7.8.0 
| | | \--- com.android.support:support-v4:22.2.0 -> 22.2.1 
| | |   \--- com.android.support:support-annotations:22.2.1 
| | +--- com.google.android.gms:play-services-analytics:7.8.0 
| | | \--- com.google.android.gms:play-services-base:7.8.0 (*) 
| | \--- com.google.android.gms:play-services-appindexing:7.8.0 
| |   \--- com.google.android.gms:play-services-base:7.8.0 (*) 
| +--- com.google.android.gms:play-services-analytics:7.8.0 (*) 
| +--- com.google.android.gms:play-services-appindexing:7.8.0 (*) 
| +--- com.google.android.gms:play-services-appinvite:7.8.0 
| | \--- com.google.android.gms:play-services-base:7.8.0 (*) 
| +--- com.google.android.gms:play-services-appstate:7.8.0 
| | \--- com.google.android.gms:play-services-base:7.8.0 (*) 
| +--- com.google.android.gms:play-services-base:7.8.0 (*) 
| +--- com.google.android.gms:play-services-cast:7.8.0 
| | +--- com.google.android.gms:play-services-base:7.8.0 (*) 
| | \--- com.android.support:mediarouter-v7:22.2.0 
| |   \--- com.android.support:appcompat-v7:22.2.0 
| |    \--- com.android.support:support-v4:22.2.0 -> 22.2.1 (*) 
| +--- com.google.android.gms:play-services-drive:7.8.0 
| | \--- com.google.android.gms:play-services-base:7.8.0 (*) 
| +--- com.google.android.gms:play-services-fitness:7.8.0 
| | +--- com.google.android.gms:play-services-base:7.8.0 (*) 
| | \--- com.google.android.gms:play-services-location:7.8.0 
| |   +--- com.google.android.gms:play-services-base:7.8.0 (*) 
| |   \--- com.google.android.gms:play-services-maps:7.8.0 
| |    \--- com.google.android.gms:play-services-base:7.8.0 (*) 
| +--- com.google.android.gms:play-services-games:7.8.0 
| | +--- com.google.android.gms:play-services-base:7.8.0 (*) 
| | \--- com.google.android.gms:play-services-drive:7.8.0 (*) 
| +--- com.google.android.gms:play-services-gcm:7.8.0 
| | \--- com.google.android.gms:play-services-base:7.8.0 (*) 
| +--- com.google.android.gms:play-services-identity:7.8.0 
| | \--- com.google.android.gms:play-services-base:7.8.0 (*) 
| +--- com.google.android.gms:play-services-location:7.8.0 (*) 
| +--- com.google.android.gms:play-services-maps:7.8.0 (*) 
| +--- com.google.android.gms:play-services-nearby:7.8.0 
| | \--- com.google.android.gms:play-services-base:7.8.0 (*) 
| +--- com.google.android.gms:play-services-panorama:7.8.0 
| | \--- com.google.android.gms:play-services-base:7.8.0 (*) 
| +--- com.google.android.gms:play-services-plus:7.8.0 
| | \--- com.google.android.gms:play-services-base:7.8.0 (*) 
| +--- com.google.android.gms:play-services-safetynet:7.8.0 
| | \--- com.google.android.gms:play-services-base:7.8.0 (*) 
| +--- com.google.android.gms:play-services-vision:7.8.0 
| | \--- com.google.android.gms:play-services-base:7.8.0 (*) 
| +--- com.google.android.gms:play-services-wallet:7.8.0 
| | +--- com.google.android.gms:play-services-base:7.8.0 (*) 
| | +--- com.google.android.gms:play-services-identity:7.8.0 (*) 
| | \--- com.google.android.gms:play-services-maps:7.8.0 (*) 
| \--- com.google.android.gms:play-services-wearable:7.8.0 
|   \--- com.google.android.gms:play-services-base:7.8.0 (*) 

要縮小,你有三種選擇:

  • 僅添加它的一部分,你需要,例如。 com.google.android.gms:play-services-maps:7.8.0
  • 排除部分你不想

這樣的:

compile('com.google.android.gms:play-services:7.8.0') { 
    exclude module: 'play-services-fitness' 
    exclude module: 'play-services-games' 
    exclude module: 'play-services-wallet' 
    exclude module: 'play-services-safetynet' 
    exclude module: 'play-services-appinvite' 
    exclude module: 'play-services-wearable' 
    exclude module: 'play-services-cast' 
} 
  • 或者使用Proguard的(minifyEnabled),這應該從產生的APK資源和類,不屬於修剪使用或者改爲
+0

謝謝APK的大小下降到3.72 Mb從5.1 Mb – AndroSco

+1

也可以解壓縮最終APK,看看最大的部分。如果它的'classes.dex'文件,你應該嘗試proguard縮小,請參閱:https://sites.google.com/a/android.com/tools/tech-docs/new-build-system/resource-shrinking –