Android项目迁移Gradle KTS:Protobuf配置方法问询
Gradle KTS 版本 Protobuf 配置(对应原Groovy迁移)
先给出完整的迁移后代码:
// Versions val protoBufVersion = "3.0.0" protobuf { protoc { artifact = if (osdetector.os == "osx") { "com.google.protobuf:protoc:$protoBufVersion:osx-x86_64" } else { "com.google.protobuf:protoc:$protoBufVersion" } } plugins { create("javalite") { artifact = if (osdetector.os == "osx") { "com.google.protobuf:protoc-gen-javalite:$protoBufVersion:osx-x86_64" } else { "com.google.protobuf:protoc-gen-javalite:$protoBufVersion" } } } generateProtoTasks { all.forEach { task -> task.builtins { remove("java") } task.plugins { create("javalite") } } } }
关键语法差异说明
- 变量定义:Groovy的
def ProtoBufVersion替换为KTS的val protoBufVersion(遵循Kotlin小驼峰命名规范) - 插件配置:Groovy中直接写
javalite {},KTS需要通过create("javalite")显式创建插件配置项 - 任务遍历:Groovy的
all().each替换为KTS的all.forEach - 内置插件移除:Groovy的
remove java替换为KTS的remove("java")(KTS要求传入字符串参数) - 条件赋值:KTS支持if表达式直接赋值,写法更简洁,无需单独拆分if-else块
前置依赖确认
确保项目已引入必要插件(根目录build.gradle.kts或settings.gradle.kts中配置):
plugins { id("com.google.protobuf") version "0.9.4" // 版本可按需调整,需与protobuf版本匹配 id("com.google.osdetector") version "1.7.1" }
内容的提问来源于stack exchange,提问作者Hector
相关产品推荐
相关产品推荐

