android - 使用 Kotlin DSL 配置 Protocol Buffers 0.9.x

标签 android build.gradle protocol-buffers gradle-kotlin-dsl

我已将 Android 项目上的 Protocol Buffer 版本从 0.8.x 更新到 0.9.1,但遇到了 gradle 同步错误。我已按照文档从 build.gradle.kts 文件中删除了导入,并且收到如下所示的错误。

这是build.gradle.kts中的代码:

protobuf {
    protoc {
        artifact = "com.google.protobuf:protoc:21.0-rc-1"
    }
    generateProtoTasks {
        all().forEach { task ->
            task.plugins {
                create("java") {
                    option("lite")
                }
            }
        }
    }
}

这就是错误,它指向 create("java") { 行 - 如何使用 Kotlin DSL 配置 Protocol Buffer ?

Caused by: org.gradle.api.UnknownDomainObjectException: ExecutableLocator with name 'java' not found.
        at org.gradle.api.internal.DefaultNamedDomainObjectCollection.createNotFoundException(DefaultNamedDomainObjectCollection.java:504)
        at org.gradle.api.internal.DefaultNamedDomainObjectCollection.getByName(DefaultNamedDomainObjectCollection.java:333)
        at com.google.protobuf.gradle.GenerateProtoTask$_getAllExecutableLocators_closure8.doCall(GenerateProtoTask.groovy:354)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at com.google.protobuf.gradle.GenerateProtoTask.getAllExecutableLocators(GenerateProtoTask.groovy:354)
        at com.google.protobuf.gradle.GenerateProtoTask.getReleaseExecutableLocators(GenerateProtoTask.groovy:350)
        at com.google.protobuf.gradle.GenerateProtoTask.access$0(GenerateProtoTask.groovy)
        at com.google.protobuf.gradle.GenerateProtoTask$_getExecutables_closure6.doCall(GenerateProtoTask.groovy:342)
        at com.google.protobuf.gradle.GenerateProtoTask$_getExecutables_closure6.call(GenerateProtoTask.groovy)
        at org.gradle.api.internal.provider.DefaultProvider.calculateOwnValue(DefaultProvider.java:72)
        at org.gradle.api.internal.provider.AbstractMinimalProvider.get(AbstractMinimalProvider.java:83)
        at org.gradle.api.internal.provider.ProviderResolutionStrategy$2.resolve(ProviderResolutionStrategy.java:33)
        at org.gradle.api.internal.file.collections.ProviderBackedFileCollection.visitDependencies(ProviderBackedFileCollection.java:56)
        at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext$TaskGraphImpl.getNodeValues(CachingTaskDependencyResolveContext.java:103)
        at org.gradle.internal.graph.CachingDirectedGraphWalker$GraphWithEmptyEdges.getNodeValues(CachingDirectedGraphWalker.java:213)
        at org.gradle.internal.graph.CachingDirectedGraphWalker.doSearch(CachingDirectedGraphWalker.java:121)
        at org.gradle.internal.graph.CachingDirectedGraphWalker.findValues(CachingDirectedGraphWalker.java:73)
        at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.getDependencies(CachingTaskDependencyResolveContext.java:66)
        ... 141 more

最佳答案

我需要更改它,如下所示

protobuf {
    protoc {
        artifact = "com.google.protobuf:protoc:21.0-rc-1"
    }
    generateProtoTasks {
        all().forEach { task ->
            task.builtins {
                create("java") {
                    option("lite")
                }
            }
        }
    }
}

关于android - 使用 Kotlin DSL 配置 Protocol Buffers 0.9.x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75025962/

相关文章:

android - css only android 和 IOS 上的纵向模式

android - 如何获取用户在谷歌地图中输入的地址的坐标?

java - 如何修复 "import com.dyuproject cannot be resolved"错误

java - 在 Google App Engine 上存储 google protocol buffers

android - 带有 gradle 的动态字体

GridViewPager 中的 Android WearableListView

android - 如何从依赖项中手动下载android库

gradle - 在gradle构建脚本中包含类文件

Android Studio 北极狐 | 2020.3.1 Canary 14 找不到参数的方法 dependencyResolutionManagement()

CMakeList 从特定文件夹下的 .proto 文件生成 .cc 和 .h 文件