Meituan-Dianping / Robust

Robust is an Android HotFix solution with high compatibility and high stability. Robust can fix bugs immediately without a reboot.
Apache License 2.0
4.42k stars 807 forks source link

glide 冲突 #270

Open liufsd opened 6 years ago

liufsd commented 6 years ago
异常类型:app运行时异常

Robust版本:0.4.82

Gradle版本:2.14.1

系统:如:Mac

assembleRelase编译通过,但是run起来之后crash了的,发现图片都没有显示出来。日志如下:

java.lang.IllegalStateException: You cannot call Glide.get() in registerComponents(), use the provided Glide instance instead

在没有接入robust的前一个我们自己的git commit是可以的。 robust.xml 里面也配置了的:

   <exceptPackname name="exceptPackage">
         <name>com.bumptech.glide</name>

proguard

 ##---------------------------  glide ---------------------------
-keep class com.bumptech.glide.GeneratedAppGlideModuleImpl { *; }
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.module.AppGlideModule { *; }
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
  **[] $VALUES;
  public *;
}
##---------------------------  glide ---------------------------
liufsd commented 6 years ago

没有开启patch插件的情况下, debug 包是好的。release包不行。所以看着像是混淆导致的。然而在前一个没接入robust的commit上是正常的,所以是robust和混淆之间出了什么问题么?

liufsd commented 6 years ago

发现不用glideApp的方式就没问题,所以是apt生成的时候有问题咯???

hedex commented 6 years ago

可以看看你出问题的apk吗?

liufsd commented 6 years ago

@hedex 我邮件给你???

liufsd commented 6 years ago
W/System.err(  414): java.lang.IllegalStateException: You cannot call Glide.get() in registerComponents(), use the provided Glide instance instead
W/System.err(  414):    at o.ເ.ॱ(:172)
W/System.err(  414):    at o.ເ.ˏ(:160)
W/System.err(  414):    at o.cbo.ॱ(:61)
W/System.err(  414):    at o.aue.ˋ(:253)
W/System.err(  414):    at o.aue.ˊ(:125)
W/System.err(  414):    at o.blq.ˏ(:53)
W/System.err(  414):    at o.abb.ʻ(:257)
W/System.err(  414):    at o.abb.ˏ(:198)
W/System.err(  414):    at com.hujiang.cctalk.activity.MainApplication$3.run(:59)
W/System.err(  414):    at com.hujiang.cctalk.activity.MainApplication.onCreate(:104)
W/System.err(  414):    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1014)
W/System.err(  414):    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4852)
W/System.err(  414):    at android.app.ActivityThread.access$1900(ActivityThread.java:163)
W/System.err(  414):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1440)
W/System.err(  414):    at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err(  414):    at android.os.Looper.loop(Looper.java:137)
W/System.err(  414):    at android.app.ActivityThread.main(ActivityThread.java:5595)
W/System.err(  414):    at java.lang.reflect.Method.invoke(Native Method)
W/System.err(  414):    at java.lang.reflect.Method.invoke(Method.java:372)
W/System.err(  414):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
W/System.err(  414):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
liufsd commented 6 years ago

apk地址: https://fox-1256439113.cos.ap-shanghai.myqcloud.com/cctalk-hujiang-release.apk

liufsd commented 6 years ago
W/System.err(13218): java.lang.IllegalStateException: GeneratedAppGlideModuleImpl is implemented incorrectly. If you've manually implemented this class, remove your implementation. The Annotation processor will generate a correct implementation.
W/System.err(13218):    at o.ເ.ॱˊ(:267)
W/System.err(13218):    at o.ເ.ˊ(:194)
W/System.err(13218):    at o.ເ.ॱ(:176)
W/System.err(13218):    at o.ເ.ˏ(:160)
W/System.err(13218):    at o.bpm.ʽ(:92)
W/System.err(13218):    at o.bpm.ˊ(:44)
W/System.err(13218):    at o.aue.ˏ(:253)
W/System.err(13218):    at o.aue.ॱ(:125)
W/System.err(13218):    at o.blq.ˋ(:53)
W/System.err(13218):    at o.abb.ʼ(:257)
W/System.err(13218):    at o.abb.ˋ(:198)
W/System.err(13218):    at com.hujiang.cctalk.activity.MainApplication$3.run(:59)
W/System.err(13218):    at com.hujiang.cctalk.activity.MainApplication.onCreate(:104)
W/System.err(13218):    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1014)
W/System.err(13218):    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4852)
W/System.err(13218):    at android.app.ActivityThread.access$1900(ActivityThread.java:163)
W/System.err(13218):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1440)
W/System.err(13218):    at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err(13218):    at android.os.Looper.loop(Looper.java:137)
W/System.err(13218):    at android.app.ActivityThread.main(ActivityThread.java:5595)
W/System.err(13218):    at java.lang.reflect.Method.invoke(Native Method)
W/System.err(13218):    at java.lang.reflect.Method.invoke(Method.java:372)
W/System.err(13218):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
W/System.err(13218):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
W/System.err(13218): Caused by: java.lang.IllegalAccessException: com.bumptech.glide.GeneratedAppGlideModuleImpl() is not accessible from class o.ເ
I/System.out(13218): [CDS]rx timeout:10000
I/System.out(13218): [CDS]rx timeout:10000
W/System.err(13218):    at java.lang.Class.newInstance(Class.java:1603)
W/System.err(13218):    at o.ເ.ॱˊ(:253)
W/System.err(13218):    ... 23 more
W/abb     (13218): ʼ():257->cboonSyncInit Exception
liufsd commented 6 years ago

其实应该是这句话导致的:

W/System.err(13218): Caused by: java.lang.IllegalAccessException: com.bumptech.glide.GeneratedAppGlideModuleImpl() is not accessible from class o.ເ
I/System.out(13218): [CDS]rx timeout:10000
I/System.out(13218): [CDS]rx timeout:10000
W/System.err(13218):    at java.lang.Class.newInstance(Class.java:1603)
W/System.err(13218):    at o.ເ.ॱˊ(:253)
W/System.err(13218):    ... 23 more

is not accessible from class o.ເ 导致没办法初始化。所以crash了的。 是跟混淆有关的。 o.ເ 这个对应的是Glide这个类。 请问你们对注解这一块有干扰么?

zjz930829 commented 5 years ago

请问解决了吗?

liufsd commented 5 years ago

@zjz930829 没有, 你也遇到了的啊?

zjz930829 commented 5 years ago

@liufsd 是的,使用glide的时候,不用AppGlideModule,混淆打包没问题,用了annotationProcessor 'com.github.bumptech.glide:compiler:xxx'这个之后,混淆打包就出问题了,就是try catch走catch了。

liufsd commented 5 years ago

@zjz930829 有点坑 @hedex 有进展么?

zjz930829 commented 5 years ago

@liufsd 刚刚弄了下,好像问题解决了,直接在混淆文件里加这个,-keep class com.bumptech.glide.*{;},保持整个glide包下的类,你试试

liufsd commented 5 years ago

我好像之前这么做了,当觉得不好,因为没有研究二者为什么会有影响呢