我将 Android Studio 的稳定版本升级到 2.2,现在 IDE 的“增量编译器”找不到生成的 protobuf 类的任何符号。我打开该项目,它可以很好地构建应用程序并将其部署到设备上。但是,当我打开包含生成的 protobuf 引用的 Java 类文件时,Android Studio 在文件打开后立即将它们标记为错误。生成的原型(prototype)类的每个 Java 导入都标有“无法解析符号”。
我first noticed这是一个月前在 canary channel 上发生的,但我没有想到任何事情,因为我正在与其他 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/下的任何源目录。您必须将生成的目录移到构建之外:
protobuf {
generatedFilesBaseDir = "$projectDir/src/generated"
}
这两项更改为我们解决了 Android Studio 2.2 引入的问题。
关于gradle - Android Studio 2.2's incremental compiler can' t 查看生成的 protobuf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39609980/