Files
f7cloud_mobile/app/proguard-rules.pro
T
b-dev-mobile 67cc851b15 Этап 0 п.1: release собираем и подписан (signingConfig из env + R8-правила)
- signingConfig.release читает F7_KEYSTORE_FILE/PASSWORD, F7_KEY_ALIAS/PASSWORD
  из env или -P; фолбэк на debug-подпись если не заданы. Схемы v2+v3.
- R8: app/proguard-rules.pro (kotlinx.serialization, Firebase, JS-мосты, Coil);
  vendor consumer-rules.pro через consumerProguardFiles (WebRTC/LoganSquare/Dagger/
  RxJava/Parceler/EventBus + dontwarn geogson/joda из missing_rules.txt).
- Проверено на инфре B (JDK 21 + Android SDK 36): assembleRelease BUILD SUCCESSFUL,
  подписанный APK 99 МБ (было ~130 debug), apksigner verify v2+v3 OK.
- Доки: docs/RELEASE-SIGNING.md, docs/AUDIT-2026-07-07.md.
2026-07-07 13:17:20 +00:00

52 lines
2.2 KiB
Prolog

# ProGuard/R8 rules приложения :app (F7cloud Mobile).
# Vendor-зависимости (WebRTC/LoganSquare/Dagger/RxJava/Parceler/EventBus) держат
# vendor/talk-android/app/consumer-rules.pro (доезжает сюда через consumerProguardFiles).
# Здесь правила для КОДА ПРИЛОЖЕНИЯ и его прямых библиотек.
# --- Общие атрибуты (нужны рефлексии/сериализации/отладке стектрейсов) ---
-keepattributes Signature,*Annotation*,EnclosingMethod,InnerClasses
-keepattributes SourceFile,LineNumberTable
-renamesourcefileattribute SourceFile
# --- kotlinx.serialization (@Serializable в feature-модулях) ---
# Держим сгенерированные сериализаторы; без этого @Serializable падает в рантайме.
-keepclassmembers @kotlinx.serialization.Serializable class ** {
*** Companion;
*** INSTANCE;
kotlinx.serialization.KSerializer serializer(...);
}
-keepclasseswithmembers class ** {
@kotlinx.serialization.Serializable <fields>;
}
-keep,includedescriptorclasses class ru.forbion.f7cloud.**$$serializer { *; }
-dontwarn kotlinx.serialization.**
# --- Kotlin метаданные/корутины ---
-keep class kotlin.Metadata { *; }
-dontwarn kotlinx.coroutines.**
# --- enum'ы приложения (values()/valueOf по имени) ---
-keepclassmembers enum ru.forbion.f7cloud.** { *; }
# --- Coil (декодеры подгружаются по имени) ---
-dontwarn coil.**
-keep class coil.decode.** { *; }
# --- OkHttp/Okio/security-провайдеры (косметические ворнинги R8) ---
-dontwarn okhttp3.internal.platform.**
-dontwarn org.conscrypt.**
-dontwarn org.bouncycastle.**
-dontwarn org.openjsse.**
# --- Firebase Cloud Messaging ---
-keep class com.google.firebase.** { *; }
-dontwarn com.google.firebase.**
# --- WebView JS-мосты (@JavascriptInterface вызывается из JS по имени) ---
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
# --- Compose обычно не требует правил; косметика ---
-dontwarn org.jetbrains.annotations.**