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

Nobody has claimed this yet.

Assessment

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

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.

Description

Hi,

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

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

Dominant language
Kotlin
Stars
240
Forks
113
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from android/codelab-android-datastore

All issues in android/codelab-android-datastore

Similar issues

More Kotlin issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.