Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ jobs:

build:
name: Build
runs-on: ubuntu-latest
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4
Expand Down
3 changes: 3 additions & 0 deletions MIGRATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,14 @@
- **Breaking Change**: The `Gradle Plugin` was split into 2. The main plugin that is registering all the manual tasks, and an Android specific one automatically registering the Android auto
generation task.
- For most projects the manual tasks are recommended. Only if you require or want to use the generation as part of the android build, use the `.android` plugin.
- The main plugin (`com.mikepenz.aboutlibraries.plugin`) provides tasks like `exportLibraryDefinitions` that need to be manually executed
- The Android plugin (`com.mikepenz.aboutlibraries.plugin.android`) automatically hooks into the Android build process

```kotlin
// To use the Android auto registering plugin - add the following to your module:
id("com.mikepenz.aboutlibraries.plugin.android")
```
- **Breaking Change**: The `AndroidConfig` class and its `registerAndroidTasks` property were removed, replaced by the Android-specific plugin
- **Breaking Change**: Reworked the `LibraryColors` interface to be more descriptive and more flexible
- Renamed `backgroundColor` to `libraryBackgroundColor`
- Renamed `contentColor` to `libraryContentColor`
Expand Down
47 changes: 32 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ This library collects dependency details, including licenses at compile time, an

## Latest releases 🛠

- Split Gradle Plugin | [v13.0.0](https://github.com/mikepenz/AboutLibraries/tree/13.0.0)
- Compose 1.8.x | Refined Compose UI Design | [v12.2.4](https://github.com/mikepenz/AboutLibraries/tree/12.2.4)
- Compose UI updates | Gradle Plugin refresh | [v12.0.1](https://github.com/mikepenz/AboutLibraries/tree/12.0.1)

Expand All @@ -52,13 +53,22 @@ Note: It will not automatically generate the meta-data. For Android see the andr
> The Gradle plugin is hosted via the [Gradle Plugin Portal](https://plugins.gradle.org/plugin/com.mikepenz.aboutlibraries.plugin).
> Using the `plugins` DSL is the recommended approach.

> [!NOTE]
> v13.x.y or newer moves the Android specific task registration into its own plugin.
> Please see the migration guide for more details.
> [!IMPORTANT]
> In v13.x.y, the Gradle Plugin was split into two separate plugins:
>
> 1. **Main Plugin** (`com.mikepenz.aboutlibraries.plugin`): Provides manual tasks for generating library definitions
> 2. **Android Plugin** (`com.mikepenz.aboutlibraries.plugin.android`): Automatically hooks into the Android build process
>
> For most projects, the main plugin is recommended. Only use the Android plugin if you specifically need the library definitions to be generated as part of the Android build
> process.
>
> See the [migration guide](MIGRATION.md) for more details.

<details open><summary><b>Using the plugins DSL (Recommended)</b></summary>
<p>

## Default Gradle Plugin - Multiplatform

```kts
// Root build.gradle.kts
id("com.mikepenz.aboutlibraries.plugin") version "${latestAboutLibsRelease}" apply false
Expand All @@ -67,6 +77,23 @@ id("com.mikepenz.aboutlibraries.plugin") version "${latestAboutLibsRelease}" app
id("com.mikepenz.aboutlibraries.plugin")
```

## Gradle Plugin - Android

To improve configuration cache compatibility and reduce unintended behavior, the auto registering as part of the Android build was moved into its own plugin in v13.x.y.

```kotlin
// App build.gradle.kts
id("com.mikepenz.aboutlibraries.plugin.android")
```

When using the `.android` plugin variant:

- The library definitions are automatically generated as part of the Android build process
- The `registerAndroidTasks` configuration no longer exists, as it now happens by default
- The generated file is automatically included in your Android resources
- No manual execution of tasks is required


</p>
</details>

Expand Down Expand Up @@ -98,16 +125,6 @@ apply plugin: 'com.mikepenz.aboutlibraries.plugin'
<details><summary><b>Gradle Plugin Configuration Options</b></summary>
<p>

## Gradle Plugin - Android

To improve configuration cache compatibility and reduce unintended behavior, the auto registering as part of the Android build was moved into its own plugin.
When using the `.android` plugin variant, the `registerAndroidTasks` configuration does no longer exist, as it now happens by default. If you do not need the meta data to be generated as part of the android build - the default plugin is recommended.

```kotlin
// App build.gradle.kts
id("com.mikepenz.aboutlibraries.plugin.android")
```

## Gradle Plugin Configuration

The plugin allows customization via the `aboutLibraries` extension in your build script.
Expand Down Expand Up @@ -170,8 +187,8 @@ aboutLibraries {

license {
// Define the strict mode, will fail if the project uses licenses not allowed
// - This will only automatically fail for Android projects which have `registerAndroidTasks` enabled
// For non Android projects, execute `exportLibraryDefinitions`
// - This will only automatically fail for Android projects using the Android-specific plugin (com.mikepenz.aboutlibraries.plugin.android)
// For other projects, execute `exportLibraryDefinitions` manually
strictMode = com.mikepenz.aboutlibraries.plugin.StrictMode.FAIL

// Allowed set of licenses, this project will be able to use without build failure
Expand Down
21 changes: 14 additions & 7 deletions aboutlibraries-core/api/android/aboutlibraries-core.api
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,15 @@ public final class com/mikepenz/aboutlibraries/Libs {
public fun toString ()Ljava/lang/String;
}

public synthetic class com/mikepenz/aboutlibraries/Libs$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public final synthetic class com/mikepenz/aboutlibraries/Libs$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Lcom/mikepenz/aboutlibraries/Libs$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/mikepenz/aboutlibraries/Libs;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/mikepenz/aboutlibraries/Libs;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}

public final class com/mikepenz/aboutlibraries/Libs$Builder {
Expand All @@ -46,14 +47,15 @@ public final class com/mikepenz/aboutlibraries/entity/Developer {
public fun toString ()Ljava/lang/String;
}

public synthetic class com/mikepenz/aboutlibraries/entity/Developer$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public final synthetic class com/mikepenz/aboutlibraries/entity/Developer$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Lcom/mikepenz/aboutlibraries/entity/Developer$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/mikepenz/aboutlibraries/entity/Developer;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/mikepenz/aboutlibraries/entity/Developer;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}

public final class com/mikepenz/aboutlibraries/entity/Developer$Companion {
Expand All @@ -74,14 +76,15 @@ public final class com/mikepenz/aboutlibraries/entity/Funding {
public fun toString ()Ljava/lang/String;
}

public synthetic class com/mikepenz/aboutlibraries/entity/Funding$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public final synthetic class com/mikepenz/aboutlibraries/entity/Funding$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Lcom/mikepenz/aboutlibraries/entity/Funding$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/mikepenz/aboutlibraries/entity/Funding;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/mikepenz/aboutlibraries/entity/Funding;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}

public final class com/mikepenz/aboutlibraries/entity/Funding$Companion {
Expand Down Expand Up @@ -123,14 +126,15 @@ public final class com/mikepenz/aboutlibraries/entity/Library {
public fun toString ()Ljava/lang/String;
}

public synthetic class com/mikepenz/aboutlibraries/entity/Library$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public final synthetic class com/mikepenz/aboutlibraries/entity/Library$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Lcom/mikepenz/aboutlibraries/entity/Library$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/mikepenz/aboutlibraries/entity/Library;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/mikepenz/aboutlibraries/entity/Library;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}

public final class com/mikepenz/aboutlibraries/entity/Library$Companion {
Expand Down Expand Up @@ -160,14 +164,15 @@ public final class com/mikepenz/aboutlibraries/entity/License {
public fun toString ()Ljava/lang/String;
}

public synthetic class com/mikepenz/aboutlibraries/entity/License$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public final synthetic class com/mikepenz/aboutlibraries/entity/License$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Lcom/mikepenz/aboutlibraries/entity/License$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/mikepenz/aboutlibraries/entity/License;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/mikepenz/aboutlibraries/entity/License;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}

public final class com/mikepenz/aboutlibraries/entity/License$Companion {
Expand All @@ -188,14 +193,15 @@ public final class com/mikepenz/aboutlibraries/entity/Organization {
public fun toString ()Ljava/lang/String;
}

public synthetic class com/mikepenz/aboutlibraries/entity/Organization$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public final synthetic class com/mikepenz/aboutlibraries/entity/Organization$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Lcom/mikepenz/aboutlibraries/entity/Organization$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/mikepenz/aboutlibraries/entity/Organization;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/mikepenz/aboutlibraries/entity/Organization;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}

public final class com/mikepenz/aboutlibraries/entity/Organization$Companion {
Expand All @@ -218,14 +224,15 @@ public final class com/mikepenz/aboutlibraries/entity/Scm {
public fun toString ()Ljava/lang/String;
}

public synthetic class com/mikepenz/aboutlibraries/entity/Scm$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public final synthetic class com/mikepenz/aboutlibraries/entity/Scm$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
public static final field INSTANCE Lcom/mikepenz/aboutlibraries/entity/Scm$$serializer;
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcom/mikepenz/aboutlibraries/entity/Scm;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcom/mikepenz/aboutlibraries/entity/Scm;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
}

public final class com/mikepenz/aboutlibraries/entity/Scm$Companion {
Expand Down
Loading
Loading