Android Studio构建Protobuffer/Kotlin项目时出现Unresolved reference: option错误
解决Android Studio中Protobuf配置
Unresolved reference: option错误 我使用Android Studio Koala Feature Drop | 2024.1.2 Patch 1版本搭建简单Protobuf应用,同步项目时出现Unresolved reference: option错误,报错行是Gradle配置里的option("lite"),尽管IDE自动提示了这段代码。
相关Gradle配置片段如下:
插件配置(模块级build.gradle.kts)
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配置(模块级build.gradle.kts)
sourceSets{ getByName("main") { kotlin { srcDirs("src/main/kotlin") } proto { srcDir("src/main/proto") } } }
依赖配置(模块级build.gradle.kts)
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核心配置(模块级build.gradle.kts)
protobuf{ protoc { artifact = "com.google.protobuf:protoc:3.22.2" } generateProtoTasks { all().forEach { task -> task.builtins { kotlin{ option("lite") } } } } }
我已经尝试过两篇Stack Overflow的解决方案,但问题仍未解决。
可行修复方案
1. 升级Protobuf Gradle插件版本
当前使用的0.9.3版本与Android Studio Koala对应的Gradle 8.2+存在兼容性问题,建议升级到最新稳定版(如0.9.4):
id("com.google.protobuf") version "0.9.4"
2. 修正Kotlin内置生成器的配置写法
新版插件中,builtins块内的Kotlin配置需要明确调用create方法,修改Protobuf配置块:
protobuf{ protoc { artifact = "com.google.protobuf:protoc:3.22.2" } generateProtoTasks { all().forEach { task -> task.builtins { create("kotlin") { option("lite") } } } } }
3. 确保Protobuf依赖版本与protoc版本一致
检查libs.protobuf.kotlin.lite的版本是否和protoc的3.22.2匹配,若使用版本目录(libs.versions.toml),需对应设置:
[versions] protobuf = "3.22.2" [libraries] protobuf-kotlin-lite = { module = "com.google.protobuf:protobuf-kotlin-lite", version.ref = "protobuf" }
4. 同步并清理项目
修改配置后执行以下操作:
- 点击Android Studio右上角的「Sync Project with Gradle Files」
- 依次执行
Build > Clean Project和Build > Rebuild Project
内容的提问来源于stack exchange,提问作者Poldi
相关产品推荐
相关产品推荐

