Router
Router copied to clipboard
开启混淆后运行报错 java.lang.AbstractMethodError
使用的1.8.1版本,R8开启 项目中没有直接添加androidx.startup:startup-runtime依赖 查看External Libraries里使用的是androidx.startup:startup-runtime:1.1.1 应该是Jetpack库自动添加的
使用如下配置强制跟Router使用的1.1.0版本保持一直,编译安装后,仍然运行报错 configurations.all { resolutionStrategy{ force 'androidx.startup:startup-runtime:1.1.0' }
}
java.lang.RuntimeException: Unable to get provider androidx.startup.InitializationProvider: androidx.startup.StartupException: java.lang.AbstractMethodError: abstract method "java.util.List androidx.startup.Initializer.dependencies()" at android.app.ActivityThread.installProvider(ActivityThread.java:7215) at android.app.ActivityThread.installContentProviders(ActivityThread.java:6699) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6600) at android.app.ActivityThread.-wrap2(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066) at android.os.Handler.dispatchMessage(Handler.java:108) at android.os.Looper.loop(Looper.java:166) at android.app.ActivityThread.main(ActivityThread.java:7529) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
感谢反馈,我试下
测试没有发现这个问题,1.1.0和1.1.1都可以的。而且startup库是自带混淆的,如果你不放心,可以手动keep一下startup库的所有代码
抱歉,是AGP 7.2.1 的问题,降到7.1.3没问题了。
编译成功打开APP,但是路由跳转时会闪退。新建一个demo单独接入又没法复现。Google搜了一下应该是R8的bug,但是不知道是哪个类引起的,加了一条混淆过滤,暂时解决了。AGP的坑真的多
-keep class com.chenenyu.router.matcher.** { *; }
错误日志: java.lang.AbstractMethodError: abstract method "boolean p2.g.a(android.content.Context, android.net.Uri, java.lang.String, com.chenenyu.router.RouteRequest)" at o2.f.a(IntentProcessor.java:34) at m2.e.b(RealInterceptorChain.java:7) at o2.g.a(IntentValidator.java:9) at m2.e.b(RealInterceptorChain.java:7) at o2.c.a(BaseValidator.java:11) at m2.e.b(RealInterceptorChain.java:7) at m2.f.h(RealRouter.java:4) at m2.f.b(RealRouter.java:1)
出错的位置在com.chenenyu.router.matcher.Matcher接口的match方法