**1、**使用ARouter的时候,按照配置设置了之后使用时候遇到问题: There is no router match! Path is … 查看了Logcat之后,发现如下的提示: 最后查找自己的项目发现build.gradle中都已经配置好了,经过查找官方github地址发现缺少混淆,因为debug时候也是把混淆打开的,所以会一直报错,需要在混淆文件中设置
-keep public class com.alibaba.android.arouter.routes.**{*;} -keep public class com.alibaba.android.arouter.facade.**{*;} -keep class * implements com.alibaba.android.arouter.facade.template.ISyringe{*;}设置完之后就能够正常跳转了
2、第二个问题是在之前遇到的,就是当build.gradle中配置了如下的时候
//ARouter配置 javaCompileOptions { annotationProcessorOptions { arguments = [AROUTER_MODULE_NAME: project.getName()] } }就会报错
ARouter::Compiler >>> No module name, for more information, look at gradle log.把AROUTER_MODULE_NAME改成moduleName即可 就是如下的代码
javaCompileOptions { annotationProcessorOptions { arguments = [moduleName: project.getName()] } }3、使用ARouter传参问题 必须使用ARouter.getInstance().inject(this);,并且要在参数调用之前传参,否则参数会获取不到值
Log.e("ParameterActivity","first name = "+name); ARouter.getInstance().inject(this); Log.e("ParameterActivity","later name = "+name);结果就是: 所以要在之前调用 4、初始化问题
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mvvmtest/com.example.mvvmtest.MainActivity}: com.alibaba.android.arouter.exception.InitException: ARouter::Init::Invoke init(context) first! at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2668) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2729) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1480) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6198) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:891) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:781) Caused by: com.alibaba.android.arouter.exception.InitException: ARouter::Init::Invoke init(context) first! at com.alibaba.android.arouter.launcher.ARouter.getInstance(ARouter.java:57) at com.example.mvvmtest.MainActivity.onCreate(MainActivity.java:18)上面报错就是没有在application中进行初始化
public class MVVMApplication extends Application { @Override public void onCreate() { super.onCreate(); ARouter.init(this); } }并且要在manifest中配置
android:name=".MVVMApplication"