在使用了注解的每个模块中配置注解生成器,包括Application和Library工程。
jcenter()
}
dependencies {
annotationProcessor 'com.sankuai.waimai.router:compiler:1.x'
}
Proguard配置。
WMRouter已经内置的Proguard配置如下(详见源码
router/proguard-rules.pro
),使用AAR依赖时一般不需要重复配置。# 保留ServiceLoaderInit类,需要反射调用
-keep com.sankuai.waimai.router.annotation.RouterService
如果使用了
注解和ServiceLoader加载实例的功能,会反射调用构造方法,应根据实际情况配置Proguard,避免实现类中的构造方法被移除,示例如下。
# 使用了RouterService注解的实现类,需要避免Proguard把构造方法、方法等成员移除(shrink)或混淆(obfuscate),导致无法反射调用。实现类的类名可以混淆。
-keepclassmembers @com.sankuai.waimai.router.annotation.RouterService class * { *; }
跳转的目标Activity不需要配置IntentFilter,也不需要配置exported。
<activity name = ".AccountActivity" />
所有的外部URI跳转建议由一个中转Activity接收,再调用Router跳转到目标页面。由于跳转过程中可能会触发定位、登录等各种异步逻辑,因此中转Activity应该有界面,并监听在跳转结束后关闭Activity。
<activity android:name=".UriProxyActivity" android:exported="true">
<intent-filter>
<!-- 接收所有scheme为demo的外部URI跳转,不区分host和path -->
<data android:scheme="demo"/>
</activity>
请参考后文“高级配置”中的说明。