我将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] 删除。
我来说两句