- ApiClient: IllegalArgumentException de URL vira Network (banner, sem crash); DTOs com listas nullable (servidor podia enviar categories/tags: null) - SyncEngine: mutex global serializa runs (logs BEGIN/END); resolveConflict idempotente (não duplica cópia de conflito); registra rekey:<local>→<server> em meta para o editor aberto sobreviver à troca de id do create - ViewModel: resolve(id) em save/delete; createLocal enfileira create único - Outbox: índice único (noteId, op); DB v2 com fallbackToDestructiveMigration - proguard: regras corretas de kotlinx.serialization (Companion.serializer) - README: seção 'Testado em' com os cenários de emulador executados
23 lines
779 B
Prolog
23 lines
779 B
Prolog
# OkHttp + okio
|
|
-dontwarn okhttp3.**
|
|
-dontwarn okio.**
|
|
-dontwarn org.jetbrains.annotations.**
|
|
|
|
# kotlinx.serialization (R8): manter Companion.serializer() e anotados
|
|
-keepattributes *Annotation*, InnerClasses, Signature, RuntimeVisibleAnnotations, AnnotationDefault
|
|
|
|
-if @kotlinx.serialization.Serializable class **
|
|
-keepclassmembers class <1> {
|
|
static <1>$Companion Companion;
|
|
}
|
|
-if @kotlinx.serialization.Serializable class ** {
|
|
static **$Companion Companion;
|
|
}
|
|
-keepclassmembers class <2>$Companion {
|
|
kotlinx.serialization.KSerializer serializer(...);
|
|
}
|
|
-keep,includedescriptorclasses class com.labexposed.notas.data.remote.** { *; }
|
|
|
|
# Room / WorkManager geram código e refletem pouco; regras padrão bastam
|
|
-keep class com.labexposed.notas.data.local.** { *; }
|