Bootstrap

Android Studio接入ARouter以及简单使用

2018年12月13日更新 以下版本号都对应ARouter最新版本

ARouter Github传送门

1 所有module的 build.gradle中

注意是所有的module!
注意是所有的module!
注意是所有的module!

你可能会说如果我的A module依赖了 B module,那么只要在B里面配置是不是就可以了?绝对不行!无论module之间关系如何,必须要同样配置!包括主项目和library项目!

dependencies {
    ......
    
    compile ('com.alibaba:arouter-api:1.4.1'){ exclude group: 'com.android.support' }
    annotationProcessor 'com.alibaba:arouter-compiler:1.2.2'
}

AROUTER_MODULE_NAME这个参数是固定的,不用改成自己的项目名

android {
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = [AROUTER_MODULE_NAME: project.getName()]
            }
        }
    }
}

2 Application初始化

public class MyApplication extends Application {  
  
  
    @Override  
    public void onCreate() {  
        super.onCreate();  
  
        initRouter(this);  
    }  
  
  
    public static void initRouter(Application application) {  
        if (BuildConfig.DEBUG) {  
            ARouter.openLog();     // 打印日志  
            ARouter.openDebug();   // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)  
        }  
        ARouter.init(application);  
    }  
  
  
}

3 使用
/app/MainActivity 自定义但是必须有两级(两个/组成)

@Route(path = "/app/MainActivity")
public class MainActivity extends AppCompatActivity {

    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}
public class MusicActivity extends AppCompatActivity {

    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.music_activity_main);
        initView();
    }

    private void initView() {
        button=findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ARouter.getInstance().build("/app/MainActivity").navigation();
            }
        });
    }
}
;