1. 在使用了注解的每个模块中配置注解生成器,包括Application和Library工程。

      1. jcenter()
      2. }
      3. dependencies {
      4. annotationProcessor 'com.sankuai.waimai.router:compiler:1.x'
      5. }
    2. Proguard配置。

      WMRouter已经内置的Proguard配置如下(详见源码router/proguard-rules.pro),使用AAR依赖时一般不需要重复配置。

      1. # 保留ServiceLoaderInit类,需要反射调用
      2. -keep com.sankuai.waimai.router.annotation.RouterService

      如果使用了注解和ServiceLoader加载实例的功能,会反射调用构造方法,应根据实际情况配置Proguard,避免实现类中的构造方法被移除,示例如下。

      1. # 使用了RouterService注解的实现类,需要避免Proguard把构造方法、方法等成员移除(shrink)或混淆(obfuscate),导致无法反射调用。实现类的类名可以混淆。
      2. -keepclassmembers @com.sankuai.waimai.router.annotation.RouterService class * { *; }

    跳转的目标Activity不需要配置IntentFilter,也不需要配置exported。

    1. <activity name = ".AccountActivity" />

    所有的外部URI跳转建议由一个中转Activity接收,再调用Router跳转到目标页面。由于跳转过程中可能会触发定位、登录等各种异步逻辑,因此中转Activity应该有界面,并监听在跳转结束后关闭Activity。

    1. <activity android:name=".UriProxyActivity" android:exported="true">
    2. <intent-filter>
    3. <!-- 接收所有scheme为demo的外部URI跳转,不区分host和path -->
    4. <data android:scheme="demo"/>
    5. </activity>

    请参考后文“高级配置”中的说明。