[英]After upgrading android gradle plugin from 4.2.1 to 7.0.1 getting error
[英]Assemble error while using latest gRPC plugin on Android -> Input is shadowed in the --proto_path (Gradle 7.0.1)
我正在嘗試更新一個 Android 項目以使用它正在使用的當前 3.6.4 中的最新 gradle 插件 (7.0.1)。 為此,考慮到項目正在使用 protobuf,我需要更新 protobuf 和 gRPC 依賴項,因為當前的依賴項與最新的插件不兼容。
我已關注https://github.com/grpc/grpc-java以使用最新的依賴版本。 我將依賴項更新為以下版本:
implementation 'io.grpc:grpc-okhttp:1.40.1'
implementation 'io.grpc:grpc-protobuf-lite:1.40.1'
implementation 'io.grpc:grpc-stub:1.40.1'
compileOnly 'org.apache.tomcat:annotations-api:6.0.53'
protobuf "com.google.protobuf:protobuf-java:3.17.3"
我正在使用最新的 protobuf 插件
plugins {
id 'com.google.protobuf' version '0.8.17'
}
並使用以下塊進行代碼生成
protobuf {
protoc {
artifact = "com.google.protobuf:protoc:3.17.3"
}
plugins {
grpc {
artifact = "io.grpc:protoc-gen-grpc-java:1.40.1"
}
}
generateProtoTasks {
all().each { task ->
task.builtins {
java { option 'lite' }
}
task.plugins {
grpc { option 'lite' }
}
}
}
}
使用這些時 gradle 同步成功,問題是當我嘗試組裝項目時,出現以下錯誤:
任務 ':App:generateDebugProto' 執行失敗。 協議:標准輸出:。 標准錯誤:C:\\Users\\phantom\\AndroidStudioProjects\\Protobuf\\App\\build\\extracted-protos\\main\\google\\protobuf\\any.proto:輸入在 --proto_path 中被“C:/Users/phantom/AndroidStudioProjects/ Protobuf/App/build/extracted-include-protos/debug/google/protobuf/any.proto”。 要么使用后一個文件作為輸入,要么重新排序 --proto_path 以便前一個文件的位置在前。
根據我在閱讀錯誤時的理解,問題是現在在提取的原型和提取的包含原型構建文件中都生成了 proto 文件,而后者掩蓋了第一個。 我已經檢查過,在以前的版本中,這些文件僅在提取的 protos構建文件中生成。 有沒有辦法跳過在extract-include-protos 中生成文件? 或者能夠組裝該項目的行動過程是什么?
我昨天遇到了同樣的問題。 這更像是一種解決方法,而不是完整的答案。 它讓我使用 Google 語音轉文本,但如果您添加文本轉語音的非測試版,它就不起作用,所以如果有人有更好的答案,請發布。
protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.17.3'
}
plugins {
javalite {
artifact = "com.google.protobuf:protoc-gen-javalite:3.0.0"
}
grpc {
artifact = "io.grpc:protoc-gen-grpc-java:1.40.1"
}
}
generateProtoTasks {
all().each { task ->
task.builtins {
// In most cases you don't need the full Java output
// if you use the lite output.
remove java
}
task.plugins {
javalite {}
grpc {
// Options added to --grpc_out
option 'lite'
}
}
}
}
}
implementation 'io.grpc:grpc-okhttp:1.40.1'
implementation 'io.grpc:grpc-protobuf-lite:1.25.0'
implementation 'io.grpc:grpc-stub:1.40.1'
compileOnly 'org.apache.tomcat:annotations-api:6.0.53'
protobuf "com.google.protobuf:protobuf-java:3.17.3"
implementation("com.google.cloud:google-cloud-speech:1.22.1") {
exclude group: 'com.google.protobuf', module: 'protobuf-java'
exclude group: 'com.google.api.grpc'
}
注意 grpc-protobuf-lite 和 google-cloud-speech 的版本。 我不得不將它們都從最新版本降級。
有同樣的問題,在嘗試了所有可能的 gradle 配置 2 天后。 我只是手動刪除了 ../build/extracted-include-protos/debug/google/protobuf/ 下的所有 proto 文件,錯誤消失了
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.