前言
通常解决不一样模块中的Activity跳转须要相互依赖,如此将产生严重的耦合,失去了划分module的意义。 能够本身根据须要设计跳转router,也能够直接使用arouter第三方依赖实现,在实现过程当中会产生较多的问题,本文将给出基本步骤及解决办法。java
1.kotlin配置基础步骤
如下步骤主要以Kotlin语言环境为基础。首先在项目app或其余命名的模块下的build.gradle中添加如下内容android
apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-android-extensions' kapt { arguments { arg("AROUTER_MODULE_NAME", project.getName()) } } dependencies { api 'com.alibaba:arouter-api:1.5.0' kapt 'com.alibaba:arouter-compiler:1.2.2' }
这是其余博客中描述的通用配置,可是这样作会出现一个错误:api
- org.gradle.api.internal.plugins.PluginApplicationException: Failed to apply plugin [id 'kotlin-kapt']
- org.gradle.api.GradleException: Kotlin plugin should be enabled before 'kotlin-kapt'
很显然是配置引入的错误,正确作法:改变apply plugin: 'kotlin-kapt'加载的顺序,并且如下内容在每一个须要配置@Route模块中的build.gradle都须要配置。app
apply plugin: 'com.android.library' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' android { ... } kapt { arguments { arg("AROUTER_MODULE_NAME", project.getName()) } } dependencies { implementation project(':base') kapt 'com.alibaba:arouter-compiler:1.2.2' }
注:api 'com.alibaba:arouter-api:1.5.0'已在base模块中引用;ide
2.Java配置基础步骤
不少博客针对是否使用 arg("AROUTER_MODULE_NAME", project.getName())仍是arguments = [ moduleName : project.getName() ] 会引起模块不能找到的错误 ,正解:一样每一个须要引用到@Router,都须要添加如下内容。gradle
android { defaultConfig { javaCompileOptions { annotationProcessorOptions { arguments = [moduleName: project.getName()] } } } } dependencies { implementation project(':base') implementation 'com.alibaba:arouter-api:1.5.0' annotationProcessor 'com.alibaba:arouter-compiler:1.2.2' }
3.初始化
初始化在根Application,如下为kotlin语言。ui
class BaseApplication :Application(){ override fun onCreate() { super.onCreate() if (BuildConfig.DEBUG) { ARouter.openLog() ARouter.openDebug() } ARouter.init(this) } }
4.关于编译
apt,annotationProcessor this