{"id":13428728,"url":"https://github.com/android/gradle-recipes","last_synced_at":"2025-05-14T05:10:23.255Z","repository":{"id":37337162,"uuid":"259259613","full_name":"android/gradle-recipes","owner":"android","description":"Ready-to-use recipes for common build customizations that showcase the Android Gradle plugin's public APIs and DSL.","archived":false,"fork":false,"pushed_at":"2025-05-08T16:31:57.000Z","size":1527,"stargazers_count":2155,"open_issues_count":6,"forks_count":231,"subscribers_count":73,"default_branch":"agp-8.9","last_synced_at":"2025-05-08T16:44:32.203Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/android.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-04-27T08:59:03.000Z","updated_at":"2025-05-07T07:34:27.000Z","dependencies_parsed_at":"2024-03-26T13:26:39.656Z","dependency_job_id":"6767a7dc-b3bd-4a8a-a438-5c2c23c1b5ed","html_url":"https://github.com/android/gradle-recipes","commit_stats":{"total_commits":133,"total_committers":20,"mean_commits":6.65,"dds":0.7443609022556391,"last_synced_commit":"37f9c9d48e9897d0cdfad6b228dd5ced76c9f9ab"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/android%2Fgradle-recipes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/android%2Fgradle-recipes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/android%2Fgradle-recipes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/android%2Fgradle-recipes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/android","download_url":"https://codeload.github.com/android/gradle-recipes/tar.gz/refs/heads/agp-8.9","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254076849,"owners_count":22010611,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T01:01:03.650Z","updated_at":"2025-05-14T05:10:23.239Z","avatar_url":"https://github.com/android.png","language":"Kotlin","funding_links":[],"categories":["Libraries","Kotlin"],"sub_categories":[],"readme":"# Recipes for AGP version `8.9`\nThis branch contains recipes compatible with AGP 8.9. If you want to find recipes\nfor other AGP versions, switch to the corresponding `agp-*` branch.\n\nThis branch is read only. Contributions are only accepted on the `studio-main` branch. See `CONTRIBUTION.md`\nthere.\n# Recipes Index\nIndex is organized in categories, offering different ways to reach the recipe you want.\n## Themes\n* Android Assets - [addGeneratedSourceFolder](addGeneratedSourceFolder), [legacyTaskBridging](legacyTaskBridging)\n* Android Manifest - [transformManifest](transformManifest), [createSingleArtifact](createSingleArtifact), [perVariantManifestPlaceholder](perVariantManifestPlaceholder)\n* Artifact API - [listenToMultipleArtifact](listenToMultipleArtifact), [getMultipleArtifact](getMultipleArtifact), [transformAllClasses](transformAllClasses), [transformManifest](transformManifest), [getSingleArtifact](getSingleArtifact), [addMultipleArtifact](addMultipleArtifact), [listenToArtifacts](listenToArtifacts), [createSingleArtifact](createSingleArtifact), [transformDirectory](transformDirectory), [workerEnabledTransformation](workerEnabledTransformation), [transformMultiple](transformMultiple), [appendToMultipleArtifact](appendToMultipleArtifact), [appendToScopedArtifacts](appendToScopedArtifacts), [getScopedArtifacts](getScopedArtifacts)\n* DSL - [addBuildTypeUsingDslFinalize](addBuildTypeUsingDslFinalize), [extendingAgp](extendingAgp)\n* Dependency Resolution - [variantDependencySubstitutionTest](variantDependencySubstitutionTest)\n* Sources - [addGeneratedSourceFolder](addGeneratedSourceFolder), [legacyTaskBridging](legacyTaskBridging), [addCustomSourceType](addCustomSourceType)\n## Plugin Features\n* Fused Library Plugin - [applyFusedLibraryPlugin](applyFusedLibraryPlugin)\n* TestFixtures - [testFixtures](testFixtures)\n## APIs\n* AndroidComponentsExtension.beforeVariants() - [disableTests](disableTests), [selectVariants](selectVariants)\n* AndroidComponentsExtension.onVariants() - [addGeneratedSourceFolder](addGeneratedSourceFolder), [listenToMultipleArtifact](listenToMultipleArtifact), [disableTests](disableTests), [registerPreBuild](registerPreBuild), [getMultipleArtifact](getMultipleArtifact), [transformAllClasses](transformAllClasses), [transformManifest](transformManifest), [legacyTaskBridging](legacyTaskBridging), [allProjectsApkAction](allProjectsApkAction), [asmTransformClasses](asmTransformClasses), [addCustomBuildConfigFields](addCustomBuildConfigFields), [getSingleArtifact](getSingleArtifact), [addMultipleArtifact](addMultipleArtifact), [listenToArtifacts](listenToArtifacts), [createSingleArtifact](createSingleArtifact), [variantOutput](variantOutput), [transformDirectory](transformDirectory), [workerEnabledTransformation](workerEnabledTransformation), [transformMultiple](transformMultiple), [appendToMultipleArtifact](appendToMultipleArtifact), [onVariants](onVariants), [perVariantManifestPlaceholder](perVariantManifestPlaceholder), [addCustomSourceType](addCustomSourceType), [appendToScopedArtifacts](appendToScopedArtifacts), [getScopedArtifacts](getScopedArtifacts), [variantDependencySubstitutionTest](variantDependencySubstitutionTest), [extendingAgp](extendingAgp)\n* AndroidComponentsExtension.registerExtension() - [extendingAgp](extendingAgp)\n* AndroidComponentsExtension.selector() - [selectVariants](selectVariants), [allProjectsApkAction](allProjectsApkAction), [variantOutput](variantOutput)\n* ApplicationVariant.applicationId - [onVariants](onVariants)\n* ApplicationVariant.outputs - [variantOutput](variantOutput)\n* Artifact.ContainsMany - [listenToArtifacts](listenToArtifacts)\n* ArtifactTransformationRequest - [workerEnabledTransformation](workerEnabledTransformation)\n* Artifacts.add() - [addMultipleArtifact](addMultipleArtifact), [transformMultiple](transformMultiple)\n* Artifacts.forScope() - [transformAllClasses](transformAllClasses), [appendToScopedArtifacts](appendToScopedArtifacts), [getScopedArtifacts](getScopedArtifacts)\n* Artifacts.get() - [addGeneratedSourceFolder](addGeneratedSourceFolder), [transformManifest](transformManifest), [legacyTaskBridging](legacyTaskBridging), [allProjectsApkAction](allProjectsApkAction), [getSingleArtifact](getSingleArtifact), [addMultipleArtifact](addMultipleArtifact), [variantOutput](variantOutput), [transformDirectory](transformDirectory), [transformMultiple](transformMultiple), [appendToMultipleArtifact](appendToMultipleArtifact), [perVariantManifestPlaceholder](perVariantManifestPlaceholder)\n* Artifacts.getAll() - [getMultipleArtifact](getMultipleArtifact)\n* Artifacts.use() - [listenToMultipleArtifact](listenToMultipleArtifact), [transformManifest](transformManifest), [listenToArtifacts](listenToArtifacts), [createSingleArtifact](createSingleArtifact), [transformDirectory](transformDirectory), [workerEnabledTransformation](workerEnabledTransformation), [transformMultiple](transformMultiple), [appendToMultipleArtifact](appendToMultipleArtifact)\n* BuildConfigField() - [addCustomBuildConfigFields](addCustomBuildConfigFields)\n* BuiltArtifact - [workerEnabledTransformation](workerEnabledTransformation)\n* BuiltArtifact.versionCode - [listenToArtifacts](listenToArtifacts)\n* BuiltArtifact.versionName - [listenToArtifacts](listenToArtifacts)\n* BuiltArtifacts.elements - [listenToArtifacts](listenToArtifacts)\n* BuiltArtifacts.variantName - [listenToArtifacts](listenToArtifacts)\n* BuiltArtifactsLoader.load() - [listenToArtifacts](listenToArtifacts)\n* CanMinifyAndroidResourcesBuilder.shrinkResources - [selectVariants](selectVariants)\n* CanMinifyCodeBuilder.isMinifyEnabled - [selectVariants](selectVariants)\n* CombiningOperationRequest.toTransform() - [transformMultiple](transformMultiple)\n* Component.artifacts - [addGeneratedSourceFolder](addGeneratedSourceFolder), [getMultipleArtifact](getMultipleArtifact), [transformManifest](transformManifest), [legacyTaskBridging](legacyTaskBridging), [addMultipleArtifact](addMultipleArtifact), [createSingleArtifact](createSingleArtifact), [variantOutput](variantOutput), [transformDirectory](transformDirectory), [transformMultiple](transformMultiple), [appendToMultipleArtifact](appendToMultipleArtifact), [appendToScopedArtifacts](appendToScopedArtifacts), [getScopedArtifacts](getScopedArtifacts)\n* Component.compileConfiguration - [variantDependencySubstitutionTest](variantDependencySubstitutionTest)\n* Component.runtimeConfiguration - [variantDependencySubstitutionTest](variantDependencySubstitutionTest)\n* Component.sources - [addGeneratedSourceFolder](addGeneratedSourceFolder), [legacyTaskBridging](legacyTaskBridging), [addCustomSourceType](addCustomSourceType)\n* Configuration.resolutionStrategy - [variantDependencySubstitutionTest](variantDependencySubstitutionTest)\n* DslExtension.Builder.build() - [extendingAgp](extendingAgp)\n* DslExtension.Builder.extendBuildTypeWith() - [extendingAgp](extendingAgp)\n* DslExtension.Builder.extendProductFlavorWith() - [extendingAgp](extendingAgp)\n* DslExtension.Builder.extendProjectWith() - [extendingAgp](extendingAgp)\n* DslLifecycle.finalizeDsl() - [addBuildTypeUsingDslFinalize](addBuildTypeUsingDslFinalize)\n* GeneratesApk.applicationId - [onVariants](onVariants)\n* Gradle.beforeProject() - [allProjectsApkAction](allProjectsApkAction)\n* HasDeviceTests.deviceTests - [disableTests](disableTests)\n* HasDeviceTestsBuilder.deviceTests - [disableTests](disableTests)\n* HasHostTests.hostTests - [disableTests](disableTests)\n* HasHostTestsBuilder.hostTests - [disableTests](disableTests)\n* HasUnitTestBuilder.enableUnitTest - [selectVariants](selectVariants)\n* InAndOutDirectoryOperationRequest.toTransform() - [transformDirectory](transformDirectory)\n* InAndOutDirectoryOperationRequest.toTransformMany() - [workerEnabledTransformation](workerEnabledTransformation)\n* InAndOutFileOperationRequest.toTransform() - [transformManifest](transformManifest)\n* Instrumentation.transformClassesWith() - [asmTransformClasses](asmTransformClasses)\n* LifeCycleTasks.registerPreBuild() - [registerPreBuild](registerPreBuild)\n* MapProperty.put() - [addCustomBuildConfigFields](addCustomBuildConfigFields), [perVariantManifestPlaceholder](perVariantManifestPlaceholder)\n* MultipleArtifact.MULTIDEX_KEEP_PROGUARD - [getMultipleArtifact](getMultipleArtifact)\n* MultipleArtifact.NATIVE_DEBUG_METADATA - [listenToMultipleArtifact](listenToMultipleArtifact), [addMultipleArtifact](addMultipleArtifact), [transformMultiple](transformMultiple), [appendToMultipleArtifact](appendToMultipleArtifact)\n* MultipleArtifactTypeOutOperationRequest.toListenTo() - [listenToMultipleArtifact](listenToMultipleArtifact)\n* OutOperationRequest.toAppendTo() - [appendToMultipleArtifact](appendToMultipleArtifact)\n* OutOperationRequest.toCreate() - [createSingleArtifact](createSingleArtifact)\n* OutOperationRequest.toListenTo() - [listenToArtifacts](listenToArtifacts)\n* Plugin\u003cSettings\u003e - [allProjectsApkAction](allProjectsApkAction)\n* ResolutionStrategy.dependencySubstitution() - [variantDependencySubstitutionTest](variantDependencySubstitutionTest)\n* ScopedArtifact.CLASSES - [transformAllClasses](transformAllClasses), [asmTransformClasses](asmTransformClasses), [appendToScopedArtifacts](appendToScopedArtifacts), [getScopedArtifacts](getScopedArtifacts)\n* ScopedArtifacts.Scope.ALL - [appendToScopedArtifacts](appendToScopedArtifacts), [getScopedArtifacts](getScopedArtifacts)\n* ScopedArtifacts.Scope.PROJECT - [transformAllClasses](transformAllClasses), [asmTransformClasses](asmTransformClasses), [appendToScopedArtifacts](appendToScopedArtifacts), [getScopedArtifacts](getScopedArtifacts)\n* ScopedArtifacts.use() - [transformAllClasses](transformAllClasses), [asmTransformClasses](asmTransformClasses), [appendToScopedArtifacts](appendToScopedArtifacts), [getScopedArtifacts](getScopedArtifacts)\n* ScopedArtifactsOperation.toAppend() - [appendToScopedArtifacts](appendToScopedArtifacts)\n* ScopedArtifactsOperation.toGet() - [asmTransformClasses](asmTransformClasses), [appendToScopedArtifacts](appendToScopedArtifacts), [getScopedArtifacts](getScopedArtifacts)\n* ScopedArtifactsOperation.toTransform() - [transformAllClasses](transformAllClasses)\n* SingleArtifact.APK - [allProjectsApkAction](allProjectsApkAction), [listenToArtifacts](listenToArtifacts), [workerEnabledTransformation](workerEnabledTransformation)\n* SingleArtifact.ASSETS - [addGeneratedSourceFolder](addGeneratedSourceFolder), [legacyTaskBridging](legacyTaskBridging), [transformDirectory](transformDirectory)\n* SingleArtifact.BUNDLE - [getSingleArtifact](getSingleArtifact), [addMultipleArtifact](addMultipleArtifact), [appendToMultipleArtifact](appendToMultipleArtifact)\n* SingleArtifact.MERGED_MANIFEST - [transformManifest](transformManifest), [createSingleArtifact](createSingleArtifact), [variantOutput](variantOutput), [perVariantManifestPlaceholder](perVariantManifestPlaceholder)\n* SourceDirectories.addGeneratedSourceDirectory() - [addGeneratedSourceFolder](addGeneratedSourceFolder), [legacyTaskBridging](legacyTaskBridging), [addCustomSourceType](addCustomSourceType)\n* SourceDirectories.addStaticSourceDirectory() - [addCustomSourceType](addCustomSourceType)\n* TaskBasedOperation.wiredWith() - [listenToArtifacts](listenToArtifacts), [createSingleArtifact](createSingleArtifact), [transformMultiple](transformMultiple)\n* TaskBasedOperation.wiredWithDirectories() - [transformDirectory](transformDirectory), [workerEnabledTransformation](workerEnabledTransformation)\n* TaskBasedOperation.wiredWithFiles() - [transformManifest](transformManifest)\n* TaskBasedOperation.wiredWithMultiple() - [listenToMultipleArtifact](listenToMultipleArtifact)\n* TaskOutputs.upToDateWhen() - [transformManifest](transformManifest)\n* TaskProvider.flatMap() - [createSingleArtifact](createSingleArtifact)\n* TaskProvider.map() - [addCustomBuildConfigFields](addCustomBuildConfigFields)\n* Variant.buildConfigFields - [addCustomBuildConfigFields](addCustomBuildConfigFields)\n* Variant.components - [variantDependencySubstitutionTest](variantDependencySubstitutionTest)\n* Variant.manifestPlaceholders - [perVariantManifestPlaceholder](perVariantManifestPlaceholder)\n* Variant.nestedComponents - [variantDependencySubstitutionTest](variantDependencySubstitutionTest)\n* VariantBuilder.minSdk - [selectVariants](selectVariants)\n* VariantExtensionConfig - [extendingAgp](extendingAgp)\n* VariantOutputConfiguration.OutputType.SINGLE - [variantOutput](variantOutput)\n* VariantOutputConfiguration.outputType - [variantOutput](variantOutput)\n* VariantSelector.all() - [selectVariants](selectVariants), [variantOutput](variantOutput)\n* VariantSelector.withBuildType() - [selectVariants](selectVariants), [allProjectsApkAction](allProjectsApkAction), [variantDependencySubstitutionTest](variantDependencySubstitutionTest)\n* VariantSelector.withFlavor() - [selectVariants](selectVariants), [variantOutput](variantOutput)\n* VariantSelector.withName() - [selectVariants](selectVariants)\n* task.getOutputs() - [transformManifest](transformManifest)\n## Call chains\n* DslExtension.Builder().extendProjectWith().extendBuildTypeWith().extendProductFlavorWith().build() - [extendingAgp](extendingAgp)\n* HasDeviceTests.deviceTests.get() - [disableTests](disableTests)\n* HasDeviceTestsBuilder.deviceTests.get().enable - [disableTests](disableTests)\n* HasHostTests.hostTests.get() - [disableTests](disableTests)\n* HasHostTestsBuilder.hostTests.get().enable - [disableTests](disableTests)\n* androidComponents.beforeVariants {} - [disableTests](disableTests), [selectVariants](selectVariants)\n* androidComponents.finalizeDsl {} - [addBuildTypeUsingDslFinalize](addBuildTypeUsingDslFinalize)\n* androidComponents.onVariants {} - [addGeneratedSourceFolder](addGeneratedSourceFolder), [listenToMultipleArtifact](listenToMultipleArtifact), [disableTests](disableTests), [registerPreBuild](registerPreBuild), [getMultipleArtifact](getMultipleArtifact), [transformAllClasses](transformAllClasses), [transformManifest](transformManifest), [legacyTaskBridging](legacyTaskBridging), [allProjectsApkAction](allProjectsApkAction), [asmTransformClasses](asmTransformClasses), [addCustomBuildConfigFields](addCustomBuildConfigFields), [getSingleArtifact](getSingleArtifact), [addMultipleArtifact](addMultipleArtifact), [listenToArtifacts](listenToArtifacts), [createSingleArtifact](createSingleArtifact), [variantOutput](variantOutput), [transformDirectory](transformDirectory), [workerEnabledTransformation](workerEnabledTransformation), [transformMultiple](transformMultiple), [appendToMultipleArtifact](appendToMultipleArtifact), [onVariants](onVariants), [perVariantManifestPlaceholder](perVariantManifestPlaceholder), [addCustomSourceType](addCustomSourceType), [appendToScopedArtifacts](appendToScopedArtifacts), [getScopedArtifacts](getScopedArtifacts), [variantDependencySubstitutionTest](variantDependencySubstitutionTest), [extendingAgp](extendingAgp)\n* androidComponents.registerExtension() - [extendingAgp](extendingAgp)\n* androidComponents.selector().all() - [selectVariants](selectVariants), [variantOutput](variantOutput)\n* androidComponents.selector().withBuildType() - [selectVariants](selectVariants), [allProjectsApkAction](allProjectsApkAction), [variantDependencySubstitutionTest](variantDependencySubstitutionTest)\n* androidComponents.selector().withFlavor() - [selectVariants](selectVariants), [variantOutput](variantOutput)\n* androidComponents.selector().withName() - [selectVariants](selectVariants)\n* configuration.resolutionStrategy.dependencySubstitution {} - [variantDependencySubstitutionTest](variantDependencySubstitutionTest)\n* settings.gradle.beforeProject {} - [allProjectsApkAction](allProjectsApkAction)\n* substitute().using() - [variantDependencySubstitutionTest](variantDependencySubstitutionTest)\n* task.outputs.upToDateWhen {} - [transformManifest](transformManifest)\n* transformationRequest.submit() - [workerEnabledTransformation](workerEnabledTransformation)\n* variant.applicationId - [onVariants](onVariants)\n* variant.artifacts.add() - [addMultipleArtifact](addMultipleArtifact), [transformMultiple](transformMultiple)\n* variant.artifacts.forScope().use().toAppend() - [appendToScopedArtifacts](appendToScopedArtifacts)\n* variant.artifacts.forScope().use().toGet() - [asmTransformClasses](asmTransformClasses), [getScopedArtifacts](getScopedArtifacts)\n* variant.artifacts.forScope().use().toTransform() - [transformAllClasses](transformAllClasses)\n* variant.artifacts.get() - [addGeneratedSourceFolder](addGeneratedSourceFolder), [transformManifest](transformManifest), [legacyTaskBridging](legacyTaskBridging), [allProjectsApkAction](allProjectsApkAction), [asmTransformClasses](asmTransformClasses), [getSingleArtifact](getSingleArtifact), [addMultipleArtifact](addMultipleArtifact), [variantOutput](variantOutput), [transformDirectory](transformDirectory), [transformMultiple](transformMultiple), [appendToMultipleArtifact](appendToMultipleArtifact), [perVariantManifestPlaceholder](perVariantManifestPlaceholder)\n* variant.artifacts.getAll() - [getMultipleArtifact](getMultipleArtifact)\n* variant.artifacts.use().wiredWith().toAppendTo() - [appendToMultipleArtifact](appendToMultipleArtifact)\n* variant.artifacts.use().wiredWith().toCreate() - [createSingleArtifact](createSingleArtifact)\n* variant.artifacts.use().wiredWith().toListenTo() - [listenToMultipleArtifact](listenToMultipleArtifact), [listenToArtifacts](listenToArtifacts)\n* variant.artifacts.use().wiredWith().toTransform() - [transformMultiple](transformMultiple)\n* variant.artifacts.use().wiredWithDirectories().toTransform() - [transformDirectory](transformDirectory)\n* variant.artifacts.use().wiredWithDirectories().toTransformMany() - [workerEnabledTransformation](workerEnabledTransformation)\n* variant.artifacts.use().wiredWithFiles().toTransform() - [transformManifest](transformManifest)\n* variant.buildConfigFields.put() - [addCustomBuildConfigFields](addCustomBuildConfigFields)\n* variant.instrumentation.transformClassesWith() - [asmTransformClasses](asmTransformClasses)\n* variant.manifestPlaceholders.put() - [perVariantManifestPlaceholder](perVariantManifestPlaceholder)\n* variant.registerPreBuild() - [registerPreBuild](registerPreBuild)\n* variant.sources.*.addGeneratedSourceDirectory() - [addGeneratedSourceFolder](addGeneratedSourceFolder), [legacyTaskBridging](legacyTaskBridging), [addCustomSourceType](addCustomSourceType)\n* variant.sources.*.addStaticSourceDirectory() - [addCustomSourceType](addCustomSourceType)\n* variant.sources.*.all - [addGeneratedSourceFolder](addGeneratedSourceFolder), [addCustomSourceType](addCustomSourceType)\n## Others\n* All projects - [allProjectsApkAction](allProjectsApkAction)\n* DeviceTestBuilder.ANDROID_TEST_TYPE - [disableTests](disableTests)\n* Extending AGP DSL - [extendingAgp](extendingAgp)\n* HostTestBuilder.UNIT_TEST_TYPE - [disableTests](disableTests)\n* Legacy API bridging - [legacyTaskBridging](legacyTaskBridging)\n* Placeholders - [perVariantManifestPlaceholder](perVariantManifestPlaceholder)\n* Renaming APKs - [listenToArtifacts](listenToArtifacts)\n* SourceDirectories.Flat - [addCustomSourceType](addCustomSourceType)\n* SourceDirectories.Layered - [addGeneratedSourceFolder](addGeneratedSourceFolder)\n* SourceDirectories.add - [addCustomSourceType](addCustomSourceType)\n* registerSourceType - [addCustomSourceType](addCustomSourceType)\n# License\n```\nCopyright 2022 The Android Open Source Project\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    https://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandroid%2Fgradle-recipes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandroid%2Fgradle-recipes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandroid%2Fgradle-recipes/lists"}