我想知道是否有办法自定义google-play-services.jar
。
Google play services version 6.1
我发现新版本有24K方法,使我的应用程序超出Max方法计数(~65K),因此我无法创建APK文件(或DEX)。
过去我在某个网站上看到您可以通过启用/禁用来配置google-play-services.jar
未使用的功能
我的旧罐子重量是7K(而不是19K),我不能跳到24K,太膨胀了。
有什么建议吗?
[编辑]
我发现 this 问题@Eric Lafortune
建议使用Proguard
答案 0 :(得分:14)
理想情况下,您应该使用ProGurad,但是您可以按照以下两个步骤操作:
第1步:从jar文件中删除未使用的类
使用zip文件管理器(如Winrar或7zip)打开库项目中的 google-play-services.jar 。您会找到许多文件夹,例如maps, games
,只需删除您不需要的文件夹。请务必保留common, dynamic, internal
。
第2步:从res文件夹中删除未使用的资源
google-play-services_lib \ res文件夹中的大多数资源可能没用,因此您可以删除它。其中包括values-af, values-am,
....您需要保留的是颜色,drawable, drawable-hdpi
和values
文件夹。
刷新并构建 google-play-services_lib 项目和项目。你的apk大小应该减少。
答案 1 :(得分:5)
在Android Studio中您可以使用Google播放服务中的单个库,例如
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没有单独的库;通过包含基础库来包含它们
答案 2 :(得分:4)
请记住:
如果您使用的是Gradle,并且只想自动排除您不使用的Play服务部分,这是最简单,最快速,最有效的方式:https://gist.github.com/Takhion/10a37046b9e6d259bb31。
只需按照建议添加,然后对{strong>需要的部分exclude
发表评论!
对于调试构建非常有用,你不希望每次都能通过Proguard;)
答案 3 :(得分:0)
你是否以android 2.3为目标?
如果没有,请使用MultiDex支持库。
从这里开始:Google+。
MultiDex支持库
所以你的应用程序变得太大了:你超过了Dex限制。也许你已经利用了那些可能会失去一些重量的一些非常有用的库(谷歌播放服务,我看着你)。您不得不诉诸于限制应用程序的功能或做出疯狂的黑客来解决限制。不再:欢迎使用MultiDexApplication!
MultiDexApplication是sdk\extras\android\support\multidex\library\libs
中的一个简单的android-support-multidex.jar的一部分,通过让你的应用程序为你提供所有API 4+设备的MultiDex支持(好吧,直到v21,你可以在这里得到它)扩展MultiDexApplication或在应用程序的attachBaseContext中调用MultiDex.install(context)。就是这样。严重。
注意:在走下Multidex兔子洞之前,你应该真的,真的是Proguard。