{"id":16558351,"url":"https://github.com/leifzhang/gradlesample","last_synced_at":"2025-09-10T06:36:55.106Z","repository":{"id":39612615,"uuid":"283129368","full_name":"Leifzhang/GradleSample","owner":"Leifzhang","description":"gradle repo includeBuild","archived":false,"fork":false,"pushed_at":"2023-01-04T11:10:02.000Z","size":431,"stargazers_count":146,"open_issues_count":2,"forks_count":12,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-24T01:36:01.961Z","etag":null,"topics":["composebuilding","gradle","includebuilding","settings"],"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/Leifzhang.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}},"created_at":"2020-07-28T07:03:30.000Z","updated_at":"2025-05-14T03:27:28.000Z","dependencies_parsed_at":"2023-02-02T09:47:03.854Z","dependency_job_id":null,"html_url":"https://github.com/Leifzhang/GradleSample","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/Leifzhang/GradleSample","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Leifzhang%2FGradleSample","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Leifzhang%2FGradleSample/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Leifzhang%2FGradleSample/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Leifzhang%2FGradleSample/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Leifzhang","download_url":"https://codeload.github.com/Leifzhang/GradleSample/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Leifzhang%2FGradleSample/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274422345,"owners_count":25282124,"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","status":"online","status_checked_at":"2025-09-10T02:00:12.551Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["composebuilding","gradle","includebuilding","settings"],"created_at":"2024-10-11T20:10:31.357Z","updated_at":"2025-09-10T06:36:55.049Z","avatar_url":"https://github.com/Leifzhang.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GradleTask\n\n![Profile views](https://gpvc.arturio.dev/LeifzhangGradleSample)\n\n \n## 功能介绍\n \nrepo专门用于多仓库App混合编译使用，通过更改项目内的substitute,把远端的aar替换成本地源代码的形式参与项目编译环节，同时内部使用的是gradle settings includeBuild，所以项目内原先的逻辑不需要变更，可以直接使用。\n\nrepo插件同时项目会自动帮各位去同步远端的仓库代码，如果仓库branch没有发生变化则不会同步代码。\n\ndep插件则是负责将项目内的依赖版本更换成远端版本，同时进行version版本号策略清洗。\n\nversion 拿来做的是plugin的dep操作，因为考虑到多仓工程全局配置，所以尝试性的做了些黑科技，已经完成将versionCatalog定义在单一gradle文件内，然后完成项目内所有工程的共享能力。\n\nmonitor 拿来做gradle 相关日志统计，以及编译数据相关收集，以及获取app相关的依赖。\n\nplugin-r8 apk 方法签名检查工具，基于android r8 重新适配，偷学大佬的代码。\n\n## 使用规范\n\ndemo 因为很多都是settings插件，所以需要clone完工程之后将几个plugin推送到mavenLocal，之后在外层的settings直接引入对应插件。\n\n当前貌似没有找到settings插件的当场调试模式。\n\n全局插件采用了生成`initscript`，之后用文件的形式添加到`startParameter`中去，在第一个settings插件之后影响到所有`includebuild`工程。\n\n## 使用简介\n\n1. 打开项目的`settings.gradle`，记住是settings.gradle不是build.gradle\n2. 添加下面代码\n\n~~~\nbuildscript {\n    repositories {\n        mavenLocal()\n        maven { setUrl(\"https://maven.aliyun.com/repository/central/\") }\n\n    }\n    dependencies {\n        // 本地先尝试下 maven local 任务之后添加\n        //  classpath \"com.kronos.plugin:plugin-repo:0.2.0\"\n        //   classpath \"com.kronos.plugin:plugin-version:0.2.0\"\n    }\n}\n// 本地先尝试下 maven local 任务之后添加\n//apply plugin: \"kronos.plugins\"\n//apply plugin: 'kronos.settings'\n~~~\n3. 项目根目录下添加repo.xml\n\n~~~\n    \u003cmodule name=\"QrCodeLibrary\" branch=\"master\" origin=\"https://github.com/Leifzhang/QRScaner.git\"\n        srcBuild=\"false\" substitute=\"com.github.leifzhang:QrCodeLibrary\" /\u003e\n~~~\n其中srcBuild =true的情况代表你需要将这个仓库一起编译， name 代表的是你的仓库的modulename，切记，切记。\n\n4. 或者使用repo.yaml 进行include building\n\n~~~\nsrc: false\nmodules:\n  - branch: master\n    origin: https://github.com/Leifzhang/QRScaner.git\n    srcBuild: true\n    name: QRScaner\n  - branch: master\n    origin: https://github.com/Leifzhang/QRScaner.git\n    srcBuild: false\n    name: Router\n~~~\n\n5.  repo-include.yaml  完成include\n\n```\nsrc: false\nprojects:\n  - branch: master\n    origin: https://github.com/Leifzhang/QRScaner.git\n    srcBuild: true\n    modules:\n      - name: QRScaner\n      - name: abb\n```\n\n# 科普\n\n## substitute \n\nGradle依赖替换,在项目开发过程中，不可避免的需要引入一些第三方库，而不同的第三方库之间，可能存在一些依赖关系。例如：你依赖了库A与B，而同时B也依赖于A。这样就可能存在这种情况：你依赖的A的版本与B中依赖的A的版本不同。同时可以把依赖直接变更为project的形式。\n\n## 科学建议 \n\n个人建议每个模块都根据自己的group设置好group，以及模块名，一定要和aar版本一致，这样就可以充分的利用gradle本身的特性，如果当前module存在，就会自动完成aar切换到源码的操作.\n\n然后依赖方式都使用implementation group:module:version 这样就会自动完成源码和aar的切换。\n\n特别是在includeBuilding的情况下，因为是独立工程，所以project的configuration并不会作用在隔壁工程上\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleifzhang%2Fgradlesample","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleifzhang%2Fgradlesample","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleifzhang%2Fgradlesample/lists"}