2018年12月13日更新 以下版本号都对应ARouter最新版本
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();
}
});
}
}