kotlin/java混合开发接入ARouter遇到的问题Compiler An exception is encountered, [These no module name, at ‘build.

Posted guangdeshishe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kotlin/java混合开发接入ARouter遇到的问题Compiler An exception is encountered, [These no module name, at ‘build.相关的知识,希望对你有一定的参考价值。

报错信息:

ARouter::Compiler An exception is encountered, [These no module name, at 'build.gradle', like :
  android {
      defaultConfig {
          ...
          javaCompileOptions {
              annotationProcessorOptions {
                  arguments = [AROUTER_MODULE_NAME: project.getName()]
              }
          }
      }
  }
  ]

Execution failed for task ':settings:kaptDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction
   > java.lang.reflect.InvocationTargetException (no error message)

刚开始报错配置如下:

Base Module:

plugins {
    id 'com.android.library'
    id 'kotlin-android'
    id 'kotlin-kapt'
}
android {
	defaultConfig {
		javaCompileOptions {
            annotationProcessorOptions {
                arguments = [AROUTER_MODULE_NAME: project.getName()]
            }
        }
	}
}
dependencies {
	api 'com.alibaba:arouter-api:1.5.2'
    kapt 'com.alibaba:arouter-compiler:1.5.2'
}

Other Modules:

plugins {
    id 'com.android.library'
    id 'kotlin-android'
    id 'kotlin-kapt'
}
android {
	defaultConfig {
		javaCompileOptions {
            annotationProcessorOptions {
                arguments = [AROUTER_MODULE_NAME: project.getName()]
            }
        }
	}
}
dependencies {
	api project(':base')
    kapt 'com.alibaba:arouter-compiler:1.5.2'
}

总是提示我没有配置【javaCompileOptions】这部分,但是我明明配置了,换成kotlin版的也不行:

kapt {
    arguments {
        arg("AROUTER_MODULE_NAME", project.getName())
    }
}

后来想到项目中有java代码,也有kotlin代码,于是两个版本都一起配置上去了,居然就行了,这坑真是深,接入的版本是1.5.2

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

以上是关于kotlin/java混合开发接入ARouter遇到的问题Compiler An exception is encountered, [These no module name, at ‘build.的主要内容,如果未能解决你的问题,请参考以下文章

ARouter原理解析之仿ARouter自定义路由框架

Kevin Learn Kotlin:Java & Kotlin

kotlin activityrouter混合开发activityrouter无响应解决办法

Android-混合开发mPaas-多版本接入篇

Android-混合开发mPaas-多版本接入篇

利用ARouter实现组件间通信,解决子模块调用主模块问题