谷歌播放服务显示使用proguard后找不到类

时间:2016-08-29 18:00:59

标签: android google-play-services proguard

我正在使用

compile 'com.google.android.gms:play-services-maps:9.4.0'
compile 'com.google.android.gms:play-services-location:9.4.0'
compile 'com.google.android.gms:play-services-places:9.4.0'
compile 'com.google.android.gms:play-services-analytics:9.4.0'

official docs说:

  

ProGuard指令包含在Play服务客户端库中   保留所需的类。 Gradle的Android插件   自动将ProGuard配置文件附加到AAR(Android   ARchive)包并将该包附加到您的ProGuard   组态。在项目创建期间,Android Studio会自动生成   创建ProGuard配置文件和build.gradle属性   用于ProGuard。要在Android Studio中使用ProGuard,您必须启用   build.gradle buildTypes中的ProGuard设置。更多   有关信息,请参阅ProGuard指南。

但是,在使用proguard而不保留任何游戏服务的类时,我得到以下异常:

  

引起:java.lang.ClassNotFoundException:没找到类   " com.google.android.gms.location.places.ui.SupportPlaceAutocompleteFragment"

然后我通过添加:

来解决这个问题
-keep class com.google.android.gms.** { *; }

它完美无缺,但不幸的是,apk大小现在增加了1MB 。 它不仅仅是关于SupportPlaceAutocompleteFragment,如果我使用这些库而不保持它们的类,即使GCM和getLocation功能也停止工作。

我觉得我做错了,因为官方文档坚持不添加游戏服务的proguard规则。请帮忙。

0 个答案:

没有答案