VidiDin-Android/app/proguard-rules.pro

205 lines
7.4 KiB
Prolog
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ==============================================================================
# 基础配置 (Basic Configuration)
# ==============================================================================
# 代码优化次数
-optimizationpasses 5
# 不使用混合大小写类名
-dontusemixedcaseclassnames
# 不忽略非公共库类
-dontskipnonpubliclibraryclasses
# 打印混淆详情
-verbose
# 忽略警告
-ignorewarnings
# 不进行预校验
-dontpreverify
# ==============================================================================
# 属性保留 (Attributes)
# ==============================================================================
# 保留泛型签名避免JSON解析Kotlin反射等问题
-keepattributes Signature
# 保留注解
-keepattributes *Annotation*
# 保留异常信息
-keepattributes Exceptions
# 保留内部类信息
-keepattributes InnerClasses
# 保留封闭方法信息
-keepattributes EnclosingMethod
# 保留源文件和行号用于Crashlytics堆栈追踪
-keepattributes SourceFile,LineNumberTable
# 如果需要隐藏源文件名,取消注释下面这行
#-renamesourcefileattribute SourceFile
# ==============================================================================
# Android 组件 (Android Components)
# ==============================================================================
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class * extends android.view.View
# 保持 Native 方法
-keepclasseswithmembernames class * {
native <methods>;
}
# 保持自定义 View 的构造方法
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
}
# 保持 Parcelable
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
# 保持 Serializable
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
# 保持枚举
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
# 保持 R 文件资源引用
-keepclassmembers class **.R$* {
public static <fields>;
public static final int *;
}
# ==============================================================================
# Kotlin Coroutines
# ==============================================================================
-keep class kotlinx.coroutines.** { *; }
-keepclassmembers class kotlinx.coroutines.** {
volatile <fields>;
}
# 如果使用 AtomicFU
-dontwarn java.util.concurrent.atomic.Atomic*
# ==============================================================================
# Kotlin Serialization
# ==============================================================================
-keepattributes *Annotation*, InnerClasses
-dontnote kotlinx.serialization.SerializationKt
-keep,allowobfuscation,allowshrinking class kotlinx.serialization.* { *; }
-keep class * implements kotlinx.serialization.KSerializer { *; }
-keepclassmembers class * {
@kotlinx.serialization.Serializable <init>(...);
@kotlinx.serialization.Serializable <fields>;
}
-keep @kotlinx.serialization.Serializable class * { *; }
# ==============================================================================
# 项目特定 (Project Specific)
# ==============================================================================
# 实体类/Bean (防止 JSON 解析失败)
-keep class com.gamedog.vididin.beans.** { *; }
-keep class com.gamedog.vididin.manager.taskbeans.** { *; }
# 任务配置Bean
-keep class com.gamedog.vididin.main.fragments.task.** { *; }
# 路由相关
-keep class com.gamedog.vididin.router.** { *; }
# App 入口
-keep class com.viddin.videos.free.VidiDinApp { *; }
# ==============================================================================
# 第三方库 (Third Party Libraries)
# ==============================================================================
# ----------------- Hilt / Dagger -----------------
-keep class dagger.hilt.internal.aggregatedroot.** { *; }
-keep class hilt_aggregated_deps.** { *; }
-keep class * extends android.app.Application { @dagger.hilt.android.AndroidEntryPoint <init>(); }
-keepclasseswithmembers class * { @dagger.hilt.android.AndroidEntryPoint <fields>; }
-keepclasseswithmembers class * { @dagger.hilt.android.AndroidEntryPoint <methods>; }
-keep @dagger.Module class *
-keep @dagger.hilt.InstallIn class *
-keep @dagger.hilt.EntryPoint class *
-keepclassmembers @dagger.hilt.EntryPoint class * { *; }
-keep @dagger.hilt.components.SingletonComponent class *
-keepclassmembers @dagger.hilt.components.SingletonComponent class * { *; }
-keep class * extends dagger.internal.Binding { *; }
-keep class * extends dagger.internal.Factory { *; }
-keep class * implements dagger.MembersInjector { *; }
-keep class * implements dagger.Lazy { *; }
# ----------------- Gson -----------------
-keep class com.google.gson.** { *; }
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }
-keepclassmembers class * {
@com.google.gson.annotations.SerializedName <fields>;
}
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer
# ----------------- OkHttp3 -----------------
-dontwarn okhttp3.**
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-dontwarn okio.**
# ----------------- Retrofit2 -----------------
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
# ----------------- Glide -----------------
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
**[] $VALUES;
public *;
}
-keep class com.bumptech.glide.** { *; }
# Glide Transformations
-keep class jp.wasabeef.glide.** { *; }
# 相关依赖
-keep class com.davemorrissey.** { *; }
-keep class com.filippudak.** { *; }
# ----------------- Lottie -----------------
-keep class com.airbnb.lottie.** { *; }
# ----------------- Room -----------------
-dontwarn androidx.room.paging.**
# ----------------- Tencent X5 / Security -----------------
-keep class com.tencent.** { *; }
-keep class Decoder.** { *; }
-keep class org.bouncycastle.** { *; }
# ----------------- Alibaba FastJson -----------------
-dontwarn com.alibaba.fastjson.**
-keep class com.alibaba.fastjson.** { *; }
# ----------------- JZlib / Apache / Others -----------------
-dontwarn com.jcraft.jzlib.**
-keep class com.jcraft.jzlib.** { *; }
-dontwarn org.apache.**
-keep class org.apache.** { *; }
-dontwarn com.loopj.**
-keep class com.loopj.** { *; }
-dontwarn org.jivesoftware.smack.**
-dontwarn org.xbill.**
-keep class org.xbill.** { *; }
# ==============================================================================
# 结束 (End)
# ==============================================================================