android / android/codelab-android-datastore
Please update the Datastore with Protobuf codelab to support Gradle Kotlin DSL / Kotlin code generation
- 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
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