Renamed the `setFrameworkBaseName` extension function to
`configureTargets` to more accurately reflect its purpose of configuring
Kotlin Multiplatform targets. All Gradle build scripts across the
modules have been updated to use the new function name.
Refactored the iOS framework configuration from `shared/build.gradle
.kts` into a reusable `setFrameworkBaseName` extension function. This
change simplifies the build script by replacing boilerplate code with a
single function call.
Additionally, the `bundleId` is now set for the generated iOS framework.
Introduces the `iosArm64` target to the Kotlin Multiplatform
configuration, enabling the project to build for physical iOS devices.
The `jvm("desktop")` target declaration was also moved out of the iOS
configuration loop for correctness.
Configured the generated iOS framework to be static to align with the
project's build requirements. This ensures the framework is linked at
compile time.
Added and updated `README.md` files for every module to provide a clear
and detailed description of their responsibilities. This includes
documenting the purpose of the `data`, `domain`, `features`,
`libraries`, and platform-specific layers, improving overall project
clarity and maintainability.
Removed the dependency on `io.nlopez.compose.rules:ktlint` from the
build configuration and version catalog.
This change also includes:
- Deleting the now-unused `VersionCatalogBundles.kt` file.
- Cleaning up obsolete dependency accessors in
`VersionCatalogLibraries.kt`.
- Adding suppressions for unused entries in `libs.versions.toml`.
Migrated the application of custom Gradle convention plugins from
hardcoded string IDs to type-safe accessors from the version catalog
(`libs.versions.toml`). This change improves maintainability and
consistency across all modules.
Removed several obsolete dependencies from the version catalog (`libs
.versions.toml`) to simplify the build configuration. This includes the
Compose BOM, its corresponding bundle, `play-delivery`, `androidx
.annotation`, and `koin-android`.
Additionally, unused extension properties were removed from `VersionCatalogLibraries.kt` to align with the dependency cleanup.
Updated the Detekt configuration to ensure it runs after resource
accessorgeneration tasks. This prevents potential issues during static
analysis by establishing an explicit ordering with Compose-related
resource generation.
After upgrading to Detekt 2.0, the task was not working properly. The
results were always successful regardless of the changes in the code.
This was happening because additional configuration was needed for KMP
projects.
Removes the `android-library` and `android-compose` convention plugins.
The associated `CommonExtension.kt` file, containing shared
configuration logic, has also been deleted as it is no longer required.
Migrated the build configuration from `com.android.library` to the newer
`com.android.kotlin.multiplatform.library` plugin. This change
centralizes the Android configuration within the `kotlin` block.
Key changes include:
- Replaced `androidTarget` with the `androidLibrary` DSL.
- Moved `compileSdk`, `minSdk`, and resource settings into the `kotlin
.androidLibrary` block.
- Added explicit configuration for host and device tests.
- Updated the parcelize plugin application to use the `kotlin("plugin
.parcelize")` syntax.
Previously, the scripts using the Version Catalog extension were working
properly, but the IDE showed an error because the `libs` property
technically is not accessible from them. The issue was the name
shadowing, so renaming it fixes the IDE error. In addition, these
variables were updated to be private.
Ensured Android unit test lint tasks depend on Compose resource accessor
generation to resolve implicit dependency issues. This adjustment
enhances task reliability and complies with Gradle 9 validation rules.
Reorganized Gradle scripts to improve readability and maintainability,
ensuring compliance with the latest Kotlin DSL. Added configuration
caching to the `gradle.properties`, removed obsolete modules, and
adjusted dependencies order for consistency.
Ever since Twitter killed the Android Team, the ComposeRules project was
deprecated and amazing devs fro the community forked and support it.
This changes moves to the project and fixes the new lint rules
In the latest release (3.0.5), ProGuard was crashing the app during
startup. After some investigation, I decided to simply not obfuscate the
failing modules since only keeping the offending classes is causing
duplication issues.
Additional compiler rules were added to stop warning about StringFactory
https://issuetracker.google.com/issues/250197571
Lastly, the compiler was upgraded from 1.8 to 11 because the compiler
args needs this version.
Using some platform-specific dependencies and abstracting the core logic
of the Tracker feature, the following behavior was implemented:
- On Android, the feature still a Dynamic Feature that can be downloaded
by the users
- On iOS, the feature is static and will always be available for the
users
Previously, some versions were inside the Version Catalog TOML and
others were in the AlkaaVersions file. Since the versioning and
compiling will be even more important now that we will compile with KMP,
all the versions are centralized in a single place.
Also, the VersionCatalogExtensions was broken in several classes to make
it easier to understand. They are: Bundles, Libraries and Versions.
The Compose Bill Of Materials dependency was added to make it easier to
update and match different Compose versions. Kotlin and KSP were also
updated to match latest Compose.
Ops. The version inside com.escodro.android-library.gradle.kts was
hardcoded to Java 11. This was breaking the communication between the
repository and data source layers. Everything is fixed now.