Skip to content

feat: Integrate AttributionId Flow - #2386

Open
LoyalAbbas wants to merge 3 commits into
mainfrom
startup_runtime_integration
Open

feat: Integrate AttributionId Flow#2386
LoyalAbbas wants to merge 3 commits into
mainfrom
startup_runtime_integration

Conversation

@LoyalAbbas

Copy link
Copy Markdown

Add androidx.startup:startup-runtime and a startup initializer to track sample repository usage. Uses androidx.startup.InitializationProvider for lightweight, automatic initialization on app startup.

@LoyalAbbas
LoyalAbbas requested review from dkhawk and kikoso August 14, 2026 05:36
@kikoso

kikoso commented Aug 14, 2026

Copy link
Copy Markdown
Collaborator

@LoyalAbbas , could you change the title to follow the semantic commits convention? Something like feat: integrate AttributionId Flow.

app-utils-ktx hardcoded minSdk 23 while the newly added :library
dependency requires minSdk 24, causing a manifest merger failure in CI.
@LoyalAbbas LoyalAbbas changed the title Integrate AttributionId Flow feat:Integrate AttributionId Flow Aug 14, 2026
@LoyalAbbas LoyalAbbas changed the title feat:Integrate AttributionId Flow feat: Integrate AttributionId Flow Aug 14, 2026

@kikoso kikoso left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left inline notes on the two main points plus a few nits found while digging into the CI failure.

Comment thread WearOS/Wearable/build.gradle.kts Outdated

// [START maps_wear_os_dependencies]
dependencies {
api(project(":library"))

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This api(project(":library")) line sits before [START_EXCLUDE silent], so it will be extracted into the public devsite install snippet along with the rest of this block. External developers following the docs would see a reference to an internal only Gradle module that does not exist in their project. snippets/app/build.gradle.kts places the same line inside the exclude block instead, worth doing the same here.

Also, could this be implementation(project(":library")) rather than api? AttributionIdInitializer is internal, so nothing here needs to re export :library's public surface as part of this module's own API.

Comment thread snippets/app-compose/build.gradle.kts Outdated

// [START maps_android_compose_dependency]
dependencies {
api(project(":library"))

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This api(project(":library")) line sits before [START_EXCLUDE silent], so it will be extracted into the public devsite install snippet along with the rest of this block. External developers following the docs would see a reference to an internal only Gradle module that does not exist in their project. snippets/app/build.gradle.kts places the same line inside the exclude block instead, worth doing the same here.

Also, could this be implementation(project(":library")) rather than api? AttributionIdInitializer is internal, so nothing here needs to re export :library's public surface as part of this module's own API.

Comment thread snippets/app-ktx/build.gradle.kts Outdated

// [START maps_android_ktx_install_snippet]
dependencies {
api(project(":library"))

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This api(project(":library")) line sits before [START_EXCLUDE silent], so it will be extracted into the public devsite install snippet along with the rest of this block. External developers following the docs would see a reference to an internal only Gradle module that does not exist in their project. snippets/app/build.gradle.kts places the same line inside the exclude block instead, worth doing the same here.

Also, could this be implementation(project(":library")) rather than api? AttributionIdInitializer is internal, so nothing here needs to re export :library's public surface as part of this module's own API.


// [START places_android_ktx_install_snippet]
dependencies {
api(project(":library"))

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This api(project(":library")) line sits before [START_EXCLUDE silent], so it will be extracted into the public devsite install snippet along with the rest of this block. External developers following the docs would see a reference to an internal only Gradle module that does not exist in their project. snippets/app/build.gradle.kts places the same line inside the exclude block instead, worth doing the same here.

Also, could this be implementation(project(":library")) rather than api? AttributionIdInitializer is internal, so nothing here needs to re export :library's public surface as part of this module's own API.

Comment thread snippets/app-utils-ktx/build.gradle.kts Outdated

// [START maps_android_utils_ktx_install_snippet]
dependencies {
api(project(":library"))

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This api(project(":library")) line sits before [START_EXCLUDE silent], so it will be extracted into the public devsite install snippet along with the rest of this block. External developers following the docs would see a reference to an internal only Gradle module that does not exist in their project. snippets/app/build.gradle.kts places the same line inside the exclude block instead, worth doing the same here.

Also, could this be implementation(project(":library")) rather than api? AttributionIdInitializer is internal, so nothing here needs to re export :library's public surface as part of this module's own API.

Comment thread FireMarkers/app/build.gradle.kts Outdated
}

dependencies {
api(project(":library"))

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could this be implementation(project(":library")) instead of api? AttributionIdInitializer is internal, so nothing here needs to re export :library's public surface as part of this module's own API.

}

dependencies {
api(project(":library"))

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could this be implementation(project(":library")) instead of api? AttributionIdInitializer is internal, so nothing here needs to re export :library's public surface as part of this module's own API.

@Keep
internal class AttributionIdInitializer : Initializer<Unit> {
override fun create(context: Context) {
// See [AttributionIdInitializer]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: this comment references its own class name (AttributionIdInitializer), looks like leftover copy paste.

Comment thread library/.gitignore Outdated
@@ -0,0 +1 @@
/build No newline at end of file

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: missing trailing newline.

#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: missing trailing newline.

@LoyalAbbas
LoyalAbbas force-pushed the startup_runtime_integration branch from 0e51137 to 67a57da Compare August 14, 2026 10:47

@kikoso kikoso left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants