alibaba / ARouter

💪 A framework for assisting in the renovation of Android componentization (帮助 Android App 进行组件化改造的路由框架)
Apache License 2.0
14.42k stars 2.59k forks source link

关于ARouter init 初始化问题-多flavor #1020

Open vincenlee opened 1 year ago

vincenlee commented 1 year ago

当多flavor 的情况下 如果完成一个flavor 1 的编译打包成apk(release下)再切换到另外一个flavor 2 继续在release打包运行就会出现 闪退,这种场景存在于 一个path路径对应在两个不同的flavor包下的Service ,而目前我了解到的ARouter 在初始化时 如果没有开启openDebug sp下就会缓存已经反射生成好的routermap 并复用。目前也没看到提供强制不走sp缓存的办法,这种情况下 是否只能是 先切切换到 flavor 2 之后先走debug (通常会配置 如果BuildConfig.isDebug 才会开启ARouter的openDebug)编译安装后 才能切换到release 下打包。是否有更好的办法,希望解答下

vincenlee commented 1 year ago

我目前只能通过源码中的sp的key自己在上层手动clear

ld2006203 commented 1 year ago

@vincenlee 老哥最后怎么解决的啊

vincenlee commented 1 year ago

@ld2006203 我目前是这么解决的,这样切换flavor 再打release包就不会出现路由表不更新的问题 if(BuildConfig.DEBUG){ ARouter.openDebug() ARouter.openLog() }else{ val sharedPreferences = context.getSharedPreferences(Consts.AROUTER_SP_CACHE_KEY, Context.MODE_PRIVATE) sharedPreferences.edit()?.clear()?.apply() } ARouter.init(context as Application)

ld2006203 commented 1 year ago

@ld2006203 我目前是这么解决的,这样切换flavor 再打release包就不会出现路由表不更新的问题 if(BuildConfig.DEBUG){ ARouter.openDebug() ARouter.openLog() }else{ val sharedPreferences = context.getSharedPreferences(Consts.AROUTER_SP_CACHE_KEY, Context.MODE_PRIVATE) sharedPreferences.edit()?.clear()?.apply() } ARouter.init(context as Application)

谢谢老哥,我发现我这边是由于matrix的asm和arouter冲突引起,后面去掉就解决了。可能和这个还不是一个原因。