New debug project type for debug functionality. This allows replacing Android’s debug build type
which is only supported by Android and not by Android KMP.q
Enable Android Lint by default for all project types.
Enable kotlinx.serialization by default for nav modules.
Enable abiValidation by default for all projects calling enableOssPublishing.
Fix Android default dependencies not being applied to KMP projects.
Added useSkie, useKopy, and usePoko to enable the respective plugins.
Added new versionBasedOnDate method and several overloads of computeVersionName
and computeVersionCode to make using them easier.
New com.freeletics.gradle:scripts-circleci artifact that contains helpers
for writing kts scripts that run in a CircleCI environment or interact
with CircleCI.
New com.freeletics.gradle:scripts-slack artifact that makes it easy
to write kts scripts that send Slack messages.
Updated ktlint to 1.4.1.
usePaparazzi() will now apply the official Paparazzi release instead of the Freeletics
Paparazzi fork.
The com.freeletics.gradle.root plugin is now shipped in the same artifact as the others.
Removed fgp.kotlin.anvilKsp and fgp.kotlin.anvilKspWithComponent. Anvil is now always run
through the Anvil KSP fork.
Removed enforcing a Gradle Daemon JVM by setting java-gradle in the version catalog. Use
Daemon JVM toolchains instead (run updateDaemonJvm task).
dependencyResolutionManagement.repositoriesMode = RepositoriesMode.FAIL_ON_PROJECT_REPOS is now always
enabled. The opt out Gradle property fgp.kotlin.multiplatformProject is not used anymore.
useDagger and useSerialization can now be used in multiplatform projects.
Add support for using Compose in Kotlin 2.0.0 through the new Compose compiler
plugin that is shipped as part of Kotlin.
Only enable Kotlin’s progressive mode if the language version matches or
exceeds the current Kotlin version.
Separate activating Anvil KSP for app modules from library modules. This
allows using Anvil KSP and K2 in most of the code base until Anvil KSP
is supporting contributed subcomponents.
addIosTargets now is not creating a framework anymore. addIosTargetsWithXcFramework
can be used for that instead.
Add mechanism to override version catalog versions through Gradle properties. The property should have
fgp.version.override.<name-of-version-in-catalog> as name.
Add support for setting a room.schemaLocation.
Add support for enabling kotlinx.serialization through useSerialization().
Set -Xjdk-release option for Kotlin/JVM projects.
Update the setup for Anvil KSP to support Anvil 2.5.0.
Removed options for Khonshu’s experimental navigation.
com.freeletics.gradle.app now enables generateLocaleConfig by default.
The build number logic has been changed from major version 24 on (2024 releases), see
#205 for more details.
Removed parts of the legacy project config in monorepo plugins
Updated to Kotlin 1.9.20 and enabled the default hierarchy template for multiplatform projects.
addIosTargets with enabled XcFrameworks and com.freeletics.gradle.publish.internal applied
will automatically set up everything to publish the framework (as zip) to Maven repositories
Suppress compiler warning about expect/actual classes being experimental
Default dependencies are now defined through the default-all, default-all-compile,
default-android and default-android-compile bundles which are automatically added
to all modules if the bundle exists.
Default test dependencies are now defined through the default-test,
default-test-compile and default-test-runtime bundles.
Default lint check dependencies are now defined through the default-lint bundle.
The root plugin is now automatically applying the java-platform plugin and adds all
version catalog entries to the platform. The monorepo plugins are also automatically
using the rootProject as platform.
The check task now depends on checkDependencyRules and verifyPaparazzi.
Disable the assemble* and lint reporting tasks for libraries in the monorepo plugins
to avoid accidentally running too many tasks when running something like ./gradlew assemble,
./gradlew check, ./gradlew build or ./gradlew lint.
Consolidated the Gradle plugins into one module and merged common with base plugins. As a result
the common was removed from plugin ids. For example com.freeletics.gradle.common.jvm is now
com.freeletics.gradle.jvm.
Plugin ids that previously used a - now use a ., e.g. com.freeletics.gradle.core-android is now
com.freeletics.gradle.core.android.
enableCompose() in the android block was replaced with a top level useCompose() function that
applies the Jetbrains Compose plugin for non Android projects.
It’s now possible to easily get Compose compiler reports by setting fgp.compose.enableCompilerMetrics=true
and/or fgp.compose.enableCompilerReports=true.
The useRoom() option will now automatically enable Room’s Kotlin codegen.
Paparazzi verify deltas are now automatically copied to the root projects build/reports directory.
Support for Licensee 1.8.0.
Support for Khonshu 0.17.0.
Fix configuration cache compatibility of checkDependencyRules
new fgp.kotlin.daggerKsp property to use KSP with Dagger
discoverProjects and discoverProjectsIn now have a boolean parameter to declare
whether kts build files are used or nor
project auto-disovery works better with the configuration cache by scanning less
directories and limiting the project depth (project auto discovery generally does
not work well with Gradle 8.1 and 8.2 because of a performance issue)
when enabling Dagger the new dagger.warnIfInjectionFactoryNotGeneratedUpstream flag
is enabled automatically
Multiplatform: new addAndroidTarget method to add Android as a target
Multiplatform: addCommonTargets now has a parameter to skip adding androidNative* targets
adjust auto discovery to work better with Gradle 8.1 config cache
make it possible to disable the default auto discovery
add discoverProjects to settings extension which works like the default discovery
add discoverProjectsIn to settings extension which allows only search specified folders for proects
change expected fl-whetstone-... version catalog names to mad-whetstone-...
make it possible to enable mad experimental navigation through settings extension (useMadExperimentalNavigation() and experimentalNavigation parameter on `inlu)