[Bug]: Duplicate package-info.class in a2a-java-sdk-common and -spec breaks Android builds · Issue #978 · a2aproject/a2a-java · GitHub
Skip to content

[Bug]: Duplicate package-info.class in a2a-java-sdk-common and -spec breaks Android builds #978

Closed

Description

@kvmilos

What happened?

On Android, depending on the A2A Java client fails AGP's checkDuplicateClasses because a2a-java-sdk-common and a2a-java-sdk-spec both ship a byte-identical org/a2aproject/sdk/util/package-info.class.

How to reproduce

A minimal Android project (verified with Android Gradle Plugin 9.2.1, Gradle 9.6.1):
settings.gradle.kts

pluginManagement {
  repositories { google(); mavenCentral(); gradlePluginPortal() }
}
dependencyResolutionManagement {
  repositories { google(); mavenCentral() }
}
include(":app")

build.gradle.kts

plugins { id("com.android.application") version "9.2.1" apply false }

gradle.properties

android.useAndroidX=true

app/build.gradle.kts

plugins { id("com.android.application") }
android {
  namespace = "com.example.a2arepro"
  compileSdk = 34
  defaultConfig { minSdk = 26 }
}
dependencies {
  implementation("org.a2aproject.sdk:a2a-java-sdk-client:1.0.0.Final")
}

app/src/main/AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" />

Then run:

./gradlew :app:checkDebugDuplicateClasses

The build fails with the duplicate class shown below. (checkDuplicateClasses is a standard AGP task that also runs during any normal build, e.g. :app:assembleDebug.) Reproduced on both 1.0.0.Final and 1.1.0.Final.

Cause
org.a2aproject.sdk.util is a split package — real classes live in both modules (common: Assert, HttpHeaderUtils, NotNull; spec: Utils, ErrorDetail, PageToken) — and each ships its own package-info.java (@NullMarked), so both jars contain a duplicate package-info.class. It's unavoidable for consumers: spec depends on common, and the client/http-client/transports all depend on spec, so both jars are always on the Android classpath.

Expected
An Android app should be able to depend on the A2A Java client without a duplicate-class build failure.

Relevant log output

> Task :app:checkDebugDuplicateClasses FAILED
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
   > Duplicate class org.a2aproject.sdk.util.package-info found in modules a2a-java-sdk-common-1.0.0.Final.jar -> a2a-java-sdk-common-1.0.0.Final (org.a2aproject.sdk:a2a-java-sdk-common:1.0.0.Final) and a2a-java-sdk-spec-1.0.0.Final.jar -> a2a-java-sdk-spec-1.0.0.Final (org.a2aproject.sdk:a2a-java-sdk-spec:1.0.0.Final)

Code of Conduct

  • I agree to follow this project's Code of Conduct

Activity

  1. added theissue type on Jul 13, 2026
  2. self-assigned this
    on Jul 21, 2026
  3. kabir commented on Jul 21, 2026

    @kabir
    Collaborator

    Hi @kvmilos - I'm looking at this now

  4. added a commit that references this issue on Jul 21, 2026
    4435280
  5. added a commit that references this issue on Jul 22, 2026
    9bb5aa5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions