kapt不能解析protobuf生成的类

在构建过程中出现这样的错误:

e: /Users/some/path/SomeClass.java:86: error: cannot find symbol e: e: static ConnectionType getConnectionType(Context context) { e: ^ e: symbol: class ConnectionType e: location: class SomeClass 

其中ConnectionType是由protobuf生成的类。 所以看起来像kapt不解决生成的类。

我试过了什么?

起初,我添加了kotlin-apt插件:

 apply plugin: 'kotlin-kapt' 

然后,我添加了brotobuf生成的类到源集:

 sourceSets { main.java.srcDirs += 'src/main/kotlin' main.java.srcDirs += 'build/generated/source/proto/main/java' } 

而且我也想在kapt开始工作之前生成类。 所以我这样命令gradle任务:

 afterEvaluate { def protoTasks = [] tasks.each { task -> if (task.name.contains('proto') || task.name.contains('Proto')) { protoTasks.push(task) } } tasks.each { task -> if (task.name.startsWith('kapt')) { task.dependsOn protoTasks } } } 

但所有这些事情都没有帮助,我仍然有同样的错误。 如何解决?

错误是由于protobuf源集合的错误路径导致的。 我不得不使用正确的味道名称,如:

 sourceSets { // ... main.java.srcDirs += 'build/generated/source/proto/flavor/java' } 

代替

 sourceSets { // ... main.java.srcDirs += 'build/generated/source/proto/main/java' }