From 39cead16dbcadf27ee6e4c68885a4ebe2c436f4b Mon Sep 17 00:00:00 2001 From: Rodrigo Lazo Paz Date: Fri, 12 Sep 2025 18:27:48 -0400 Subject: [PATCH 1/2] [Infra] Annotate subprojects with the type of project We extended the format of `subprojects.cfg` to support inline comments. Then, added a comment to indicate what type of project each entry points to, e.g. SDK or test-only. This is useful for tooling, like Gemini, as it can now understand better which subprojects to read/modify if a global, SDK-specific, action is necessary. The `agents.md` doc has been updated accordingly. --- agents.md | 13 +++++ settings.gradle.kts | 6 +-- subprojects.cfg | 126 ++++++++++++++++++++++---------------------- 3 files changed, 79 insertions(+), 66 deletions(-) diff --git a/agents.md b/agents.md index ef649d4cdec..aff79ba0436 100644 --- a/agents.md +++ b/agents.md @@ -2,6 +2,19 @@ This guide provides essential information for working within the `firebase-android-sdk` repository. +## Project Structure + +The `subprojects.cfg` file lists all the subprojects in this repository. Each line in this file +follows the format ` # `, where `project-type` can be one of the +following: + +- `sdk`: A public-facing SDK that is published. +- `test`: A test application or a test-only module. +- `util`: A utility module that is not part of the public API. +- `directory`: A directory containing other subprojects. + +This file is useful for understanding the role of each subproject in the repository. + ## Environment Setup To work with this repository, the Android SDK must be installed. Use the `sdkmanager` command-line diff --git a/settings.gradle.kts b/settings.gradle.kts index 21d672a3b53..54ebc9fdc65 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -46,14 +46,14 @@ dependencyResolutionManagement { * * Expected file format: * - Empty lines are ignored. - * - Lines starting with # are considered comments. + * - Text following a '#' character on the same line is treated as a comment. * - Other lines are treated as project paths. */ fun discoverSubprojects(subprojectsFile: File): List { return subprojectsFile .readLines() - .map { it.trim() } - .filter { it.isNotEmpty() && !it.startsWith("#") } + .map { it.split("#").firstOrNull()?.trim() ?: "" } + .filter { it.isNotEmpty() } } /** diff --git a/subprojects.cfg b/subprojects.cfg index c527c25b7a8..eefee6c350b 100644 --- a/subprojects.cfg +++ b/subprojects.cfg @@ -1,71 +1,71 @@ -appcheck -appcheck:firebase-appcheck-debug-testing -appcheck:firebase-appcheck-debug -appcheck:firebase-appcheck-interop -appcheck:firebase-appcheck-playintegrity -appcheck:firebase-appcheck-recaptchaenterprise -appcheck:firebase-appcheck +appcheck # directory +appcheck:firebase-appcheck-debug-testing # sdk +appcheck:firebase-appcheck-debug # sdk +appcheck:firebase-appcheck-interop # sdk +appcheck:firebase-appcheck-playintegrity # sdk +appcheck:firebase-appcheck-recaptchaenterprise # sdk +appcheck:firebase-appcheck # sdk -firebase-abt -firebase-ai -firebase-annotations -firebase-appdistribution -firebase-appdistribution-api -firebase-common -firebase-common:data-collection-tests -firebase-components -firebase-components:firebase-dynamic-module-support -firebase-config -firebase-config:bandwagoner -firebase-config:test-app -firebase-config-interop -firebase-crashlytics -firebase-crashlytics-ndk -firebase-database -firebase-database-collection -firebase-dataconnect -firebase-dataconnect:androidTestutil -firebase-dataconnect:connectors -firebase-dataconnect:testutil -firebase-datatransport -firebase-firestore -firebase-functions -firebase-messaging -firebase-messaging-directboot -firebase-inappmessaging -firebase-inappmessaging-display -firebase-installations-interop -firebase-installations -firebase-ml-modeldownloader -firebase-ml-modeldownloader:ml-data-collection-tests -firebase-perf -firebase-perf:dev-app -firebase-perf:e2e-app -firebase-sessions -firebase-sessions:benchmark -firebase-sessions:test-app -firebase-storage -protolite-well-known-types +firebase-abt # sdk +firebase-ai # sdk +firebase-annotations # sdk +firebase-appdistribution # sdk +firebase-appdistribution-api # sdk +firebase-common # sdk +firebase-common:data-collection-tests # tests +firebase-components # sdk +firebase-components:firebase-dynamic-module-support # sdk +firebase-config # sdk +firebase-config:bandwagoner # test +firebase-config:test-app # test +firebase-config-interop # sdk +firebase-crashlytics # sdk +firebase-crashlytics-ndk # sdk +firebase-database # sdk +firebase-database-collection # sdk +firebase-dataconnect # sdk +firebase-dataconnect:androidTestutil # util +firebase-dataconnect:connectors # sdk +firebase-dataconnect:testutil # util +firebase-datatransport # sdk +firebase-firestore # sdk +firebase-functions # sdk +firebase-messaging # sdk +firebase-messaging-directboot # sdk +firebase-inappmessaging # sdk +firebase-inappmessaging-display # sdk +firebase-installations-interop # sdk +firebase-installations # sdk +firebase-ml-modeldownloader # sdk +firebase-ml-modeldownloader:ml-data-collection-tests # test +firebase-perf # sdk +firebase-perf:dev-app # test +firebase-perf:e2e-app # test +firebase-sessions # sdk +firebase-sessions:benchmark # util +firebase-sessions:test-app # test +firebase-storage # sdk +protolite-well-known-types # sdk -encoders -encoders:firebase-encoders -encoders:firebase-encoders-json -encoders:firebase-encoders-processor -encoders:firebase-encoders-proto -encoders:firebase-encoders-reflective -encoders:firebase-decoders-json -encoders:protoc-gen-firebase-encoders -encoders:protoc-gen-firebase-encoders:tests +encoders # directory +encoders:firebase-encoders # sdk +encoders:firebase-encoders-json # sdk +encoders:firebase-encoders-processor # sdk +encoders:firebase-encoders-proto # sdk +encoders:firebase-encoders-reflective # sdk +encoders:firebase-decoders-json # sdk +encoders:protoc-gen-firebase-encoders # sdk +encoders:protoc-gen-firebase-encoders:tests # test -integ-testing +integ-testing # util -tools:lint +tools:lint # util -transport -transport:transport-api -transport:transport-backend-cct -transport:transport-runtime -transport:transport-runtime-testing +transport # directory +transport:transport-api # sdk +transport:transport-backend-cct # sdk +transport:transport-runtime # sdk +transport:transport-runtime-testing # sdk # Test Apps # disabled since they require google-services.json to build which is not always available in CI. From 6d94a8623292a15b5b9050f1a30fc32d220696d4 Mon Sep 17 00:00:00 2001 From: Rodrigo Lazo Date: Fri, 12 Sep 2025 18:35:03 -0400 Subject: [PATCH 2/2] Make all `test` entries consistent --- subprojects.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subprojects.cfg b/subprojects.cfg index eefee6c350b..f8505ecf8e7 100644 --- a/subprojects.cfg +++ b/subprojects.cfg @@ -12,7 +12,7 @@ firebase-annotations # sdk firebase-appdistribution # sdk firebase-appdistribution-api # sdk firebase-common # sdk -firebase-common:data-collection-tests # tests +firebase-common:data-collection-tests # test firebase-components # sdk firebase-components:firebase-dynamic-module-support # sdk firebase-config # sdk