关于Arouter的初始化

arouter的初始化需要再主线程

ARouter.init(this@BaseApplication)

那如果你现在开启了 

ARouter.openDebug() //debug模式

那么在没有使用 registerByPlugin 的情况下,会通过

if (ARouter.debuggable() || PackageUtils.isNewVersion(context))

进入DexFile 加载,这个时间非常耗时,在低端设备上,测试将近10秒

那么如果启用了registerByPlugin,就是使用 arouter-register 或者 JailedBird.ARouterPlugin进行自动注册生成路由表

像 JailedBird.ARouterPlugin中介绍

https://github.com/JailedBird/ArouterGradlePlugin?tab=readme-ov-file

 解决issue7 debug阶段编译慢的问题;宿主模块启用如下配置,可避免在debug的变体下进行插桩,此时会通过Arouter原生遍历dex寻找路由文件,首次启动慢,之后会保存在SP中,速度应该还可以接受;缺点是路由表表更,需要清除应用数据才能生效;默认关闭,推荐开启(毕竟大项目编译非常慢);

arouter_config {
    disableTransformWhenDebugBuild = true
}

开启后,就是编译速度快了

但是APP如果开启了ARouter.openDebug(),那么同样 ARouter.init 也是要耗时非常久,因为这个属性就是在debug模式下禁用register,所以还是要走 dex 加载的方式,耗时比较久

这两个属性是有影响的

如果使用的是自动注册,可以看到初始化log,耗时 ARouter init  end 79

ARouter init start.[ThreadId=2 & ThreadName=main & FileName=ARouter.java & ClassName=com.alibaba.android.arouter.launcher.ARouter & MethodName=init & LineNumber=42 ] 
09:53:38.055  I  Load router map by arouter-auto-register plugin.[ThreadId=2 & ThreadName=main & FileName=LogisticsCenter.java & ClassName=com.alibaba.android.arouter.core.LogisticsCenter & MethodName=init & LineNumber=150 ] 

如果把 disableTransformWhenDebugBuild = false,且 ARouter.openDebug(),那么就会进入 dex 加载 耗时 ARouter init  end 11244 

10:31:31.239  I  ARouter init start.[ThreadId=2 & ThreadName=main & FileName=ARouter.java & ClassName=com.alibaba.android.arouter.launcher.ARouter & MethodName=init & LineNumber=42 ] 
10:31:31.247  I  Run with debug mode or new install, rebuild router map.[ThreadId=2 & ThreadName=main & FileName=LogisticsCenter.java & ClassName=com.alibaba.android.arouter.core.LogisticsCenter & MethodName=init & LineNumber=156 ] 
10:31:31.251  I  VM with name 'Android' has multidex support
10:31:31.254  E  InstantRun support error, com.android.tools.fd.runtime.Paths
10:31:31.256  I  Thread production, name is [ARouter task pool No.1, thread No.1][ThreadId=2 & ThreadName=main & FileName=DefaultThreadFactory.java & ClassName=com.alibaba.android.arouter.thread.DefaultThreadFactory & MethodName=newThread & LineNumber=34 ] 
10:31:42.396  D  Filter 30 classes by packageName <com.alibaba.android.arouter.routes>
10:31:42.401  I  Find router map finished

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值