Skip to content

Commit

Permalink
Merge branch 'remove_desugar' into compose_1.7
Browse files Browse the repository at this point in the history
  • Loading branch information
kizitonwose committed Jun 15, 2024
2 parents 5b6b0e1 + e4afc44 commit 7fcadfa
Show file tree
Hide file tree
Showing 23 changed files with 314 additions and 278 deletions.
8 changes: 7 additions & 1 deletion .github/workflows/check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ jobs:

instrumentation-tests:
name: Instrumentation tests
runs-on: macOS-latest
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: true
Expand Down Expand Up @@ -122,6 +122,12 @@ jobs:
fi
echo "::set-output name=ARCH::$ARCH"
- name: Enable KVM group perms
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Instrumentation tests
uses: reactivecircus/android-emulator-runner@v2
with:
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/publish-snapshot.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
name: Publish Snapshot

on:
workflow_dispatch:
push:
branches:
- main
Expand Down
9 changes: 4 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ LazyRow/LazyColumn for compose.

[![Tests](https://github.com/kizitonwose/Calendar/workflows/Check/badge.svg?branch=main)](https://github.com/kizitonwose/Calendar/actions)
[![Maven Central](https://img.shields.io/badge/dynamic/xml.svg?label=Maven%20Central&color=blue&url=https://repo1.maven.org/maven2/com/kizitonwose/calendar/core/maven-metadata.xml&query=(//metadata/versioning/versions/version)[not(contains(text(),%27-%27))][last()])](https://repo1.maven.org/maven2/com/kizitonwose/calendar/)
[![Maven Central Beta](https://img.shields.io/badge/dynamic/xml.svg?label=Maven%20Central%20Beta&color=slateblue&url=https://repo1.maven.org/maven2/com/kizitonwose/calendar/core/maven-metadata.xml&query=(//metadata/versioning/versions/version)[contains(text(),%27beta%27)][last()])](https://repo1.maven.org/maven2/com/kizitonwose/calendar/)
[![License](https://img.shields.io/badge/License-MIT-0097A7.svg)](https://github.com/kizitonwose/Calendar/blob/main/LICENSE.md)
[![Twitter](https://img.shields.io/badge/[email protected])](https://twitter.com/kizitonwose)

Expand Down Expand Up @@ -45,15 +46,13 @@ View the sample app's source code [here](https://github.com/kizitonwose/Calendar

## Setup

The library uses `java.time` classes via [Java 8+ API desugaring](https://developer.android.com/studio/write/java8-support#library-desugaring) for backward compatibility since these classes were added in Java 8.

#### Step 1

This step is required ONLY if your app's `minSdkVersion` is below 26. Jump to [step 2](#step-2) if this does not apply to you.
**This step is required ONLY if your app's `minSdkVersion` is below 26. Jump to [step 2](#step-2) if this does not apply to you.**

To set up your project for desugaring, you need to first ensure that you are using [Android Gradle plugin](https://developer.android.com/studio/releases/gradle-plugin#updating-plugin) 4.0.0 or higher.
Apps with `minSdkVersion` below 26 have to enable [Java 8+ API desugaring](https://developer.android.com/studio/write/java8-support#library-desugaring) for backward compatibility since `java.time` classes were added in Java 8 which is supported natively starting from Android SDK 26. To set up your project for desugaring, you need to first ensure that you are using [Android Gradle plugin](https://developer.android.com/studio/releases/gradle-plugin#updating-plugin) 4.0.0 or higher.

Then include the following in your app's build.gradle file:
Then include the following in your app's `build.gradle` file:

```groovy
android {
Expand Down
31 changes: 0 additions & 31 deletions build.gradle

This file was deleted.

15 changes: 15 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import com.kizitonwose.calendar.buildsrc.Plugins

plugins {
with(com.kizitonwose.calendar.buildsrc.Plugins) {
applyRootPlugins()
}
}

allprojects {
apply(plugin = Plugins.kotlinter)
}

tasks.register<Delete>("clean").configure {
delete(rootProject.layout.buildDirectory)
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,49 @@
package com.kizitonwose.calendar.buildsrc

import org.gradle.api.JavaVersion
import org.gradle.jvm.toolchain.JavaLanguageVersion
import org.gradle.kotlin.dsl.PluginDependenciesSpecScope
import kotlin.math.max

object Config {
val compatibleJavaVersion = JavaVersion.VERSION_17
val compatibleJavaLanguageVersion = JavaLanguageVersion.of(compatibleJavaVersion.majorVersion.toInt())
}

object Android {
const val minSdkLibraryCore = 4
const val minSdkLibraryView = 15
const val minSdkLibraryCompose = 21
const val minSdkSample = 21
const val targetSdk = 33
const val minSdkViewLibrary = 15
const val minSdkComposeLibrary = 21
val minSdkSampleApp = max(minSdkViewLibrary, minSdkComposeLibrary)
const val targetSdk = 34
const val compileSdk = 34

// See compose/kotlin version mapping
// https://developer.android.com/jetpack/androidx/releases/compose-kotlin
const val composeCompiler = "1.5.9"
const val composeCompiler = "1.5.14"
}

object Plugins {
const val android = "com.android.tools.build:gradle:8.2.2"
const val kotlin = Kotlin.gradlePlugin
const val kotlinter = "org.jmailen.gradle:kotlinter-gradle:4.2.0"
const val versions = "com.github.ben-manes:gradle-versions-plugin:0.51.0"
const val mavenPublish = "com.vanniktech:gradle-maven-publish-plugin:0.27.0"
private const val agpVersion = "8.4.0"
const val androidApp = "com.android.application"
const val androidLibrary = "com.android.library"
const val kotlinJvm = "org.jetbrains.kotlin.jvm"
const val kotlinAndroid = "org.jetbrains.kotlin.android"
const val kotlinter = "org.jmailen.kotlinter"
const val mavenPublish = "com.vanniktech.maven.publish"
const val versionCheck = "com.github.ben-manes.versions"

fun PluginDependenciesSpecScope.applyRootPlugins() {
id(androidApp).version(agpVersion).apply(false)
id(androidLibrary).version(agpVersion).apply(false)
id(kotlinAndroid).version(Kotlin.version).apply(false)
id(kotlinter).version("4.3.0").apply(false)
id(mavenPublish).version("0.28.0").apply(false)
id(versionCheck).version("0.51.0").apply(true)
}
}

object Kotlin {
private const val version = "1.9.22"
const val gradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:$version"
internal const val version = "1.9.24"
const val stdLib = "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$version"
}

Expand All @@ -47,11 +61,11 @@ object Libs {
object View {
const val legacySupport = "androidx.legacy:legacy-support-v4:1.0.0"
const val appCompat = "androidx.appcompat:appcompat:1.6.1"
const val coreKtx = "androidx.core:core-ktx:1.12.0"
const val coreKtx = "androidx.core:core-ktx:1.13.1"
const val constraintLayout = "androidx.constraintlayout:constraintlayout:2.1.4"
const val cardView = "androidx.cardview:cardview:1.0.0"
const val recyclerView = "androidx.recyclerview:recyclerview:1.3.2"
const val material = "com.google.android.material:material:1.9.0"
const val material = "com.google.android.material:material:1.12.0"

object Test {
private const val espressoVersion = "3.5.1"
Expand All @@ -70,7 +84,7 @@ object Libs {
const val tooling = "androidx.compose.ui:ui-tooling:$composeVersion"
const val runtime = "androidx.compose.runtime:runtime:$composeVersion"
const val material = "androidx.compose.material:material:$composeVersion"
const val activity = "androidx.activity:activity-compose:1.8.2"
const val activity = "androidx.activity:activity-compose:1.9.0"
const val navigation = "androidx.navigation:navigation-compose:2.7.7"

object Test {
Expand Down
44 changes: 0 additions & 44 deletions compose/build.gradle

This file was deleted.

48 changes: 48 additions & 0 deletions compose/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import com.kizitonwose.calendar.buildsrc.Android
import com.kizitonwose.calendar.buildsrc.Config
import com.kizitonwose.calendar.buildsrc.Kotlin
import com.kizitonwose.calendar.buildsrc.Libs

plugins {
with(com.kizitonwose.calendar.buildsrc.Plugins) {
id(androidLibrary)
id(kotlinAndroid)
id(mavenPublish)
}
}

android {
compileSdk = Android.compileSdk
namespace = "com.kizitonwose.calendar.compose"
defaultConfig {
minSdk = Android.minSdkComposeLibrary
}
java {
toolchain {
languageVersion.set(Config.compatibleJavaLanguageVersion)
}
}
kotlin {
jvmToolchain {
languageVersion.set(Config.compatibleJavaLanguageVersion)
}
}
buildFeatures {
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = Android.composeCompiler
}
}

dependencies {
api(project(":core"))
implementation(project(":data"))
implementation(Kotlin.stdLib)

implementation(Libs.Compose.ui)
implementation(Libs.Compose.tooling)
implementation(Libs.Compose.foundation)

testImplementation(Libs.Core.Test.junit)
}
30 changes: 0 additions & 30 deletions core/build.gradle

This file was deleted.

25 changes: 25 additions & 0 deletions core/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import com.kizitonwose.calendar.buildsrc.Config
import com.kizitonwose.calendar.buildsrc.Libs

plugins {
with(com.kizitonwose.calendar.buildsrc.Plugins) {
id(kotlinJvm)
id(mavenPublish)
}
}

java {
toolchain {
languageVersion.set(Config.compatibleJavaLanguageVersion)
}
}

kotlin {
jvmToolchain {
languageVersion.set(Config.compatibleJavaLanguageVersion)
}
}

dependencies {
implementation(Libs.Compose.runtime) // Only needed for @Immutable annotation.
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,10 @@ fun daysOfWeek(firstDayOfWeek: DayOfWeek = firstDayOfWeekFromLocale()): List<Day
}

/**
* Returns the first day of the week from the default locale.
* Returns the first day of the week from the provided locale.
*/
fun firstDayOfWeekFromLocale(): DayOfWeek = WeekFields.of(Locale.getDefault()).firstDayOfWeek
@JvmOverloads
fun firstDayOfWeekFromLocale(locale: Locale = Locale.getDefault()): DayOfWeek = WeekFields.of(locale).firstDayOfWeek

/**
* Returns a [LocalDate] at the start of the month.
Expand Down
34 changes: 0 additions & 34 deletions data/build.gradle

This file was deleted.

Loading

0 comments on commit 7fcadfa

Please sign in to comment.