Android 应用无法构建

Android app doesn't build

gradle 尝试构建项目(使用 protobuf)后有一个日志

:app:generateDebugProto FAILED

FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':app:generateDebugProto'.

    protoc: stdout: . stderr: /Users//app/build/extracted-protos/main: warning: directory does not exist. /Users//app/src/debug/proto: warning: directory does not exist.
    /Users//app/build/extracted-protos/debug: warning: directory does not exist. /Users//app/build/extracted-include-protos/debug: warning: directory does not exist. /Users//app/src/debug/proto: warning: directory does not exist. /Users//app/build/extracted-protos/debug: warning: directory does not exist.
    /Users/_/app/build/extracted-include-protos/debug: warning: directory does not exist. Missing output directives.

  • 尝试:运行 使用 --stacktrace 选项获取堆栈跟踪。 运行 使用 --info 或 --debug 选项以获得更多日志输出。

无法修复。

感谢大家尝试帮助我,但问题出在我的项目中用于 java-nano codegen,所以在更新到 protoc 3.0.0 之后,这会导致问题,所以我阅读 https://github.com/google/protobuf-gradle-plugin and here https://github.com/google/protobuf/releases/tag/v3.0.0,我决定使用 java-lite codegen 而不是 java-nano。现在很清楚了,错误也消失了。

另一种替代解决方案是手动创建丢失的目录。 在我的例子中 MyApp/app/build/extracted-include-protos/main 丢失了,所以我在那里创建了一个 "main" 文件夹,瞧,错误消失了。

以下配置适合我

项目级build.gradle文件

classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.10'

应用级别build.gradle文件

apply plugin: 'com.android.application'
apply plugin: 'com.google.protobuf'

protobuf {
    protoc {
        artifact = 'com.google.protobuf:protoc:3.8.0'
    }
    plugins {
        javalite {
            artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0'
        }
        grpc {
            artifact = 'io.grpc:protoc-gen-grpc-java:1.0.0-pre2'
        }
    }
    generateProtoTasks {
        all().each { task ->
            task.builtins {
                remove java
            }
            task.plugins {
                javalite { }
                grpc {
                    option 'lite'
                }
            }
        }
    }
}