Android项目Gradle配置Javadoc生成任务找不到BuildConfig类如何解决
问题根因
你配置的exclude "**/BuildConfig*"规则仅作用于「不生成BuildConfig类本身的Javadoc文档」,无法解决业务源码中存在import com.name.sdk.BuildConfig语句带来的问题:Javadoc执行时会先对所有参与生成的源码做语法解析,需要识别所有导入的类,找不到BuildConfig类的定义就会抛出对应报错。
可行解决方案
方案1:将BuildConfig的生成目录加入Javadoc类路径(推荐)
你当前doFirst中配置的classpath没有包含BuildConfig的生成目录,补充该配置即可彻底解决问题:
在Javadoc任务的doFirst代码块中,修改classpath配置:
doFirst { // 获取当前变体BuildConfig的生成目录 def buildConfigDir = variant.getBuildConfigSourceProvider().get().getSourceDirectories() classpath = project.files( variant.javaCompileProvider.get().classpath.files, project.android.getBootClasspath(), buildConfigDir // 把BuildConfig目录加入类路径 ) }
注:如果你使用的Gradle Android插件版本低于7.0,getBuildConfigSourceProvider()方法可能不存在,替换为variant.buildConfigSourceFolders即可。
方案2:忽略Javadoc的符号找不到错误(临时调试用)
如果只是临时生成文档不想调整类路径,也可以关闭Javadoc的符号检查,同时关闭遇到错误立即终止的配置:
// 替换原有配置的 failOnError true failOnError false options.addStringOption('Xdoclint:-missing', '-quiet')
该方案会忽略所有非核心报错,不推荐正式生成文档时使用。
额外检查点
- 你当前配置的
task.dependsOn "assemble${variant.name.capitalize()}"依赖逻辑是正确的,assemble任务执行前会自动生成BuildConfig类,不会出现BuildConfig还未生成就执行Javadoc任务的问题。 - 额外添加的
buildConfigField配置和本次报错无关,可以移除。
内容的提问来源于stack exchange,提问作者TheOldBlackbeard
相关产品推荐
相关产品推荐

