Compare commits

..

7 Commits

Author SHA1 Message Date
Strekalov Sergey 90dbdbab94 MAN-3347: 2026-05-26 10:11:40 +03:00
Strekalov Sergey a97e14e589 MAN-3347: 2026-05-26 10:09:13 +03:00
sergey.strekalov ac9bb7e302 Merge pull request 'MAN-3347: Добавлены правила' (#32) from MAN-BuildScript-1 into MAN-BuildScript
Reviewed-on: #32
2026-05-23 19:44:06 +03:00
Strekalov Sergey 8160038777 MAN-3347: Добавлены правила 2026-05-23 19:42:48 +03:00
sergey.strekalov d81924917b Merge pull request 'MAN-3278: правила' (#31) from MAN-BuildScript-1 into MAN-BuildScript
Reviewed-on: #31
2026-05-14 22:45:18 +03:00
Strekalov Sergey a9310567c7 MAN-3278: правила 2026-05-14 22:42:12 +03:00
Strekalov Sergey e04131eefe MAN-2775: Добавлены правила 2026-04-06 13:40:50 +03:00
6 changed files with 117 additions and 0 deletions
+6
View File
@@ -6,4 +6,10 @@
-include rules/glide.pro
-include rules/kaspersky.pro
-include rules/appsflyer.pro
-include rules/appmetrica.pro
-include rules/moshi.pro
-include rules/androidx_security.pro
-include rules/kotlinx_serialization.pro
-include rules/workmanager.pro
-include rules/navigation.pro
-include rules/logs.pro
+23
View File
@@ -0,0 +1,23 @@
# AppMetrica SDK (io.appmetrica.analytics:analytics 8.x)
# https://appmetrica.yandex.ru/docs/mobile-sdk-dg/android/quickstart.html
# https://github.com/appmetrica/appmetrica-sdk-android
# Сохраняем все классы SDK внутри активно используется reflection
# (генерация ID, сериализация событий, нативные крэш-репорты).
-keep class io.appmetrica.analytics.** { *; }
-keep interface io.appmetrica.analytics.** { *; }
-dontwarn io.appmetrica.analytics.**
# Старый namespace Yandex.Metrica (до миграции в io.appmetrica).
# В transitive-зависимостях ещё может встречаться держим на всякий случай.
-keep class com.yandex.metrica.** { *; }
-keep interface com.yandex.metrica.** { *; }
-dontwarn com.yandex.metrica.**
# AppMetrica использует OkHttp internal через свой shaded-вариант, плюс GMS
# (Google Advertising ID, Play Install Referrer) gms-классы могут отсутствовать
# в huawei/rustore-flavor'ах.
-dontwarn com.google.android.gms.ads.identifier.**
-dontwarn com.google.android.gms.common.**
-dontwarn com.huawei.hms.ads.identifier.**
-dontwarn com.android.installreferrer.**
+21
View File
@@ -0,0 +1,21 @@
-keepattributes *Annotation*, InnerClasses
-dontnote kotlinx.serialization.AnnotationsKt
-keepclassmembers class kotlinx.serialization.json.** { *** Companion; }
-keepclasseswithmembers class kotlinx.serialization.json.** {
kotlinx.serialization.KSerializer serializer(...);
}
-keepclasseswithmembers class **$$serializer {
static **$$serializer INSTANCE;
}
-keepclassmembers @kotlinx.serialization.Serializable class ** {
static **$serializer INSTANCE;
static kotlinx.serialization.KSerializer serializer(...);
*** Companion;
*** INSTANCE;
kotlinx.serialization.KSerializer serializer();
}
-keep @kotlinx.serialization.Serializable class * { *; }
+55
View File
@@ -0,0 +1,55 @@
# Стрипаем все логи в release/customer-сборках через R8.
#
# -assumenosideeffects говорит R8, что вызов метода можно удалить, если его
# возвращаемое значение не используется. Для Log.v/d/i/w/e и Timber.v/d/i/w/e
# это безопасно: они возвращают Int (всегда 0) и вызываются ради побочного
# эффекта печати в logcat.
#
# Покрываем ВСЕ уровни (v/d/i/w/e), включая w и e реестр дефектов (С_1)
# требует полного отсутствия служебных сообщений в финальной сборке для
# предотвращения раскрытия архитектуры приложения при декомпиляции и снижения
# I/O-нагрузки. Crashlytics в проде не привязан к android.util.Log (нет
# CrashReportingTree, Timber.plant вызывается только при ENABLE_LOGS), поэтому
# полный strip не ухудшает удалённую диагностику. Исключения, отправляемые
# через FirebaseCrashlytics.recordException(), не задеты.
#
# Дублирует и подстраховывает гард `if (BuildConfig.ENABLE_LOGS)` вокруг
# `Timber.plant(...)` в App.kt: даже если разработчик случайно вызовет
# `android.util.Log.d(...)` напрямую (минуя Timber) в release этот код
# не попадёт в APK.
-assumenosideeffects class android.util.Log {
public static *** v(...);
public static *** d(...);
public static *** i(...);
public static *** w(...);
public static *** e(...);
}
# Timber 5.x: статический API делегирует в companion object `Forest`,
# плюс есть базовый класс `Tree`. Покрываем все три точки входа.
-assumenosideeffects class timber.log.Timber {
public static *** v(...);
public static *** d(...);
public static *** i(...);
public static *** w(...);
public static *** e(...);
}
-assumenosideeffects class timber.log.Timber$Forest {
public *** v(...);
public *** d(...);
public *** i(...);
public *** w(...);
public *** e(...);
}
-assumenosideeffects class timber.log.Timber$Tree {
public *** v(...);
public *** d(...);
public *** i(...);
public *** w(...);
public *** e(...);
}
+4
View File
@@ -0,0 +1,4 @@
-keepnames class * implements com.manzherok.mobile.corenavigation.Route
-keep class * implements com.manzherok.mobile.corenavigation.Route {
public java.lang.String getName();
}
+8
View File
@@ -0,0 +1,8 @@
-keep class * extends androidx.work.Worker { *; }
-keep class * extends androidx.work.CoroutineWorker { *; }
-keep class * extends androidx.work.ListenableWorker {
public <init>(android.content.Context, androidx.work.WorkerParameters);
}
-keepclasseswithmembers class * {
@dagger.assisted.AssistedInject <init>(...);
}