To create Baseline Profiles for a library, use the
[Baseline Profile Gradle plugin](https://developer.android.com/topic/performance/baselineprofiles/configure-baselineprofiles).

There are three modules involved in creating Baseline Profiles for a library:

- Sample app module: contains the sample app that uses your library.
- Library module: the module you want to generate the profile for.
- Baseline Profile module: the test module that generates the Baseline Profiles.

To generate a Baseline Profile for a library, perform the following steps:  
1. Create a new `com.android.test` module---for example, `:baseline-profile`.
2. Configure the `build.gradle.kts` file for the `:baseline-profile` module. [The configuration is
   essentially the same as for an app](https://developer.android.com/topic/performance/baselineprofiles/create-baselineprofile#create-new-profile-plugin), but make sure to set the `targetProjectPath` to the sample app module.
3. Create a Baseline Profile test in the `:baseline-profile` test module. This needs to be specific to the sample app and must use all the functionalities of the library.
4. Update the configuration in `build.gradle.ktss` file in the library module, say `:library`.
   1. Apply the plugin `androidx.baselineprofile`.
   2. Add a `baselineProfile` dependency to the `:baseline-profile` module.
3. Apply the consumer plugin configuration you want, as shown in the following example.  

### Kotlin

```kotlin
plugins {
    id("com.android.library")
    id("androidx.baselineprofile")
}

android { ... }

dependencies {
    ...
    // Add a baselineProfile dependency to the `:baseline-profile` module.
    baselineProfile(project(":baseline-profile"))
}

// Baseline Profile Gradle plugin configuration.
baselineProfile {

    // https://developer.android.com/topic/performance/baselineprofile/configure-baselineprofiles#filter-profile-rules the generated profile rules. 
    // This example keeps the classes in the `com.library` package all its subpackages.
    filter {
        include "com.mylibrary.**"
    }
}
```

### Groovy

```groovy
plugins {
    id 'com.android.library'
    id 'androidx.baselineprofile'
}

android { ... }

dependencies {
    ...
    // Add a baselineProfile dependency to the `:baseline-profile` module.
    baselineProfile ':baseline-profile'
}

// Baseline Profile Gradle plugin configuration.
baselineProfile {

    // https://developer.android.com/topic/performance/baselineprofile/configure-baselineprofiles#filter-profile-rules the generated profile rules. 
    // This example keeps the classes in the `com.library` package all its subpackages.
    filter {
        include 'com.mylibrary.**'
    }
}
```
5. Add the `androidx.baselineprofile` plugin to the `build.gradle.kts` file in the app module `:sample-app`.  

   ### Kotlin

   ```kotlin
   plugins {
       ...
       id("androidx.baselineprofile")
   }
   ```

   ### Groovy

   ```groovy
   plugins {
       ...
       id 'androidx.baselineprofile'
   }
   ```
6. Generate the profile by running the following code: `./gradlew :library:generateBaselineProfile`.

At the end of the generation task, the Baseline Profile is stored at
`library/src/main/generated/baselineProfiles`.