启用Proguard后,将Play服务从8.1更新到8.3 [英] Updating Play services from 8.1 to 8.3 with Proguard enabled
问题描述
这是我改变的:
在根gradle文件中:
依赖关系{
classpath'com.android.tools.build:gradle:1.5.0-beta1'
classpath'com.google.gms:google-services:1.5.0-beta2'
}
在应用程序gradle文件中:
compile'com.google.android.gms:play-services-maps:8.3.0'
compile'com.google.android.gms:play -services-location:8.3.0'
compile'com.google.android.gms:play-services-base:8.3.0'
compile'com.google.android.gms:play-services -gcm:8.3.0'
compile'com.google.android.gms:play-services-analytics:8.3.0'
compile'com.google.android.gms:play-services-appinvite :8.3.0'
compile'com.google.android.gms:play-services-ads:8.3.0'
compile'com.google.android.gms:play-services-appindexing:8.3 .0'
它构建得很好,但它在启动时崩溃stack trace:
11-06 17:30:17.460 2895-2895 / app.example.debug E / AndroidRuntime:java。 lang.RuntimeException:无法获取提供者com.google.android.gms.measurement.AppMeasurementContentProvider:java.lang.ClassNotFoundException:在路径中未找到类com.google.android.gms.measurement.AppMeasurementContentProvider:DexPathList [[ zip文件/system/framework/android.test.runner.jar,zip文件/data/app/app.example.debug-1/base.apk\"],nativeLibraryDirectories=[/data/app/app.example .debug-1 / lib / arm,/ vendor / lib,/ system / lib]]
11-06 17:30:17.460 2895-2895 / app.example.debug E / AndroidRuntime:在android.app。 ActivityThread.installProvider(ActivityThread.java:5156)
11-06 17:30:17.460 2895-2895 / app.example.debug E / AndroidRuntime:在android.app.ActivityThread.installContentProviders(ActivityThread.java:4748)
11-06 17:30:17.460 2895-2895 / app.example.debug E / AndroidRuntime:在android.app.ActivityThread.handleBindApplicatio n(ActivityThread.java:4688)
11-06 17:30:17.460 2895-2895 / app.example.debug E / AndroidRuntime:android.app.ActivityThread.-wrap1(ActivityThread.java)
11-06 17:30:17.460 2895-2895 / app.example.debug E / AndroidRuntime:在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1405)
11-06 17:30: 17.460 2895-2895 / app.example.debug E / AndroidRuntime:在android.os.Handler.dispatchMessage(Handler.java:102)
11-06 17:30:17.460 2895-2895 / app.example.debug E / AndroidRuntime:在android.os.Looper.loop(Looper.java:148)
11-06 17:30:17.460 2895-2895 / app.example.debug E / AndroidRuntime:在android.app.ActivityThread .main(ActivityThread.java:5417)
11-06 17:30:17.460 2895-2895 / app.example.debug E / AndroidRuntime:在java.lang.reflect.Method.invoke(Native Method)
11-06 17:30:17.460 2895-2895 / app.example.debug E / AndroidRuntime:at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726)
11-06 17:30:17.460 2895-2895 / app.example.debug E / AndroidRuntime:在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
我们启用了proguard,通常在我们构建的apk中有大约50 / 55k的方法。 所有播放服务依赖于版本8.1.0 任何想知道那里发生了什么? 编辑 这是我们的proguard文件: 更新您的 添加到刚发布的版本中 I tried to update play services to 8.3.
Here's what I changed : In the root gradle file : And in the app gradle file : It's building fine, but it crashes on launch with the following stack trace : We have proguard enabled, and usually have about 50/55k methods in our built apk.
But with this setup, we get 26k. Our original configuration was With all the play services dependencies with version 8.1.0 Any idea about what's going on there? EDIT Here's our proguard file :
Update your to the just released
这篇关于启用Proguard后,将Play服务从8.1更新到8.3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
但是通过这个设置,我们得到了26k。
我们原来的配置是
pre> classpath'com.android.tools.build:gradle:1.3.0'
classpath'com.google.gms:google-services:1.4.0-beta3'
code>
#将保留行号和文件名模糊处理
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
-optimizations!code / allocation / variable
-dontwarn javax.mail。**
-dontwarn javax.management。**
-dontwarn javax .rmi。**
-dontwarn javax.naming。**
-dontwarn javax.transaction。**
-dontwarn javax.persistence。**
-dontwarn java.lang .management **
-dontwarn java.lang.instrument。**
-dontwarn org.slf4j。**
-dontwarn org.json。**
-keep class org.apache。**
-dontwarn org.apache。**
-keep class org.apache。 http。** {*; }
-dontwarn org.apache.http。**
-dontwarn org.springframework。**
-dontwarn sun.misc.Unsafe
-dontwarn com.google.gwt。**
#允许模糊android.support.v7.internal.view.menu。**
#以避免三星问题4.2.2带有appcompat v21
#的设备请参阅https://code.google.com/p/android/issues/detail?id=78377
-keep class!android.support.v7.internal。 view.menu。* MenuBuilder *,android.support.v7。** {*; }
-keep interface android.support.v7。** {*; }
#布局Twitter工具包的配置
#请参阅:https://dev.twitter.com/twitter-kit/android/integrate
-dontwarn com .squareup.okhttp。**
-twtwarn com.google.appengine.api.urlfetch。**
-twtwarn rx。**
-twtwarn retrofit。**
- keepattributes签名
-keepattributes *注释*
-keep class com.squareup.okhttp。** {*; }
-keep interface com.squareup.okhttp。** {*; }
-keep class retrofit。** {*; }
-keepclasseswithmembers class * {
@ retrofit.http。* *;
}
#使用GSON @Expose注解
-keepattributes *注解*
-keepattributes EnclosingMethod
#Gson特定的类
-keep class sun.misc.Unsafe {*; }
-keep class com.google.gson.stream。** {*; }
#分支
-keep class com.google.android.gms.ads.identifier。** {*; }
#OkHttp
- dontwarn rx。**
- dontwarn okio。**
--dontwarn com .squareup.okhttp。**
-keep class com.squareup.okhttp。** {*; }
-keep interface com.squareup.okhttp。** {*; }
-twtwarn翻新。**
-twtwarn retrofit.appengine.UrlFetchClient
- 保留类翻新。** {*; }
-keepclasseswithmembers class * {
@ retrofit.http。*< methods>;
}
#LeakCanary
-keep class org.eclipse.mat。** {*; }
-keep class com.squareup.leakcanary。** {*; }
-dontwarn com.squareup.leakcanary.DisplayLeakService
$ b #Intercom
-twtwarn对讲。**
-twtwarn io.intercom。**
#Eventbus
-keepclassmembers class ** {
public void onEvent *(**);
}
-keep class com.google.appengine.api.datastore.Text {*; }
classpath'com.google.gms:google-services:1.5.0-beta2'
classpath'com.google.gms:google -services:1.5.0'
dependencies {
classpath 'com.android.tools.build:gradle:1.5.0-beta1'
classpath 'com.google.gms:google-services:1.5.0-beta2'
}
compile 'com.google.android.gms:play-services-maps:8.3.0'
compile 'com.google.android.gms:play-services-location:8.3.0'
compile 'com.google.android.gms:play-services-base:8.3.0'
compile 'com.google.android.gms:play-services-gcm:8.3.0'
compile 'com.google.android.gms:play-services-analytics:8.3.0'
compile 'com.google.android.gms:play-services-appinvite:8.3.0'
compile 'com.google.android.gms:play-services-ads:8.3.0'
compile 'com.google.android.gms:play-services-appindexing:8.3.0'
11-06 17:30:17.460 2895-2895/app.example.debug E/AndroidRuntime: java.lang.RuntimeException: Unable to get provider com.google.android.gms.measurement.AppMeasurementContentProvider: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.measurement.AppMeasurementContentProvider" on path: DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file "/data/app/app.example.debug-1/base.apk"],nativeLibraryDirectories=[/data/app/app.example.debug-1/lib/arm, /vendor/lib, /system/lib]]
11-06 17:30:17.460 2895-2895/app.example.debug E/AndroidRuntime: at android.app.ActivityThread.installProvider(ActivityThread.java:5156)
11-06 17:30:17.460 2895-2895/app.example.debug E/AndroidRuntime: at android.app.ActivityThread.installContentProviders(ActivityThread.java:4748)
11-06 17:30:17.460 2895-2895/app.example.debug E/AndroidRuntime: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4688)
11-06 17:30:17.460 2895-2895/app.example.debug E/AndroidRuntime: at android.app.ActivityThread.-wrap1(ActivityThread.java)
11-06 17:30:17.460 2895-2895/app.example.debug E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
11-06 17:30:17.460 2895-2895/app.example.debug E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102)
11-06 17:30:17.460 2895-2895/app.example.debug E/AndroidRuntime: at android.os.Looper.loop(Looper.java:148)
11-06 17:30:17.460 2895-2895/app.example.debug E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5417)
11-06 17:30:17.460 2895-2895/app.example.debug E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
11-06 17:30:17.460 2895-2895/app.example.debug E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
11-06 17:30:17.460 2895-2895/app.example.debug E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
classpath 'com.android.tools.build:gradle:1.3.0'
classpath 'com.google.gms:google-services:1.4.0-beta3'
# will keep line numbers and file name obfuscation
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
-optimizations !code/allocation/variable
-dontwarn javax.mail.**
-dontwarn javax.management.**
-dontwarn javax.rmi.**
-dontwarn javax.naming.**
-dontwarn javax.transaction.**
-dontwarn javax.persistence.**
-dontwarn java.lang.management.**
-dontwarn java.lang.instrument.**
-dontwarn org.slf4j.**
-dontwarn org.json.**
-keep class org.apache.**
-dontwarn org.apache.**
-keep class org.apache.http.** { *; }
-dontwarn org.apache.http.**
-dontwarn org.springframework.**
-dontwarn sun.misc.Unsafe
-dontwarn com.google.gwt.**
# Allow obfuscation of android.support.v7.internal.view.menu.**
# to avoid problem on Samsung 4.2.2 devices with appcompat v21
# see https://code.google.com/p/android/issues/detail?id=78377
-keep class !android.support.v7.internal.view.menu.*MenuBuilder*, android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }
# Configuration for Fabric Twitter Kit
# See: https://dev.twitter.com/twitter-kit/android/integrate
-dontwarn com.squareup.okhttp.**
-dontwarn com.google.appengine.api.urlfetch.**
-dontwarn rx.**
-dontwarn retrofit.**
-keepattributes Signature
-keepattributes *Annotation*
-keep class com.squareup.okhttp.** { *; }
-keep interface com.squareup.okhttp.** { *; }
-keep class retrofit.** { *; }
-keepclasseswithmembers class * {
@retrofit.http.* *;
}
# For using GSON @Expose annotation
-keepattributes *Annotation*
-keepattributes EnclosingMethod
# Gson specific classes
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }
# Branch
-keep class com.google.android.gms.ads.identifier.** { *; }
# OkHttp
-dontwarn rx.**
-dontwarn okio.**
-dontwarn com.squareup.okhttp.**
-keep class com.squareup.okhttp.** { *; }
-keep interface com.squareup.okhttp.** { *; }
-dontwarn retrofit.**
-dontwarn retrofit.appengine.UrlFetchClient
-keep class retrofit.** { *; }
-keepclasseswithmembers class * {
@retrofit.http.* <methods>;
}
# LeakCanary
-keep class org.eclipse.mat.** { *; }
-keep class com.squareup.leakcanary.** { *; }
-dontwarn com.squareup.leakcanary.DisplayLeakService
#Intercom
-dontwarn intercom.**
-dontwarn io.intercom.**
#Eventbus
-keepclassmembers class ** {
public void onEvent*(**);
}
-keep class com.google.appengine.api.datastore.Text { *; }
classpath 'com.google.gms:google-services:1.5.0-beta2'
classpath 'com.google.gms:google-services:1.5.0'