gradle - Android Studio 2.2's incremental compiler can' t 查看生成的 protobuf

标签 gradle protocol-buffers android-studio-2.2

我将 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/

相关文章:

java - 为什么 intelliJ IDEA 依赖范围是 "provided"而不是 "compile"?

c# - 使用 Protobuf-Net 序列化运行时消息合约

java - 在哪里可以找到在 Java 中使用 Google Protocol Buffer 的 protobuf.jar?

c++ - 访问 Protocol Buffer 扩展字段

android-studio - Android Studio 对 Linux 的 HiDPI 支持

android - 如何在 jack 中使用 Android 注释及其注释处理器?

android - Gradle 错误使用 fbutton

gradle - Grails 3排除类(class)

java - Android Studio 增量内存使用

android-studio-2.2 - 将音频文件添加到 android studio 时编码错误