如何自定义Google play服务以减少jar大小?

问题描述:

我不知道是否有一种方法来定制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

牢记:

  • 使用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

理想情况下,你应该使用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

你的目标是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

在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没有单独的库;包括他们通过包括基础库