首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kapt不解析原型生成的类

kapt不解析原型生成的类
EN

Stack Overflow用户
提问于 2017-07-20 13:24:36
回答 2查看 663关注 0票数 6

在构建过程中,我会遇到这样的错误:

代码语言:javascript
复制
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插件:

代码语言:javascript
复制
apply plugin: 'kotlin-kapt'

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

代码语言:javascript
复制
sourceSets {
    main.java.srcDirs += 'src/main/kotlin'
    main.java.srcDirs += 'build/generated/source/proto/main/java'
}

另外,我希望在kapt开始工作之前生成类。所以我以这样的方式来安排分级任务:

代码语言:javascript
复制
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
        }
    }
}

但所有这些都没有帮助,我还是犯了同样的错误。如何解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-21 13:22:10

错误是由原始源集的错误路径引起的。我必须在里面使用正确的风味名称,比如:

代码语言:javascript
复制
sourceSets {
    // ...
    main.java.srcDirs += 'build/generated/source/proto/flavor/java'
}

而不是

代码语言:javascript
复制
sourceSets {
    // ...
    main.java.srcDirs += 'build/generated/source/proto/main/java'
}
票数 1
EN

Stack Overflow用户

发布于 2021-11-12 03:35:20

不需要指定sourceDir,如果您想这样做的话,您必须指定所有可能的路径,这些路径包含了文件(可能来自Protobuf)或Kotlin文件。实际上,默认的sourceDir包含所有可能的路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45216112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档