mapbox / mapbox-base-android

This repository hosts annotation processors and module providers for Mapbox modular SDKs.
Other
11 stars 8 forks source link

Type com.mapbox.module.Mapbox_TripNotificationModuleConfiguration is defined multiple times #46

Closed 113408 closed 4 years ago

113408 commented 4 years ago

I'm trying to use a custom module for TripNotification, while I'm able to replace the module in debug, the compilation fails during assembleRelease more specifically during mergeDexRelease.

Gradle complains about finding 2 com.mapbox.module.Mapbox_TripNotificationModuleConfiguration. Indeed one is generated by the annotation processor (my custom notification) and the second appears to be generated by the Navigation SDK (MapboxTripNotification) as you can see below.

The issue is only happening when the enableConfiguration is set to true. In the case of TripNotification implementation, there is no workaround as I need to supply a context.

Any help would be much appreciated.

Error

com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
Type com.mapbox.module.Mapbox_TripNotificationModuleConfiguration is defined multiple times: .../app/build/intermediates/project_dex_archive/release/out/com/mapbox/module/Mapbox_TripNotificationModuleConfiguration.dex, .../app/build/intermediates/external_libs_dex/release/out/classes2.dex

External dex class

.class public final Lcom/mapbox/module/Mapbox_TripNotificationModuleConfiguration;
.super Ljava/lang/Object;
.source "Mapbox_TripNotificationModuleConfiguration.kt"

# annotations
.annotation runtime Lkotlin/Metadata;
    bv = {
        0x1,
        0x0,
        0x3
    }
    d1 = {
        "\u0000 \n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\u0008\u0002\n\u0002\u0010\u000b\n\u0002\u0008\u0004\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0008\u0004\u0008\u00c7\u0002\u0018\u00002\u00020\u0001B\u0007\u0008\u0002\u00a2\u0006\u0002\u0010\u0002R\u001c\u0010\u0003\u001a\u00020\u00048\u0006X\u0087D\u00a2\u0006\u000e\n\u0000\u0012\u0004\u0008\u0005\u0010\u0002\u001a\u0004\u0008\u0006\u0010\u0007R\"\u0010\u0008\u001a\u0008\u0012\u0004\u0012\u00020\n0\t8\u0006X\u0087\u0004\u00a2\u0006\u000e\n\u0000\u0012\u0004\u0008\u000b\u0010\u0002\u001a\u0004\u0008\u000c\u0010\r\u00a8\u0006\u000e"
    }
    d2 = {
        "Lcom/mapbox/module/Mapbox_TripNotificationModuleConfiguration;",
        "",
        "()V",
        "enableConfiguration",
        "",
        "enableConfiguration$annotations",
        "getEnableConfiguration",
        "()Z",
        "implClass",
        "Ljava/lang/Class;",
        "Lcom/mapbox/navigation/trip/notification/MapboxTripNotification;",
        "implClass$annotations",
        "getImplClass",
        "()Ljava/lang/Class;",
        "libtrip-notification_release"
    }
    k = 0x1
    mv = {
        0x1,
        0x1,
        0x10
    }
.end annotation

# static fields
.field public static final INSTANCE:Lcom/mapbox/module/Mapbox_TripNotificationModuleConfiguration;

.field private static final enableConfiguration:Z = false

.field private static final implClass:Ljava/lang/Class;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/lang/Class<",
            "Lcom/mapbox/navigation/trip/notification/MapboxTripNotification;",
            ">;"
        }
    .end annotation
.end field

# direct methods
.method static constructor <clinit>()V
    .registers 1

    .line 13
    new-instance v0, Lcom/mapbox/module/Mapbox_TripNotificationModuleConfiguration;

    invoke-direct {v0}, Lcom/mapbox/module/Mapbox_TripNotificationModuleConfiguration;-><init>()V

    sput-object v0, Lcom/mapbox/module/Mapbox_TripNotificationModuleConfiguration;->INSTANCE:Lcom/mapbox/module/Mapbox_TripNotificationModuleConfiguration;

    .line 18
    const-class v0, Lcom/mapbox/navigation/trip/notification/MapboxTripNotification;

    sput-object v0, Lcom/mapbox/module/Mapbox_TripNotificationModuleConfiguration;->implClass:Ljava/lang/Class;

    return-void
.end method

.method private constructor <init>()V
    .registers 1

    .line 13
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method

.method public static synthetic enableConfiguration$annotations()V
    .registers 0
    .annotation runtime Lkotlin/jvm/JvmStatic;
    .end annotation

    return-void
.end method

.method public static final getEnableConfiguration()Z
    .registers 1

    .line 15
    sget-boolean v0, Lcom/mapbox/module/Mapbox_TripNotificationModuleConfiguration;->enableConfiguration:Z

    return v0
.end method

.method public static final getImplClass()Ljava/lang/Class;
    .registers 1
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/lang/Class<",
            "Lcom/mapbox/navigation/trip/notification/MapboxTripNotification;",
            ">;"
        }
    .end annotation

    .line 18
    sget-object v0, Lcom/mapbox/module/Mapbox_TripNotificationModuleConfiguration;->implClass:Ljava/lang/Class;

    return-object v0
.end method

.method public static synthetic implClass$annotations()V
    .registers 0
    .annotation runtime Lkotlin/jvm/JvmStatic;
    .end annotation

    return-void
.end method
113408 commented 4 years ago

This is not relevant as excluding the correct group solves the issue