67cc851b15
- 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.
84 lines
3.6 KiB
Prolog
84 lines
3.6 KiB
Prolog
# Consumer ProGuard/R8 rules для :vendor:talk-app (F7cloud).
|
||
# Эти правила ПРОПАГИРУЮТСЯ в R8 приложения :app (vendor собирается как library
|
||
# с minifyEnabled false, поэтому обычные proguardFiles на потребителя не влияют —
|
||
# нужен именно consumerProguardFiles, см. app/build.gradle).
|
||
# Защищают зависимости vendor-форка Nextcloud Talk от переименования/удаления R8.
|
||
|
||
# --- WebRTC (JNI: нативный libjingle_peerconnection_so.so зовёт org.webrtc.* по имени) ---
|
||
-keep class org.webrtc.** { *; }
|
||
-dontwarn org.webrtc.**
|
||
|
||
# --- LoganSquare (converter Talk API: сгенерированные $$JsonObjectMapper через рефлексию) ---
|
||
-keep class com.bluelinelabs.logansquare.** { *; }
|
||
-keep @com.bluelinelabs.logansquare.annotation.JsonObject class * { *; }
|
||
-keep class **$$JsonObjectMapper { *; }
|
||
-keepnames class * extends com.bluelinelabs.logansquare.JsonMapper
|
||
-keepclassmembers class * {
|
||
@com.bluelinelabs.logansquare.annotation.JsonField *;
|
||
}
|
||
|
||
# --- Jackson core (используется LoganSquare) ---
|
||
-dontwarn com.fasterxml.jackson.**
|
||
-keep class com.fasterxml.jackson.** { *; }
|
||
|
||
# --- Модели Talk API (парсятся LoganSquare/Gson по именам полей) ---
|
||
-keep class ru.f7cloud.talk.models.** { *; }
|
||
|
||
# --- Gson (converter-gson + модели) ---
|
||
-keepattributes Signature,*Annotation*,EnclosingMethod,InnerClasses
|
||
-keep class com.google.gson.** { *; }
|
||
-dontwarn com.google.gson.**
|
||
-keepclassmembers,allowobfuscation class * {
|
||
@com.google.gson.annotations.SerializedName <fields>;
|
||
}
|
||
|
||
# --- Retrofit 2 ---
|
||
-keep,allowobfuscation,allowshrinking interface retrofit2.Call
|
||
-keep,allowobfuscation,allowshrinking class retrofit2.Response
|
||
-keepclasseswithmembers class * { @retrofit2.http.* <methods>; }
|
||
-dontwarn retrofit2.**
|
||
-dontwarn okio.**
|
||
-keepattributes RuntimeVisibleAnnotations,RuntimeVisibleParameterAnnotations
|
||
|
||
# --- Parceler (сгенерированные $$Parcelable) ---
|
||
-keep class **$$Parcelable { *; }
|
||
-keep interface org.parceler.Parcel
|
||
-keep @org.parceler.Parcel class * { *; }
|
||
-keepclassmembers class **$$Parcelable {
|
||
public static final ** CREATOR;
|
||
}
|
||
|
||
# --- EventBus (@Subscribe вызывается рефлексией) ---
|
||
-keepattributes *Annotation*
|
||
-keepclassmembers class * {
|
||
@org.greenrobot.eventbus.Subscribe <methods>;
|
||
}
|
||
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
|
||
-keep class org.greenrobot.eventbus.android.** { *; }
|
||
|
||
# --- Dagger / autodagger2 ---
|
||
-dontwarn dagger.**
|
||
-dontwarn com.github.lukaspili.autodagger2.**
|
||
|
||
# --- RxJava2 (опциональные зависимости на этапе компиляции) ---
|
||
-dontwarn java.util.concurrent.Flow*
|
||
-dontwarn sun.misc.**
|
||
-dontwarn org.reactivestreams.**
|
||
|
||
# --- Conscrypt (опциональный security-provider) ---
|
||
-dontwarn org.conscrypt.**
|
||
-keep class org.conscrypt.** { *; }
|
||
|
||
# --- прочие опциональные/аннотационные зависимости, на которые ругается R8 ---
|
||
-dontwarn javax.annotation.**
|
||
-dontwarn org.bouncycastle.**
|
||
-dontwarn org.slf4j.**
|
||
-dontwarn okhttp3.internal.platform.**
|
||
|
||
# --- недостающие опциональные refs (из missing_rules.txt R8): geogson→старая guava,
|
||
# joda-convert аннотации joda-time (maps-стек Talk). Классы отсутствуют в рантайме,
|
||
# код их не вызывает — безопасно подавить. ---
|
||
-dontwarn com.google.common.base.Objects$ToStringHelper
|
||
-dontwarn org.joda.convert.FromString
|
||
-dontwarn org.joda.convert.ToString
|