Android kotlin混合编程引入Arouter 无法找到 匹配路径(no match path)

前言

最近项目进行混合编程(java、kotlin),再引入Arouter时候遇到的一些的奇奇怪怪的问题。

1.当*.kt 后缀的Activity上使用@Router(path =xxxxx)时候遇到No match path;

原因: *.kt 上的注解需要使用 kotlin方式的注解解释器才可以识别。

检查module的 build.gradle 文件 ,引入Arouter方式是否是 Apt

java 方式

  defaultConfig {
        .....略....
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = [moduleName: project.getName()]
            }
        }
    }


dependencies {
      annotationProcessor 'com.alibaba:arouter-annotation:1.0.4'
}

kotlin 方式

导入...

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

kapt {
    arguments {
        arg("moduleName", project.getName())
    }
    generateStubs = true
}


dependencies {
    kapt 'com.alibaba:arouter-annotation:1.0.4'
}

如果纯java 的module,使用 java方式声明。如果是java+kotlin 或者 纯kotlin的module 使用, kotlin方式声明Arouter。

  1. More than one file was found with OS independent path ‘META-INF/rxjava.properties’

    //rx 多个地方引用
    packagingOptions {
    pickFirst ‘META-INF/*’

    }
    增加这段话,分别在module中

总结:

Arouter 的引入对于项目模块化是很有必要的,在分模块同时会附带N多的依赖异常。除了掌握相关Api,Studio 的模块间依赖,资源依赖解决,同样是很棘手的问题。

你可能感兴趣的:(android,集成第三方)