-keepnames @com.google.android.gms.common.annotation.KeepName class * -keepclassmembernames class * { @com.google.android.gms.common.annotation.KeepName *; } -keep class org.webrtc.* { *; } -keep class org.webrtc.audio.* { *; } -keep class org.webrtc.voiceengine.* { *; } -keep class org.telegram.tgnet.RequestTimeDelegate { *; } -keep class org.telegram.tgnet.RequestDelegate { *; } -keep class com.google.android.exoplayer2.ext.** { *; } -keep class com.google.android.exoplayer2.extractor.FlacStreamMetadata { *; } -keep class com.google.android.exoplayer2.metadata.flac.PictureFrame { *; } -keep class com.google.android.exoplayer2.decoder.SimpleDecoderOutputBuffer { *; } -keep class org.telegram.ui.Stories.recorder.FfmpegAudioWaveformLoader { *; } -keep class androidx.mediarouter.app.MediaRouteButton { *; } -keepclassmembers class ** { @android.webkit.JavascriptInterface ; } # https://developers.google.com/ml-kit/known-issues#android_issues -keep class com.google.mlkit.nl.languageid.internal.LanguageIdentificationJni { *; } # Constant folding for resource integers may mean that a resource passed to this method appears to be unused. Keep the method to prevent this from happening. -keep class com.google.android.exoplayer2.upstream.RawResourceDataSource { public static android.net.Uri buildRawResourceUri(int); } # Methods accessed via reflection in DefaultExtractorsFactory -dontnote com.google.android.exoplayer2.ext.flac.FlacLibrary -keepclassmembers class com.google.android.exoplayer2.ext.flac.FlacLibrary { } # Some members of this class are being accessed from native methods. Keep them unobfuscated. -keep class com.google.android.exoplayer2.decoder.VideoDecoderOutputBuffer { *; } -dontnote com.google.android.exoplayer2.ext.opus.LibopusAudioRenderer -keepclassmembers class com.google.android.exoplayer2.ext.opus.LibopusAudioRenderer { (android.os.Handler, com.google.android.exoplayer2.audio.AudioRendererEventListener, com.google.android.exoplayer2.audio.AudioProcessor[]); } -dontnote com.google.android.exoplayer2.ext.flac.LibflacAudioRenderer -keepclassmembers class com.google.android.exoplayer2.ext.flac.LibflacAudioRenderer { (android.os.Handler, com.google.android.exoplayer2.audio.AudioRendererEventListener, com.google.android.exoplayer2.audio.AudioProcessor[]); } -dontnote com.google.android.exoplayer2.ext.ffmpeg.FfmpegAudioRenderer -keepclassmembers class com.google.android.exoplayer2.ext.ffmpeg.FfmpegAudioRenderer { (android.os.Handler, com.google.android.exoplayer2.audio.AudioRendererEventListener, com.google.android.exoplayer2.audio.AudioProcessor[]); } # Constructors accessed via reflection in DefaultExtractorsFactory -dontnote com.google.android.exoplayer2.ext.flac.FlacExtractor -keepclassmembers class com.google.android.exoplayer2.ext.flac.FlacExtractor { (); } # Constructors accessed via reflection in DefaultDownloaderFactory -dontnote com.google.android.exoplayer2.source.dash.offline.DashDownloader -keepclassmembers class com.google.android.exoplayer2.source.dash.offline.DashDownloader { (android.net.Uri, java.util.List, com.google.android.exoplayer2.offline.DownloaderConstructorHelper); } -dontnote com.google.android.exoplayer2.source.hls.offline.HlsDownloader -keepclassmembers class com.google.android.exoplayer2.source.hls.offline.HlsDownloader { (android.net.Uri, java.util.List, com.google.android.exoplayer2.offline.DownloaderConstructorHelper); } -dontnote com.google.android.exoplayer2.source.smoothstreaming.offline.SsDownloader -keepclassmembers class com.google.android.exoplayer2.source.smoothstreaming.offline.SsDownloader { (android.net.Uri, java.util.List, com.google.android.exoplayer2.offline.DownloaderConstructorHelper); } # Constructors accessed via reflection in DownloadHelper -dontnote com.google.android.exoplayer2.source.dash.DashMediaSource$Factory -keepclasseswithmembers class com.google.android.exoplayer2.source.dash.DashMediaSource$Factory { (com.google.android.exoplayer2.upstream.DataSource$Factory); } -dontnote com.google.android.exoplayer2.source.hls.HlsMediaSource$Factory -keepclasseswithmembers class com.google.android.exoplayer2.source.hls.HlsMediaSource$Factory { (com.google.android.exoplayer2.upstream.DataSource$Factory); } -dontnote com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource$Factory -keepclasseswithmembers class com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource$Factory { (com.google.android.exoplayer2.upstream.DataSource$Factory); } # Huawei Services -keep class com.huawei.hianalytics.**{ *; } -keep class com.huawei.updatesdk.**{ *; } -keep class com.huawei.hms.**{ *; } # Don't warn about checkerframework and Kotlin annotations -dontwarn org.checkerframework.** -dontwarn javax.annotation.** -keep class io.nano.tex.** {*;} # JLatexMath: macro/atom classes are loaded reflectively by Class.forName -keep class org.scilab.forge.jlatexmath.** { *; } -keep class ru.noties.jlatexmath.** { *; } -dontwarn org.scilab.forge.jlatexmath.** # Used by AtomicReferenceFieldUpdater and sun.misc.Unsafe -keepclassmembers class com.google.common.util.concurrent.AbstractFuture** { *** waiters; *** value; *** listeners; *** thread; *** next; } # Since Unsafe is using the field offsets of these inner classes, we don't want # to have class merging or similar tricks applied to these classes and their # fields. It's safe to allow obfuscation, since the by-name references are # already preserved in the -keep statement above. -keep,allowshrinking,allowobfuscation class com.google.common.util.concurrent.AbstractFuture** { ; } -keepclasseswithmembers,allowobfuscation class * { @com.google.gson.annotations.SerializedName ; } # Gson uses generic type information stored in a class file when working with fields. Proguard # removes such information by default, so configure it to keep all of it. -keepattributes Signature,InnerClasses,EnclosingMethod -keep class org.telegram.messenger.voip.* { *; } -keep class org.telegram.messenger.AnimatedFileDrawableStream { ; } -keep class org.telegram.SQLite.SQLiteException { ; } -keep class org.telegram.tgnet.ConnectionsManager { ; } -keep class org.telegram.tgnet.NativeByteBuffer { ; } -keepnames class ** extends org.telegram.ui.ActionBar.BaseFragment -keepclassmembernames,allowshrinking class org.telegram.ui.* { ; } -keepclassmembernames,allowshrinking class org.telegram.ui.Cells.* { ; } -keepclassmembernames,allowshrinking class org.telegram.ui.Components.* { ; } -keepclassmembernames,allowshrinking class tw.nekomimi.nekogram.MessageDetailsActivity$TextDetailSimpleCell { ; } -keepclassmembernames,allowshrinking class tw.nekomimi.nekogram.settings.AccountCell { ; } -keepclassmembernames,allowshrinking class tw.nekomimi.nekogram.settings.EmojiSetCell { ; } -keepclassmembernames,allowshrinking class tw.nekomimi.nekogram.settings.NekoChatSettingsActivity$StickerSizeCell { ; } -keepclassmembernames class androidx.core.widget.NestedScrollView { private android.widget.OverScroller mScroller; private void abortAnimatedScroll(); } -keepclasseswithmembernames,includedescriptorclasses class * { native ; } -assumenosideeffects class kotlin.jvm.internal.Intrinsics { public static void check*(...); public static void throw*(...); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keepnames class androidx.recyclerview.widget.RecyclerView -keepclassmembers class androidx.recyclerview.widget.RecyclerView { public void suppressLayout(boolean); public boolean isLayoutSuppressed(); } # -repackageclasses removed: breaks JNI symbol lookup when classes with native methods get renamed # -allowaccessmodification removed: unsafe with JNI -keepattributes SourceFile,LineNumberTable -renamesourcefileattribute SourceFile -dontoptimize # Keep all classes that have native methods (JNI safety) -keepclasseswithmembernames,includedescriptorclasses class * { native ; } # Keep @Keep annotated classes and members -keep @androidx.annotation.Keep class * { *; } -keepclassmembers class * { @androidx.annotation.Keep *; } -dontwarn android.support.annotation.* -dontwarn androidx.compose.**