adobe / adobe/aepsdk-core-android

com.adobe.marketing.mobile:core transitively depends on appcompat:1.0.0, breaking AGP 9 manifest merger

Open
#816 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Kotlin
Stars
17
Forks
30
Avg merge
8h 37m
Merged PRs (30d)
5

Description

Summary

com.adobe.marketing.mobile:core (verified on 3.7.1) declares a dependency on androidx.appcompat:appcompat:1.0.0. That pulls in androidx.vectordrawable:vectordrawable:1.0.0 and androidx.vectordrawable:vectordrawable-animated:1.0.0 transitively. Both 1.0.0 artifacts ship an AndroidManifest.xml declaring the same package, androidx.vectordrawable. Under Android Gradle Plugin 9.x, the manifest merger now enforces unique namespaces across all modules and libraries, and the build fails.

Environment

- Adobe Mobile SDK Core: com.adobe.marketing.mobile:core:3.7.1
- Android Gradle Plugin: 9.2.1
- Gradle: 9.6.0
- compileSdk: 36
- minSdk: 26

Reproduction

A minimal Android application module that depends only on:

dependencies {
implementation("com.adobe.marketing.mobile:core:3.7.1")
// (any of analytics / assurance / identity / lifecycle / signal / userprofile reproduces the same chain)
}

Running ./gradlew assembleDebug produces:

> Task :sample:processDebugMainManifest FAILED
[androidx.vectordrawable:vectordrawable-animated:1.0.0]
.../vectordrawable-animated-1.0.0/AndroidManifest.xml Error:
Namespace 'androidx.vectordrawable' is used in multiple modules and/or libraries:
androidx.vectordrawable:vectordrawable-animated:1.0.0,
androidx.vectordrawable:vectordrawable:1.0.0.
Please ensure that all modules and libraries have a unique namespace.
For more information, See https://developer.android.com/studio/build/configure-app-module#set-namespace

Validation failed, exiting
Manifest merger failed with multiple errors, see logs

Root cause

The published POMs for both core:3.7.1 declare:


androidx.appcompat
appcompat
1.0.0

appcompat:1.0.0 predates AndroidX's unique-namespace requirement. It transitively brings in:

- androidx.vectordrawable:vectordrawable:1.0.0 ? manifest package androidx.vectordrawable
- androidx.vectordrawable:vectordrawable-animated:1.0.0 ? manifest package androidx.vectordrawable

These two artifacts share a manifest namespace. Modern releases (1.1.0 / 1.2.0) corrected this ? vectordrawable keeps androidx.vectordrawable, vectordrawable-animated was given its own
androidx.vectordrawable.animated. AGP 9's manifest merger now rejects duplicate namespaces, so any project that ends up with the unmodified 1.0.0 pair fails to build.

Impact on our codebase

- Our app fails assembleDebug outright on AGP 9.
- Every downstream consumer that upgrades to AGP 9 and does not happen to already pull a newer vectordrawable (e.g. via a recent appcompat, material, or core-ktx) will hit the same failure.
- The workaround is invisible to consumers and easy to miss: they will see a manifest merger error blaming AndroidX, not Adobe.

Suggested fix (in order of preference)

1. Bump appcompat to a current release in the published POM. appcompat:1.7.0 (or any 1.4.x+) pulls in vectordrawable:1.1.0 / vectordrawable-animated:1.2.0, which declare unique namespaces and satisfy AGP�9. This is the cleanest fix and brings the SDK in line with what almost every consuming app already uses.
2. If a hard floor on appcompat:1.0.0 is required for some compatibility reason, at minimum bump the direct dependencies on androidx.vectordrawable:vectordrawable and androidx.vectordrawable:vectordrawable-animated to 1.1.0+ / 1.2.0+ in the Core POM so consumers don't have to.
3. Document the workaround in the Adobe Android SDK release notes / migration guide for AGP 9, noting consumers can force the versions until a fixed Core is published:

configurations.all {
resolutionStrategy {
force("androidx.vectordrawable:vectordrawable:1.2.0")
force("androidx.vectordrawable:vectordrawable-animated:1.2.0")
}
}

Notes
- Reproduces against core alone; the additional extensions (analytics, assurance, identity, lifecycle, signal, userprofile) all depend on core and inherit the same transitive chain.
- We did not find an existing issue tracking this on adobe/aepsdk-core-android as of 2026-06-25 ? searches for vectordrawable, manifest merger, namespace, and AGP 9 all returned no matches.

Contributor guide

Open the contributing guide

Research direction

Inspect the published POM for com.adobe.marketing.mobile:core and its AndroidX dependency declarations, then reproduce the issue with the minimal application described. Run ./gradlew assembleDebug; done means the vectordrawable dependencies have unique namespaces and the manifest merger succeeds under AGP 9.

Written by the indexing model from the issue text.

Assessment

Tech stack
android
Domain
build-system, mobile
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
65/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.