Android Proto Datastore构建报错:无法获取'source'属性
解决Proto DataStore构建时的"unknown property 'source'"异常
问题原因
Android Studio Giraffe(对应AGP 7.4+)搭配的protobuf插件版本若与旧配置写法不兼容,会触发该错误。官方教程中的旧配置仍在使用source属性,但新版本protobuf插件已调整API,不再支持该属性。
修复步骤
- 更新项目根目录
build.gradle(或build.gradle.kts)中的protobuf插件版本至适配AGP 7.4+的版本,例如com.google.protobuf:protobuf-gradle-plugin:0.9.4及以上 - 修改模块级
build.gradle(或build.gradle.kts)中的protobuf配置块,替换旧的source写法:
旧写法示例:
适配新版本插件的写法:protobuf { protoc { artifact = "com.google.protobuf:protoc:3.21.12" } generateProtoTasks { all().each { task -> task.source.srcDir 'src/main/proto' } } }
若需指定proto文件目录,直接在protobuf { protoc { artifact = "com.google.protobuf:protoc:3.21.12" } generateProtoTasks { all().each { task -> task.builtins { java { option "lite" } } } } }android块的sourceSets中配置即可,无需在protobuf任务内设置:android { sourceSets { main { proto { srcDir "src/main/proto" } } } } - 同步Gradle项目后重新构建
额外注意事项
- 确保Proto DataStore依赖版本与protobuf版本匹配,比如使用
androidx.datastore:datastore-proto:1.0.0及以上 - 清理项目缓存(通过
File > Invalidate Caches...操作)后再重新构建,避免缓存引发的问题
内容的提问来源于stack exchange,提问作者Surendra Singh
相关产品推荐
相关产品推荐

