{"id":25287537,"url":"https://github.com/gradleup/auto-manifest","last_synced_at":"2025-04-09T07:07:47.746Z","repository":{"id":42033250,"uuid":"264462846","full_name":"GradleUp/auto-manifest","owner":"GradleUp","description":"Generates AndroidManifest.xml in simple libraries so that you don't have to","archived":false,"fork":false,"pushed_at":"2024-11-14T13:53:27.000Z","size":174,"stargazers_count":88,"open_issues_count":1,"forks_count":6,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-02T05:07:39.469Z","etag":null,"topics":["android","android-library","androidmanifest","gradle","gradle-plugin"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GradleUp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2020-05-16T15:07:15.000Z","updated_at":"2024-11-22T09:19:51.000Z","dependencies_parsed_at":"2025-02-28T19:11:38.873Z","dependency_job_id":"c44da1ba-8e86-40d9-a7cc-a1dfc545208a","html_url":"https://github.com/GradleUp/auto-manifest","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GradleUp%2Fauto-manifest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GradleUp%2Fauto-manifest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GradleUp%2Fauto-manifest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GradleUp%2Fauto-manifest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GradleUp","download_url":"https://codeload.github.com/GradleUp/auto-manifest/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247994121,"owners_count":21030050,"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":["android","android-library","androidmanifest","gradle","gradle-plugin"],"created_at":"2025-02-12T22:39:56.241Z","updated_at":"2025-04-09T07:07:47.701Z","avatar_url":"https://github.com/GradleUp.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# This project is archived\n\nWith Android Gradle Plugin namespaces ([doc](https://developer.android.com/build/configure-app-module#set-namespace)), most of the functionality provided by this plugin is now natively supported and we do not plan to support this plugin anymore.\n\n----\n\nAuto Manifest ![CI](https://github.com/GradleUp/auto-manifest/workflows/CI/badge.svg)\n=============\n\n`AndroidManifest.xml` file is crucial to define Android specific properties like `minSdkVersion`, `uses-permission` etc.\n  \nUnfortunately, `package` property must be defined in `AndroidManifest.xml` and mandatory for `BuildConfig` and `R\n` class generation. In most of my Gradle modules, `AndroidManifest.xml` is just 1 line:\n```xml\n\u003cmanifest package=\"foo\" /\u003e\n```\n\nHere comes AutoManifest Gradle Plugin to rescue 🚀\n\n- This is not meant for full replacement for AndroidManifest.xml file. It is useful for those 1-liner manifests where you don't have any `Activity/Service` or permission defined.\n- It is easy to integrate into current projects. If manifest file is present, it will be no-op.\n- You can add it per module or to the root `build.gradle`. If applied to root, it will even auto generate package names based on module paths.\n\nConfiguration\n-------------\n\n[ ![Gradle Plugin Portal](https://img.shields.io/maven-metadata/v/https/plugins.gradle.org/m2/com/gradleup/auto/manifest/com.gradleup.auto.manifest.gradle.plugin/maven-metadata.xml.svg?label=Gradle%20Plugins%20Portal) ](https://plugins.gradle.org/plugin/com.gradleup.auto.manifest)\n\nAdd the plugin in your `build.gradle` file (preferably in root one)\n\n\u003cdetails open\u003e\u003csummary\u003eKotlin\u003c/summary\u003e\n\n```kotlin\nplugins {\n    id(\"com.gradleup.auto.manifest\") version \"\u003clatest-version\u003e\"\n}\n\nautoManifest {\n    // Mandatory packageName\n    packageName.set(\"com.company.example\")\n\n    // OPTIONAL //\n    // Applies recursively to sub-modules so you don't have to\n    // Sub-module package names will be auto generated by using their relative path\n    // Default: true\n    applyRecursively.set(true)\n    \n    // OPTIONAL //\n    // Using dashes `-` is pretty common in module names. But they are not allowed within Java package names.\n    // When this flag is enabled, they will be replaced by a dot. By default, they will be replaced with an underscore.\n    // Default: false\n    replaceDashesWithDot.set(true)\n \n    //\n    // Disables auto manifest generation per module (aka subproject)\n    //\n    // When [applyRecursively] is enabled, if you face any issues on a certain module with custom\n    // setup, you can use this to disable for that module.\n    // Example in a module:\n    //\n    // plugins {\n    //   id(\"com.android.library\")\n    //   id(\"auto-manifest\")\n    // }\n    // autoManifest.disable()\n    //\n    disable()\n}\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eGroovy\u003c/summary\u003e\n\n```kotlin\nplugins {\n    id 'com.gradleup.auto.manifest' version '\u003clatest-version\u003e'\n}\n\nautoManifest {\n    // Mandatory packageName\n    packageName = 'com.company.example'\n\n    // OPTIONAL //\n    // Applies recursively to sub-modules so you don't have to\n    // Sub-module package names will be auto generated by using their relative path\n    // Default: true\n    applyRecursively = true\n \n    // OPTIONAL //\n    // Using dashes `-` is pretty common in module names. But they are not allowed within Java package names.\n    // When this flag is enabled, they will be replaced by a dot. By default, they will be replaced with an underscore.\n    // Default: false\n    replaceDashesWithDot = true\n    \n    //\n    // Disables auto manifest generation per module (aka subproject)\n    //\n    // When [applyRecursively] is enabled, if you face any issues on a certain module with custom\n    // setup, you can use this to disable for that module.\n    // Example in a module:\n    //\n    // plugins {\n    //   id(\"com.android.library\")\n    //   id(\"auto-manifest\")\n    // }\n    // autoManifest.disable()\n    //\n    disable()\n}\n```\n\u003c/details\u003e\n\nTa-da 🎉 Now just put your Java/Kotlin files and don't worry about the rest.\n\nNested Modules\n--------------\n\nTo make it easy for you `applyRecursively` is enabled by default. This will automatically generate\n`AndroidManifest.xml` for you in all modules recursively. You have 2 options to override:\n\n- If you need more info like permissions, Activity definitions, you can continue to have your\n`AndroidManifest.xml` and recursive generation will be skipped for that module.\n- If you need to override, you can apply the plugin again in a nested Gradle module and provide a\ncustom packageName\n\nPerformance\n-----------\n\n- This project uses Gradle's [Lazy Task Configuration APIs][lazy] and do not cause eager task creation in AGP.\n- It generates the `AndroidManifest.xml` file lazily. That means \"zero\" impact on Gradle configuration times.\n- It supports build cache so that the files are generated only once and re-used across builds.\n\nSample App\n----------\n\nCheckout the sample app with multi-modules where only the Application module defines `AndroidManifest.xml` - available\n [here][sample]\n\nIn Action\n---------\n\nHere is the first integration into one of my apps:  https://github.com/tasomaniac/OpenLinkWith/commit/5b4029e922c33816fde67400e6c1ac40e015c9b9\n\nPlugin is added in couple of lines and many `AndroidManifest.xml` files are removed. 🎉\n\n[lazy]: https://docs.gradle.org/current/userguide/task_configuration_avoidance.html\n[sample]: https://github.com/GradleUp/auto-manifest/tree/master/sample\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgradleup%2Fauto-manifest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgradleup%2Fauto-manifest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgradleup%2Fauto-manifest/lists"}