Android Kotlin/java集成arouter产生的问题及解决

   日期:2020-08-06     浏览:128    评论:0    
核心提示:前言 一般解决不同模块中的Activity跳转需要相互依赖,如此将产生严重的耦合,失去了划分module的意义。 可以自己根据需要设计跳转router,也可以直接使用arouter第三方依赖实现,在实现过程中会产生较多的问题,本文将给出基本步骤及解决办法。1.kotlin配置基础步骤 以下步骤主要以Kotlin语言环境为基础。首先在项目app或其他命名的模块下的build.gradle中添加以下内容apply plugin: kotlin-kaptapply plug...

前言

       一般解决不同模块中的Activity跳转需要相互依赖,如此将产生严重的耦合,失去了划分module的意义。  可以自己根据需要设计跳转router,也可以直接使用arouter第三方依赖实现,在实现过程中会产生较多的问题,本文将给出基本步骤及解决办法。

1.kotlin配置基础步骤

  以下步骤主要以Kotlin语言环境为基础。首先在项目app或其他命名的模块下的build.gradle中添加以下内容

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'
}

 这是其他博客中描述的通用配置,但是这样做会出现一个错误:

  • 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都需要配置。

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模块中引用;

2.Java配置基础步骤

 很多博客针对是否使用 arg("AROUTER_MODULE_NAME", project.getName())还是arguments = [ moduleName : project.getName() ] 会引发模块不能找到的错误 ,正解:同样每个需要引用到@Router,都需要添加以下内容。


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语言。

class BaseApplication :Application(){

    override fun onCreate() {
        super.onCreate()
        if (BuildConfig.DEBUG) {
            ARouter.openLog()
            ARouter.openDebug()
        }
        ARouter.init(this)
    }

}

4.关于编译

 apt,annotationProcessor 

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服