android / android/codelab-android-datastore

Please update the Datastore with Protobuf codelab to support Gradle Kotlin DSL / Kotlin code generation

Open
#59 2 comments 7 reactions 0 assignees View on GitHub
Dominant language
Kotlin
Stars
240
Forks
113
PR merge metrics
No merged PRs in 30d

Description

Hi,

It took me some hours to figure out how to set it up correctly, I think the codelab should mention it:

```kotlin
import com.google.protobuf.gradle.id

plugins {
// ...
id("com.google.protobuf") // version 0.9.1
}

protobuf {
protoc {
artifact = "com.google.protobuf:protoc:3.21.9"
}

// Generates the java Protobuf-lite code for the Protobufs in this project. See
// https://github.com/google/protobuf-gradle-plugin#customizing-protobuf-compilation
// for more information.
generateProtoTasks {
// see https://github.com/google/protobuf-gradle-plugin/issues/518
// see https://github.com/google/protobuf-gradle-plugin/issues/491

// all() here because of android multi-variant
all().forEach { task ->
// this only works on version 3.8+ that has buildins for javalite / kotlin lite
// with previous version the java build in is to be removed and a new plugin
// need to be declared
task.builtins {
id("java") { // id is imported above
option("lite")
}
id("kotlin") {
option("lite")
}
}
}
}
}

depencencies {
// ...
implementaiton("com.google.protobuf:protobuf-javalite:3.21.9")
implementaiton("com.google.protobuf:protobuf-kotlin-lite:3.21.9")
// ....
}
```

this generate kotlin helpers for the proto and correctly works on gradle kotlin-dsl

the codelab only show how to configure for java and gradle groovy

Contributor guide

Open the contributing guide

Research direction

Start with the Datastore codelab's existing Java and Gradle Groovy protobuf configuration. Update the codelab to document Gradle Kotlin DSL setup and Kotlin Protobuf code generation, then verify that the documented configuration matches the working example in the issue.

Written by the indexing model from the issue text.

Assessment

Tech stack
kotlin
Domain
documentation
Issue type
Documentation
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.