Android Studio 2.2的增量编译器看不到生成的protobuf

大肠菌群

我将Android Studio的稳定版本升级到2.2,现在IDE的“增量编译器”找不到生成的protobuf类的任何符号。我打开了项目,它可以构建应用程序并将其部署到设备上。但是,当我打开一个包含生成的protobuf引用的Java类文件时,Android Studio在文件打开后不久将它们标记为错误。生成的原型类的每个Java导入都标记有“无法解析符号”。

一个月前首次在canary频道上注意到了这一点,但对此却一无所获,因为我在处理其他protobuf问题(使用javalite split升级到3.0.0)时感到困惑。直到今天我都忘了它。仍然可以在项目上进行工作,只是IDE几乎没有用,因为它认为存在错误(即使使用真正的编译程序也可以)。

以供参考。

gradle-2.14.1
com.android.tools.build:gradle:2.2.0
com.google.protobuf:protobuf-gradle-plugin:0.8.0
com.google.protobuf:protobuf-lite:3.0.0
com.google.protobuf:protoc:3.0.0
com.google.protobuf:protoc-gen-javalite:3.0.0

在包含.proto文件的模块中:

protobuf {
    protoc {
        artifact = google_protoc_artifact
    }
    plugins {
        javalite {
            artifact = google_protoc_javalite_artifact
        }
    }
    generateProtoTasks {
        all().each { task ->
            task.builtins {
                remove java
            }
            task.plugins {
                javalite { }
            }
        }
    }
}
杰罗姆

我们遇到了同样的问题,并发现了以下内容:

1)为了使Idea(studio)能够看到您的资源,您需要通过将idea插件添加到模块中来提供帮助:

apply plugin: 'idea'
idea {
    module {
        // Use "${protobuf.generatedFilesBaseDir}/main/javalite" for LITE_RUNTIME protos
        sourceDirs += file("${protobuf.generatedFilesBaseDir}/main/java");
    }
}

2)另一个错误,Android Studio似乎忽略了build /下的任何源目录。您必须将生成的目录移至build之外:

protobuf {
    generatedFilesBaseDir = "$projectDir/src/generated"
}

这两项更改为我们解决了Android Studio 2.2引入的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章