构建 Protobuffer/Kotlin 应用程序时 Android Studio 中未解决的引用“选项”错误

问题描述 投票:0回答:1

我正在使用 Android Studio Koala Feature Drop | 2024.1.2 补丁 1。 我正在尝试启动并运行一个简单的 Protobuffer 应用程序,虽然有大量关于如何实现此功能的示例代码,但我(尚未)未能实现这一目标。

当我尝试同步项目时,出现以下错误。

Unresolved reference: option

生成 protobuf 代码的(相关)cradle 片段如下

import com.google.protobuf.gradle.*

plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.kotlin.android)
    id("com.google.protobuf") version "0.9.3"

}
  sourceSets{
        getByName("main") {
            kotlin {
                srcDirs("src/main/kotlin")
            }
            proto {
                srcDir("src/main/proto")
            }
        }

dependencies {

    implementation(libs.androidx.core.ktx)
    implementation(libs.androidx.lifecycle.runtime.ktx)
    implementation(libs.androidx.activity.compose)
    implementation(platform(libs.androidx.compose.bom))
    implementation(libs.androidx.ui)
    implementation(libs.androidx.ui.graphics)
    implementation(libs.androidx.ui.tooling.preview)
    implementation(libs.androidx.material3)
    implementation (libs.protobuf.kotlin.lite)
protobuf{
    protoc {
        artifact = "com.google.protobuf:protoc:3.22.2"
    }

    generateProtoTasks {
        all().forEach { task ->
            task.builtins {
                kotlin{
                    option("lite")
                }
            }
        }
    }
}

线路发生错误

option("lite")

尽管 IDE 在我启动“kotlin{}”行时“建议”该行...

我已尝试关注这些帖子以及引用的任何帖子 参考1 参考2

kotlin protocol-buffers cradle
1个回答
0
投票

感谢 这种方法 我现在可以从 .proto 文件生成 kotlin 代码

以下是我遵循的步骤

  1. 在项目build.gradle中将以下内容添加到plugins{}块中

    id(“com.google.protobuf”)版本“0.9.4”适用 false

plugins{} 块应该与此类似

plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.kotlin.android) apply false
id("com.google.protobuf") version "0.9.4" apply false}
  1. 在应用程序 build.grade 中我进行了以下更改

2.a) 在文件开头添加以下内容

import com.google.protobuf.gradle.*

2.b) 将以下内容添加到plugins{}块中

 id("com.google.protobuf")

该块应该看起来像这样

plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
id("com.google.protobuf")}

2.c) 将以下内容添加到依赖项{}块中

implementation ("com.google.protobuf:protobuf-kotlin-lite:3.20.1")

2.d) 在文件底部添加以下内容

protobuf {
  protoc {
      artifact = "com.google.protobuf:protoc:3.21.2"
}
plugins {
    id("java") {
        artifact = "io.grpc:protoc-gen-grpc-java:1.47.0"
    }
}
generateProtoTasks {
    all().forEach {
        it.plugins {
            id("java") {
                option("lite")
            }
        }
        it.builtins {
            id("kotlin") {
                option("lite")
            }
        }
    }
}

2.e) 同步您的项目

2.f) 在 ..../yourapp/app/src/main 下创建 proto 文件夹

2.g) 在 ..../yourapp/app/src/main/proto 中创建 .proto 文件

2.h) 运行 make

2.i) (生成的)java 文件夹现在应该包含 protobuffer 的 kotlin 代码。

© www.soinside.com 2019 - 2024. All rights reserved.