Proguard-rules.pro file

Below is an EXAMPLE of a proguard-rules.pro file.

Note: It is important to note that these rules are completely unique to each project, as they depend directly on the libraries being imported. Therefore, the file provided below is for example purposes only, as each application will have its own custom-generated rules.

# ==============================================================================
# 1. IGNORAR AVISOS DE BIBLIOTECAS DE TERCEIROS (-dontwarn)
# ==============================================================================
-dontwarn com.fasterxml.jackson.**
-dontwarn com.google.auto.value.**
-dontwarn io.opentelemetry.**
-dontwarn javax.annotation.**
-dontwarn javax.inject.**
-dontwarn sun.misc.**
-dontwarn org.codehaus.mojo.**
-dontwarn org.junit.**
-dontwarn org.mockito.**
-dontwarn android.test.**
-dontwarn android.support.test.**

# Ignora avisos gerais do SDK da FirstTech
-dontwarn com.firsttech.**

# Ignora avisos das bibliotecas de requisição HTTP
-dontwarn okhttp3.**
-dontwarn retrofit2.**
-dontwarn okio.**


# ==============================================================================
# 2. PROTEGER CLASSES DE INTERFACE E ADAPTERS (-keep)
# ==============================================================================
-keep class com.firsttech.taponphone.app.adapter.** { *; }
-keepclassmembers class **.ViewHolder {
    <init>(...);
}

# Protege o DataBinding e ViewBinding para evitar crash ao inflar layouts
-keep class com.firsttech.taponphone.app.databinding.** { *; }
-keep class androidx.databinding.** { *; }
-keepclassmembers class * extends androidx.viewbinding.ViewBinding {
    public static ** inflate(...);
    public static ** bind(...);
    public ** getRoot();
}


# ==============================================================================
# 3. PROTEGER MODELOS E CLASSES DO SDK DA FIRSTTECH
# ==============================================================================
-keep class com.firsttech.taponphone.sdk.v2.models.** { *; }
-keep class com.firsttech.taponphone.sdk.v2.model.** { *; }

# Mantém os construtores e métodos públicos do pacote raiz da FirstTech
-keep class com.firsttech.** {
    public <init>(...);
    <methods>;
}


# ==============================================================================
# 4. MANTER METADADOS IMPORTANTES PARA DEBUG E ANOTAÇÕES
# ==============================================================================
-keepattributes SourceFile,LineNumberTable,Signature,*Annotation*


# ==============================================================================
# 5. REGRAS PARA GSON E RETROFIT (REDE E SERIALIZAÇÃO JSON)
# ==============================================================================
-keep class com.google.gson.** { *; }
-keepclassmembers class * {
    @com.google.gson.annotations.SerializedName <fields>;
}

-keep interface retrofit2.** { *; }
-keep interface **.api.** { *; }
-keepattributes RuntimeVisibleAnnotations,RuntimeVisibleParameterAnnotations


# ==============================================================================
# 6. REGRAS DE SISTEMA (MÉTODOS NATIVOS E ENUMS)
# ==============================================================================
-keepclasseswithmembernames class * {
    native <methods>;
}

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}


# ==============================================================================
# 7. SILENCIAR OS ERROS ESPECÍFICOS DO R8 (GERADOS NO SEU BUILD FAILED)
# ==============================================================================
-dontwarn com.fasterxml.jackson.core.JsonFactory
-dontwarn com.fasterxml.jackson.core.JsonGenerator
-dontwarn com.google.auto.value.AutoValue$Builder
-dontwarn com.google.auto.value.AutoValue$CopyAnnotations
-dontwarn com.google.auto.value.AutoValue
-dontwarn io.opentelemetry.api.common.AttributeKey
-dontwarn io.opentelemetry.api.common.Attributes
-dontwarn io.opentelemetry.api.incubator.common.ExtendedAttributeKey
-dontwarn io.opentelemetry.api.incubator.common.ExtendedAttributeType
-dontwarn io.opentelemetry.api.incubator.common.ExtendedAttributes
-dontwarn io.opentelemetry.api.incubator.common.ExtendedAttributesBuilder
-dontwarn io.opentelemetry.api.incubator.internal.InternalExtendedAttributeKeyImpl
-dontwarn io.opentelemetry.api.incubator.logs.ExtendedLogRecordBuilder
-dontwarn io.opentelemetry.api.incubator.logs.ExtendedLogger
-dontwarn io.opentelemetry.api.incubator.metrics.ExtendedLongGaugeBuilder
-dontwarn io.opentelemetry.api.incubator.trace.ExtendedSpanBuilder
-dontwarn io.opentelemetry.api.incubator.trace.ExtendedTracer
-dontwarn io.opentelemetry.exporter.logging.internal.ConsoleLogRecordExporterComponentProvider
-dontwarn io.opentelemetry.exporter.logging.internal.ConsoleLogRecordExporterProvider
-dontwarn io.opentelemetry.exporter.logging.internal.ConsoleMetricExporterComponentProvider
-dontwarn io.opentelemetry.exporter.logging.internal.ConsoleMetricExporterProvider
-dontwarn io.opentelemetry.exporter.logging.internal.ConsoleSpanExporterComponentProvider
-dontwarn io.opentelemetry.exporter.logging.internal.ConsoleSpanExporterProvider
-dontwarn io.opentelemetry.exporter.logging.internal.LoggingLogRecordExporterProvider
-dontwarn io.opentelemetry.exporter.logging.internal.LoggingMetricExporterProvider
-dontwarn io.opentelemetry.exporter.logging.internal.LoggingSpanExporterProvider

Last updated