This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [com.google.devtools.ksp](https://goo.gle/ksp) ([source](https://redirect.github.com/google/ksp)) | `2.0.20-1.0.24` -> `2.0.21-1.0.25` | [![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.devtools.ksp/2.0.21-1.0.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.devtools.ksp/2.0.21-1.0.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.devtools.ksp/2.0.20-1.0.24/2.0.21-1.0.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.devtools.ksp/2.0.20-1.0.24/2.0.21-1.0.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin](https://goo.gle/ksp) ([source](https://redirect.github.com/google/ksp)) | `2.0.20-1.0.24` -> `2.0.21-1.0.25` | [![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin/2.0.21-1.0.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin/2.0.21-1.0.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin/2.0.20-1.0.24/2.0.21-1.0.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin/2.0.20-1.0.24/2.0.21-1.0.25?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | org.jetbrains.kotlin.plugin.parcelize | `2.0.20` -> `2.0.21` | [![age](https://developer.mend.io/api/mc/badges/age/maven/org.jetbrains.kotlin.plugin.parcelize/2.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.jetbrains.kotlin.plugin.parcelize/2.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.jetbrains.kotlin.plugin.parcelize/2.0.20/2.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jetbrains.kotlin.plugin.parcelize/2.0.20/2.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | org.jetbrains.kotlin.jvm | `2.0.20` -> `2.0.21` | [![age](https://developer.mend.io/api/mc/badges/age/maven/org.jetbrains.kotlin.jvm/2.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.jetbrains.kotlin.jvm/2.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.jetbrains.kotlin.jvm/2.0.20/2.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jetbrains.kotlin.jvm/2.0.20/2.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | org.jetbrains.kotlin.android | `2.0.20` -> `2.0.21` | [![age](https://developer.mend.io/api/mc/badges/age/maven/org.jetbrains.kotlin.android/2.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.jetbrains.kotlin.android/2.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.jetbrains.kotlin.android/2.0.20/2.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jetbrains.kotlin.android/2.0.20/2.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [org.jetbrains.kotlin:kotlin-gradle-plugin](https://kotlinlang.org/) ([source](https://redirect.github.com/JetBrains/kotlin)) | `2.0.20` -> `2.0.21` | [![age](https://developer.mend.io/api/mc/badges/age/maven/org.jetbrains.kotlin:kotlin-gradle-plugin/2.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.jetbrains.kotlin:kotlin-gradle-plugin/2.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.jetbrains.kotlin:kotlin-gradle-plugin/2.0.20/2.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jetbrains.kotlin:kotlin-gradle-plugin/2.0.20/2.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [org.jetbrains.kotlin:kotlin-stdlib](https://kotlinlang.org/) ([source](https://redirect.github.com/JetBrains/kotlin)) | `2.0.20` -> `2.0.21` | [![age](https://developer.mend.io/api/mc/badges/age/maven/org.jetbrains.kotlin:kotlin-stdlib/2.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.jetbrains.kotlin:kotlin-stdlib/2.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.jetbrains.kotlin:kotlin-stdlib/2.0.20/2.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jetbrains.kotlin:kotlin-stdlib/2.0.20/2.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [org.jetbrains.kotlinx:kotlinx-coroutines-play-services](https://redirect.github.com/Kotlin/kotlinx.coroutines) | `1.8.1` -> `1.9.0` | [![age](https://developer.mend.io/api/mc/badges/age/maven/org.jetbrains.kotlinx:kotlinx-coroutines-play-services/1.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.jetbrains.kotlinx:kotlinx-coroutines-play-services/1.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.jetbrains.kotlinx:kotlinx-coroutines-play-services/1.8.1/1.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jetbrains.kotlinx:kotlinx-coroutines-play-services/1.8.1/1.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [org.jetbrains.kotlinx:kotlinx-coroutines-test](https://redirect.github.com/Kotlin/kotlinx.coroutines) | `1.8.1` -> `1.9.0` | [![age](https://developer.mend.io/api/mc/badges/age/maven/org.jetbrains.kotlinx:kotlinx-coroutines-test/1.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.jetbrains.kotlinx:kotlinx-coroutines-test/1.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.jetbrains.kotlinx:kotlinx-coroutines-test/1.8.1/1.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jetbrains.kotlinx:kotlinx-coroutines-test/1.8.1/1.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [org.jetbrains.kotlinx:kotlinx-coroutines-android](https://redirect.github.com/Kotlin/kotlinx.coroutines) | `1.8.1` -> `1.9.0` | [![age](https://developer.mend.io/api/mc/badges/age/maven/org.jetbrains.kotlinx:kotlinx-coroutines-android/1.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.jetbrains.kotlinx:kotlinx-coroutines-android/1.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.jetbrains.kotlinx:kotlinx-coroutines-android/1.8.1/1.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jetbrains.kotlinx:kotlinx-coroutines-android/1.8.1/1.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>google/ksp (com.google.devtools.ksp)</summary> ### [`v2.0.21-1.0.25`](https://redirect.github.com/google/ksp/releases/tag/2.0.21-1.0.25) [Compare Source](https://redirect.github.com/google/ksp/compare/2.0.20-1.0.25...2.0.21-1.0.25) #### What's Changed - UPDATE_KOTLIN_VERSION: 2.0.21 by [@​ting-yuan](https://redirect.github.com/ting-yuan) in [https://github.com/google/ksp/pull/2145](https://redirect.github.com/google/ksp/pull/2145) **Full Changelog**: https://github.com/google/ksp/compare/2.0.21-RC-1.0.25...2.0.21-1.0.25 ### [`v2.0.20-1.0.25`](https://redirect.github.com/google/ksp/releases/tag/2.0.20-1.0.25) [Compare Source](https://redirect.github.com/google/ksp/compare/2.0.20-1.0.24...2.0.20-1.0.25) #### Bugs Fixed Inlined JVM name is not correct [#​1493](https://redirect.github.com/google/ksp/issues/1493) \[KSP2] NullPointerException when getting name of nested annotation [#​1963](https://redirect.github.com/google/ksp/issues/1963) \[KSP2] The status was unresolved for FirSimpleFunctionImpl [#​1938](https://redirect.github.com/google/ksp/issues/1938) \[KSP2] Class values in type annotations get resolved to error type [#​1933](https://redirect.github.com/google/ksp/issues/1933) \[KSP2] Comparing KSType leads to exception [#​1918](https://redirect.github.com/google/ksp/issues/1918) \[KSP2] Can't find values in repeatable annotations [#​1883](https://redirect.github.com/google/ksp/issues/1883) incremental: aggregating outputs should always be invalidated [#​2027](https://redirect.github.com/google/ksp/issues/2027) \[KSP2] Not yet implemented: KSValueArgumentLiteImpl.getLocation [#​2048](https://redirect.github.com/google/ksp/issues/2048) \[KSP2] Not yet implemented: KSValueArgumentImpl.getParent [#​2049](https://redirect.github.com/google/ksp/issues/2049) getSymbolsWithAnnotation returns copy function from data class [#​1996](https://redirect.github.com/google/ksp/issues/1996) \[KSP2] Annotations got use-site target when there are none specified [#​1882](https://redirect.github.com/google/ksp/issues/1882) getting null pointer exception [#​1929](https://redirect.github.com/google/ksp/issues/1929) \[KSP2] Calling getDeclarationsInSourceOrder throws KotlinIllegalStateExceptionWithAttachments [#​1930](https://redirect.github.com/google/ksp/issues/1930) \[KSP2] A failure occurred while executing com.google.devtools.ksp.gradle.KspAAWorkerAction [#​1941](https://redirect.github.com/google/ksp/issues/1941) KSP2: Resolver.getJvmNames doesn't work for inline and internal classes [#​1640](https://redirect.github.com/google/ksp/issues/1640) kspCaches don't work together with Gradle build cache [#​2042](https://redirect.github.com/google/ksp/issues/2042) #### Contributors Thank you so much! [@​ansman](https://redirect.github.com/ansman), [@​kuanyingchou](https://redirect.github.com/kuanyingchou) **Full Changelog**: https://github.com/google/ksp/compare/2.0.20-1.0.24...2.0.20-1.0.25 </details> <details> <summary>JetBrains/kotlin (org.jetbrains.kotlin:kotlin-gradle-plugin)</summary> ### [`v2.0.21`](https://redirect.github.com/JetBrains/kotlin/releases/tag/v2.0.21): Kotlin 2.0.21 ##### Changelog ##### Apple Ecosystem - [`KT-69093`](https://youtrack.jetbrains.com/issue/KT-69093) Xcode 16 support in Kotlin ##### Backend. Native. Debug - [`KT-71374`](https://youtrack.jetbrains.com/issue/KT-71374) lldb: step out breaks breaking in Xcode 16 ##### Compiler ##### Fixes - [`KT-69735`](https://youtrack.jetbrains.com/issue/KT-69735) K2: Static fields are missing from the declaration list of corresponding IrClass for java class - [`KT-71122`](https://youtrack.jetbrains.com/issue/KT-71122) Regression in Kotlin Compiler 2.0 causing NPE in the runtime - [`KT-70931`](https://youtrack.jetbrains.com/issue/KT-70931) K2 / Scripts: "cannot convert IrExpression to ConstantValue" when using function annotation - [`KT-70584`](https://youtrack.jetbrains.com/issue/KT-70584) K2: "IllegalStateException: flow for PostponedLambdaExitNode not initialized - traversing nodes in wrong order?" - [`KT-70808`](https://youtrack.jetbrains.com/issue/KT-70808) K2: "node has already been visited" with anonymous object in dead code - [`KT-69985`](https://youtrack.jetbrains.com/issue/KT-69985) K2: Classifier declarations from root package are resolved without imports in non-root packages - [`KT-70683`](https://youtrack.jetbrains.com/issue/KT-70683) K2: Internal compiler error in IrFakeOverrideSymbolBase.getOwner - [`KT-70901`](https://youtrack.jetbrains.com/issue/KT-70901) False positive Public-API inline function cannot access non-public-API property accessor - [`KT-70930`](https://youtrack.jetbrains.com/issue/KT-70930) K2: Java annotations not present on ENUM_ENTRY IR elements - [`KT-70194`](https://youtrack.jetbrains.com/issue/KT-70194) K2 IDE: exception on a very red file - [`KT-69399`](https://youtrack.jetbrains.com/issue/KT-69399) Native: IllegalStateException: "Failed to build cache" ##### Compose compiler ##### Fixes - [`b/329477544`](https://issuetracker.google.com/issues/329477544) Force open / overridden Composable functions to be non-restartable. - [`b/361652128`](https://issuetracker.google.com/issues/361652128) Disable live literal transform if the corresponding flag is disabled ##### IR. Actualizer - [`KT-70894`](https://youtrack.jetbrains.com/issue/KT-70894) IR crash. Unprocessed `IrFunctionFakeOverrideSymbol` when actualize to Java ##### IR. Tree - [`KT-71191`](https://youtrack.jetbrains.com/issue/KT-71191) SymbolTable: Check if the provided signature is public before adding a symbol to the SymbolTable ##### Native. Build Infrastructure - [`KT-71485`](https://youtrack.jetbrains.com/issue/KT-71485) K/N runtime parts don't build due to \_Float16 issues on x86\_64 macOS ##### Native. C Export - [`KT-69507`](https://youtrack.jetbrains.com/issue/KT-69507) LLVM 11 clang with Xcode 16 headers: standard c++ headers ##### Native. C and ObjC Import - [`KT-71029`](https://youtrack.jetbrains.com/issue/KT-71029) Investigate why stdarg.h declarations leak into testModuleA ##### Native. Platform Libraries - [`KT-70566`](https://youtrack.jetbrains.com/issue/KT-70566) LLVM 11 clang with Xcode 16 headers: 'sys/cdefs.h' file not found - [`KT-71624`](https://youtrack.jetbrains.com/issue/KT-71624) Eliminate remaining UIKit/AppKit removed signatures - [`KT-70031`](https://youtrack.jetbrains.com/issue/KT-70031) Rebuild platform libraries in 2.0.21 with Xcode 16 ##### Native. Testing - [`KT-70603`](https://youtrack.jetbrains.com/issue/KT-70603) C++ with -fmodules: cyclic dependency in module 'std': std -> \_wctype -> \__wctype -> std in dev llvm toolchains ##### Tools. CLI. Native - [`KT-71262`](https://youtrack.jetbrains.com/issue/KT-71262) KotlinNativeLink tasks fetching from network despite -Xoverride-konan-properties=dependenciesUrl= being set ##### Tools. Compiler Plugins - [`KT-71038`](https://youtrack.jetbrains.com/issue/KT-71038) PowerAssert: Constant on RHS of elvis operator leads to compiler crash ##### Tools. Daemon - [`KT-35381`](https://youtrack.jetbrains.com/issue/KT-35381) Get rid of the native-platform usage in kotlin compiler ##### Tools. Gradle. Multiplatform - [`KT-71444`](https://youtrack.jetbrains.com/issue/KT-71444) Certain POMs produced by Kotlin 2.0.20 cannot be consumed by KMP projects with Android targets - [`KT-70700`](https://youtrack.jetbrains.com/issue/KT-70700) Gradle 8.10: The value for task ':commonizeNativeDistribution' property 'kotlinNativeBundleBuildService' cannot be changed any further - [`KT-71396`](https://youtrack.jetbrains.com/issue/KT-71396) Gradle client side JVM explodes with OOM due to xcodebuild logs ##### Tools. Gradle. Native - [`KT-71419`](https://youtrack.jetbrains.com/issue/KT-71419) Light bundle KGP IT run against a stable K/N version ##### Tools. JPS - [`KT-71450`](https://youtrack.jetbrains.com/issue/KT-71450) Constant build failure: com.intellij.util.io.ClosedStorageException: storage is already closed </details> <details> <summary>Kotlin/kotlinx.coroutines (org.jetbrains.kotlinx:kotlinx-coroutines-play-services)</summary> ### [`v1.9.0`](https://redirect.github.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-190) [Compare Source](https://redirect.github.com/Kotlin/kotlinx.coroutines/compare/1.8.1...1.9.0) ##### Features - Wasm/WASI target support ([#​4064](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4064)). Thanks, [@​igoriakovlev](https://redirect.github.com/igoriakovlev)! - `limitedParallelism` now optionally accepts the name of the dispatcher view for easier debugging ([#​4023](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4023)). - No longer initialize `Dispatchers.IO` on the JVM when other standard dispatchers are accessed ([#​4166](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4166)). Thanks, [@​metalhead8816](https://redirect.github.com/metalhead8816)! - Introduced the `Flow<T>.chunked(size: Int): Flow<List<T>>` operator that groups emitted values into groups of the given size ([#​1290](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1290)). - Closeable dispatchers are instances of `AutoCloseable` now ([#​4123](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4123)). ##### Fixes - Calling `hasNext` on a `Channel`'s iterator is idempotent ([#​4065](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4065)). Thanks, [@​gitpaxultek](https://redirect.github.com/gitpaxultek)! - `CoroutineScope()` created without an explicit dispatcher uses `Dispatchers.Default` on Native ([#​4074](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4074)). Thanks, [@​whyoleg](https://redirect.github.com/whyoleg)! - Fixed a bug that prevented non-Android `Dispatchers.Main` from initializing when the Firebase dependency is used ([#​3914](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3914)). - Ensured a more intuitive ordering of tasks in `runBlocking` ([#​4134](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4134)). - Forbid casting a `Mutex` to `Semaphore` ([#​4176](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4176)). - Worked around a stack overflow that may occur when calling `asDeferred` on a `Future` many times ([#​4156](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4156)). ##### Deprecations and promotions - Advanced the deprecation levels for `BroadcastChannel`-based API ([#​4197](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4197)). - Advanced the deprecation levels for the old `kotlinx-coroutines-test` API ([#​4198](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4198)). - Deprecated `Job.cancelFutureOnCompletion` ([#​4173](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4173)). - Promoted `CoroutineDispatcher.limitedParallelism` to stable ([#​3864](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3864)). - Promoted `CoroutineStart.ATOMIC` from `ExperimentalCoroutinesApi` to `DelicateCoroutinesApi` ([#​4169](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4169)). - Promoted `CancellableContinuation.resume` with an `onCancellation` lambda to stable, providing extra arguments to the lambda ([#​4088](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4088)). - Marked the classes and interfaces that are not supposed to be inherited from with the new `InternalForInheritanceCoroutinesApi` opt-in ([#​3770](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3770)). - Marked the classes and interfaces inheriting from which is not stable with the new `ExperimentalForInheritanceCoroutinesApi` opt-in ([#​3770](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3770)). ##### Other - Kotlin was updated to 2.0 ([#​4137](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4137)). - Reworked the documentation for `CoroutineStart` and `Channel`-based API ([#​4147](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4147), [#​4148](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4148), [#​4167](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4167)). Thanks, [@​globsterg](https://redirect.github.com/globsterg)! - Simplified the internal implementation of `Job` ([#​4053](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4053)). - Small tweaks, fixes, and documentation improvements. </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/pachli/pachli-android). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC44MC4wIiwidXBkYXRlZEluVmVyIjoiMzguMTE1LjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
markdown2resource-plugin
Synopsis
Gradle plugin to convert one or more Markdown files to Java files with static constants where the Markdown has been converted to HTML. Similar (but not quite identical) to Android resources.
Example
In build.gradle
:
// Install the plugin
plugins {
id "app.pachli.plugins.markdown2resource"
}
// ...
// Configure the files to be processed
markdown2resource {
files = [ layout.projectDirectory.file('../PRIVACY.md') ]
}
In code:
// Assume binding.privacyPolicy references a `WebView`
// The generated string constant is in the `markdownR.html` package, named
// `PRIVACY_md`. To load the content in to a WebView it must be converted to
// base64
val html = Base64.encodeToString(markdownR.html.PRIVACY_md.toByteArray(), Base64.NO_PADDING)
binding.privacyPolicy.loadData(html, "text/html", "base64")
Configuration
The markdown2resource
block supports the following options.
files
- a list of RegularFile
in Markdown.
packageName
- the package name to use for the generated resources. Default is the android.namespace
of the build variant.
resourceClassName
- the outer class name to use for the generated resources. Default is markdownR
.
stringClassName
- the inner class name to use for the generated resources. Default is html
.
Tasks
The plugin creates N tasks, one for each configured build variant, named markdown2resource${variant.name.capitalized()}
For example:
- You have defined
debug
andrelease
build types, two tasks will be created,markdown2resourceDebug
andmarkdown2resourceRelease
. - You have defined
debug
andrelease
build types anddemo
andfull
product flavours, four tasks will be created,markdown2resourceDemoDebug
,markdown2resourceDemoRelease
,markdown2resourceFullDebug
,markdown2resourceFullRelease
.