Skip to content

Add support for Authenticator App with opt-in flag and related config…, Fixes AB#3579566#418

Open
rohitluthra wants to merge 4 commits intomasterfrom
rohitluthra/addAuthenticatorToAndroidComplete
Open

Add support for Authenticator App with opt-in flag and related config…, Fixes AB#3579566#418
rohitluthra wants to merge 4 commits intomasterfrom
rohitluthra/addAuthenticatorToAndroidComplete

Conversation

@rohitluthra
Copy link
Copy Markdown

@rohitluthra rohitluthra commented Apr 15, 2026

Add Authenticator App to android-complete (opt-in)

PBI - AB#3579566

Summary

Integrates the Microsoft Authenticator app (authenticator/PhoneFactor) into the android-complete multi-repo workspace as an opt-in module. When the opt-in flag is off (the committed default), the workspace builds exactly as it does today — no new modules, no new dependencies, no jetifier overhead. When turned on, all Authenticator modules, the AuthApp Maven feed, and Authenticator buildscript plugins (Hilt, Navigation Safe Args, etc.) are wired in.

This lets developers who don't work on Authenticator keep a lean, fast Gradle sync, while developers who do work on it get a single unified workspace.

The opt-in flag: includeAuthenticatorApp

Resolved in priority order (highest wins):

  1. -PincludeAuthenticatorApp=true on the command line
  2. ~/.gradle/gradle.properties (per-user, never committed)
  3. local.properties (per-checkout, gitignored)
  4. gradle.properties (committed default — false)

When enabling, developers must also set android.enableJetifier=true (documented inline in gradle.properties) because some Authenticator deps (Samsung Knox supportlib, MsaSdk .aar blobs) were compiled against the legacy Android Support Library.

Changes

File Change
settings.gradle Read includeAuthenticatorApp from local.properties → gradle property. Conditionally register the vsts-maven-authapp plugin repo and include all 28 Authenticator modules (:MSAuthenticator, :AadRemoteNgcLibrary, :MsaSdk*, :WalletLibrary*, :VerifiableCredential-*, :uiautomator-tests, etc.). :Macrobenchmark is intentionally excluded (references :app internally, not needed for local dev).
build.gradle Resolve the opt-in flag into project.ext. When on: merge authenticator/PhoneFactor/gradle.properties into root ext, add the vsts-maven-authapp buildscript repo, and add Authenticator-required classpath deps (Hilt, Navigation Safe Args). Otherwise: behavior unchanged.
gradle.properties Added includeAuthenticatorApp=false (default) + android.enableJetifier=false (default) with detailed inline docs. Bumped org.gradle.jvmargs heap from -Xmx2048m-Xmx4096m to handle the larger module graph when Authenticator is enabled.
.gitconfig git droidSetup now conditionally clones the authenticator repo (AD-MFA-phonefactor-phoneApp-android) only when the opt-in flag is on, and runs submodule init for it. All other droid* aliases (droidStatus, droidCheckout, droidPull, droidPush, droidFetch, droidBranch, droidStash, droidNewFeature, droidShowBranches, droidCheckoutDev, droidUpdateSubmodules) gate the authenticator step on the same flag using a grep guard against local.properties / gradle.properties. The authenticator working branch is working (not dev). Also resolved a merge conflict with master (design-docs clone line preserved).
.gitignore Added Feature Orchestrator per-developer local config files (.github/developer-local.json, .github/orchestrator-config.json, .github/codebase-context.md).

How to enable locally

Add to local.properties (or ~/.gradle/gradle.properties):

includeAuthenticatorApp=true
android.enableJetifier=true

@github-actions
Copy link
Copy Markdown

❌ Work item link check failed. Description does not contain AB#{ID}.

Click here to Learn more.

@github-actions github-actions bot changed the title Add support for Authenticator App with opt-in flag and related config… Add support for Authenticator App with opt-in flag and related config…, Fixes AB#3579566 Apr 17, 2026
Move hardcoded ksp / kotlin.plugin.compose / androidx.room versions out of
the root build.gradle plugins {} block and resolve them in settings.gradle
via pluginManagement.resolutionStrategy.eachPlugin, reading from
authenticator/PhoneFactor/gradle.properties.
This makes Authenticator's gradle.properties the single source of truth:
 - kotlin.plugin.compose     -> kotlin_version
 - androidx.room             -> androidx_room_persistence_version
 - com.google.devtools.ksp   -> pinned here (couples Kotlin+KSP increment)
Avoids silent version drift between the Kotlin compiler and KSP/Compose
plugins when Authenticator bumps kotlin_version.
@rohitluthra rohitluthra marked this pull request as ready for review April 17, 2026 06:20
@rohitluthra rohitluthra requested a review from a team as a code owner April 17, 2026 06:20
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