2014-10-22 44 views
5

我不知道是否有一種方法來定製google-play-services.jar如何自定義Google play服務以減少jar大小?

Google play services version 6.1

我發現,新版本有24K的方法,讓我的應用程序進行麥斯方法計數(〜65K),因此我無法創建APK文件(或DEX)。

在過去,我在某些網站上看到,您可以通過啓用/禁用 配置google-play-services.jar未使用的功能。

我的舊罐子重量是7K(而不是19K),我不能跳到24K,太膨脹。

有什麼建議嗎?

[編輯]

我發現this問題,其中@Eric Lafortune建議使用Proguard的

+0

您是否嘗試打開ProGuard? – Squeazer 2014-10-22 11:47:05

+0

@Squeazer是的,我想使用proGuard,但我記得在網站上我能夠檢查/取消選中帶有功能的標誌並下載定製的jar。今天找不到 – snaggs 2014-10-22 11:48:33

回答

4

牢記:

  • 使用ProGuard總是建議
  • MultiDex,儘管在運行時增加的開銷,是唯一可行的解​​決方案當你真的使用所有這些方法(很少有這種情況!)

I如果您使用的是Gradle,並且只是想自動排除您不使用的Play服務的部分,這是最簡單,最快和最有效的方式:https://gist.github.com/Takhion/10a37046b9e6d259bb31

只需按照建議添加它並在需要的部件上留言exclude

調試的sooo有用建立,你希望通過Proguard的,每次去;)

+0

如何運行你的腳本,謝謝? – snaggs 2014-10-25 13:28:49

+0

@fessy在同一個文件夾中添加'strip_play_services.gradle'如果你使用的是Proguard,那麼在你的''proguard- rules.txt'和你設置!現在重建和享受:) – Takhion 2014-10-25 18:42:47

+0

@Takhion這是可能的排除從谷歌播放服務庫項目的類?因爲我使用的不是Android studio的eclipse。 – Amarnath 2014-11-04 14:27:48

14

理想情況下,你應該使用ProGurad,但是你可以按照以下兩個步驟:

第1步:從jar文件中刪除未使用的類

打開google-play-services.jar使用zip文件管理器(例如Winrar或7zip)進行庫項目。你會發現很多文件夾,如maps, games,只刪除你不需要的文件夾。確保你保持common, dynamic, internal

第2步:從res文件夾

大部分在谷歌播放,services_lib \ res文件夾資源刪除未使用的資源可能是沒有用的,所以你可以將其刪除。這些包括values-af, values-am, ....你需要保留的是顏色,drawable, drawable-hdpivalues文件夾。

刷新並構建google-play-services_lib項目和您的項目。你的apk大小應該減少。

+0

非常感謝!這使我從[65k方法問題](https://developer.android.com/tools/building/multidex.html)中拯救了我! – qefzec 2015-11-05 18:49:12

+0

謝謝謝謝謝謝謝謝!我用65k方法問題撕掉了我的頭髮。這太棒了。 – Jamie 2016-03-30 04:14:53

+0

你可以讓我知道我可以刪除哪個文件夾我只需要gcm功能我不確定哪一個我可以刪除( – 2016-08-23 22:46:09

0

你的目標是android 2.3嗎?

如果不是,請使用MultiDex Support Library。

從這裏:Google+


MultiDex支持庫

所以,你的應用程序已經長得太大:你是在敏捷極限。也許你已經利用了一些非常有用的圖書館,可以減輕一些負擔(Google Play Services,我在看你)。你不得不求助於限制你的應用程序的功能或做出瘋狂的黑客來解決這個限制。沒有更多:歡迎MultiDexApplication!

MultiDexApplication,簡單的android-support-multidex的一部分。通過讓應用程序擴展MultiDexApplication或在應用程序的attachBaseContext中調用MultiDex.install(上下文),您可以在所有API 4+設備上獲得MultiDex支持(直到v21,您可以在本地獲得此內容)。而已。認真。

注意:你應該真的,真正的Proguard在進入Multidex兔子洞之前。

Link

4

在Android Studio中您可以使用各個庫從谷歌播放服務,如

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

這些行:

compile 'com.google.android.gms:play-services-maps:7.5.0' 
compile 'com.google.android.gms:play-services-ads:7.5.0' 
compile 'com.google.android.gms:play-services-analytics:7.5.0' 
compile 'com.google.android.gms:play-services-location:7.5.0' 

完整列表在這裏https://developers.google.com/android/guides/setup

某些API沒有單獨的庫;包括他們通過包括基礎庫