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