304 lines
9.3 KiB
Prolog
304 lines
9.3 KiB
Prolog
# Add project specific ProGuard rules here.
|
|
# By default, the flags in this file are appended to flags specified
|
|
# in /Users/richardmuttett/android-sdk/tools/proguard/proguard-android.txt
|
|
# You can edit the include path and order by changing the proguardFiles
|
|
# directive in build.gradle.
|
|
#
|
|
# For more details, see
|
|
# http://developer.android.com/guide/developing/tools/proguard.html
|
|
|
|
# Add any project specific keep options here:
|
|
|
|
# If your project uses WebView with JS, uncomment the following
|
|
# and specify the fully qualified class name to the JavaScript interface
|
|
# class:
|
|
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
|
# public *;
|
|
#}
|
|
|
|
# ButterKnife
|
|
-keep class butterknife.** { *; }
|
|
-keep class **$$ViewInjector { *; }
|
|
|
|
-dontwarn butterknife.internal.**
|
|
|
|
-keepclasseswithmembernames class * {
|
|
@butterknife.* <fields>;
|
|
}
|
|
-keepclasseswithmembernames class * {
|
|
@butterknife.* <methods>;
|
|
}
|
|
|
|
# mime parser
|
|
-dontwarn org.apache.commons.**
|
|
-keep class org.apache.commons.** { *; }
|
|
-dontwarn org.apache.harmony.**
|
|
-keep class org.apache.harmony.** { *; }
|
|
-dontwarn org.apache.http.legacy.**
|
|
-keep class org.apache.http.legacy.** { *; }
|
|
-dontwarn com.sun.mail.**
|
|
-keep class com.sun.mail.** { *; }
|
|
-dontwarn javax.activation.**
|
|
-keep class javax.activation.** { *; }
|
|
|
|
# OkHttp, Retrofit, Gson, Okio
|
|
-keepattributes Exceptions
|
|
-keepattributes Signature
|
|
-keepattributes *Annotation*
|
|
-keepattributes EnclosingMethod
|
|
|
|
-dontwarn com.squareup.okhttp3.**
|
|
-keep class com.squareup.okhttp3.* { *; }
|
|
-dontwarn retrofit.**
|
|
-dontwarn ch.protonmail.android.utils.nativelib.**
|
|
-dontwarn okio.**
|
|
-dontwarn org.wordpress.**
|
|
-keepnames class rx.Single
|
|
-keepattributes Signature, InnerClasses, EnclosingMethod
|
|
-keepclassmembers,allowshrinking,allowobfuscation interface * {
|
|
@retrofit2.http.* <methods>;
|
|
}
|
|
-dontwarn javax.annotation.**
|
|
-dontwarn kotlin.Unit
|
|
-dontwarn retrofit2.-KotlinExtensions
|
|
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
|
|
|
|
## Okhttp
|
|
-keep class okhttp3.** { *; }
|
|
-keep interface okhttp3.** { *; }
|
|
-dontwarn okhttp3.**
|
|
-dontnote okhttp3.**
|
|
-keep class com.squareup.okhttp3.** { *; }
|
|
-keep interface com.squareup.okhttp3.** { *; }
|
|
-dontwarn okhttp3.internal.platform.*
|
|
-dontwarn javax.annotation.Nullable
|
|
-dontwarn javax.annotation.ParametersAreNonnullByDefault
|
|
|
|
## Retrofit
|
|
-keep class org.wordpress.** { *; }
|
|
-dontwarn retrofit2.**
|
|
-keep class retrofit2.** { *; }
|
|
-keep class retrofit.** { *; }
|
|
-keepattributes Signature
|
|
-keepattributes Exceptions
|
|
-dontwarn rx.**
|
|
-keepclasseswithmembers class * {
|
|
@retrofit2.http.* <methods>;
|
|
}
|
|
-keepclasseswithmembers interface * {
|
|
@retrofit2.* <methods>;
|
|
}
|
|
-dontnote retrofit2.Platform
|
|
-dontwarn retrofit2.adapter.rxjava.CompletableHelper$**
|
|
|
|
## Okio
|
|
-keep class sun.misc.Unsafe { *; }
|
|
-dontwarn java.nio.file.*
|
|
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
|
|
|
|
## Gson
|
|
-keep class com.google.gson.** { *; }
|
|
-keep public class com.google.gson.** {public private protected *;}
|
|
-keep class com.google.inject.** { *; }
|
|
|
|
# gms and view pager indicator
|
|
-dontwarn com.google.android.gms.**
|
|
-dontwarn com.viewpagerindicator.**
|
|
|
|
|
|
# Splunk MINT
|
|
-keep class com.splunk.** { *; }
|
|
|
|
# Otto
|
|
-keepclassmembers class ** {
|
|
@com.squareup.otto.Subscribe public *;
|
|
@com.squareup.otto.Produce public *;
|
|
}
|
|
|
|
|
|
# SearchView
|
|
-keep public class android.support.v7.widget.SearchView {
|
|
public <init>(android.content.Context);
|
|
public <init>(android.content.Context, android.util.AttributeSet);
|
|
}
|
|
|
|
# for scrollable webview
|
|
-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
|
public *;
|
|
}
|
|
|
|
# Android design support library
|
|
-dontwarn android.support.design.**
|
|
-keep class android.support.design.** { *; }
|
|
-keep interface android.support.design.** { *; }
|
|
-keep public class android.support.design.R$* { *; }
|
|
|
|
# Android compat support library
|
|
-dontwarn android.support.v7.**
|
|
-keep class android.support.v7.** { *; }
|
|
-keep interface android.support.v7.** { *; }
|
|
|
|
# jsoup
|
|
-keep public class org.jsoup.** {
|
|
public *;
|
|
}
|
|
|
|
# PM custom views
|
|
-keep public class ch.protonmail.android.views.** {
|
|
public *;
|
|
}
|
|
|
|
# PM core
|
|
-keep class me.proton.core.** { *; }
|
|
|
|
# PM openPGP
|
|
-keep public class ch.protonmail.android.utils.crypto.** { *; }
|
|
-keep public class ch.protonmail.android.views.behavior.** { *; }
|
|
-keep public class ch.protonmail.android.utils.MIME.** { *; }
|
|
-keep public class ch.protonmail.android.data.local.model.MessagesTypesConverter { }
|
|
-keep public interface ch.protonmail.android.adapters.base.ClickableAdapter { *; }
|
|
|
|
# PM goopenpgp
|
|
-keep class com.proton.gopenpgp.** { *; }
|
|
|
|
# ez-vcard
|
|
-dontwarn com.fasterxml.jackson.** # Jackson JSON Processor (for jCards) not used
|
|
-dontwarn freemarker.** # freemarker templating library (for creating hCards) not used
|
|
-dontwarn org.jsoup.** # jsoup library (for hCard parsing) not used
|
|
-dontwarn sun.misc.Perf
|
|
-keep class ezvcard.property.** { *; } # keep all VCard properties (created at runtime)
|
|
-dontwarn ezvcard.io.json.** # JSON serializer (for jCards) not used
|
|
-keep,includedescriptorclasses class ezvcard.property.** { *; } # keep all VCard properties (created at runtime)
|
|
-keep class ezvcard.VCardVersion { *; }
|
|
|
|
# dagger
|
|
-dontwarn dagger.internal.codegen.**
|
|
-keepclassmembers,allowobfuscation class * {
|
|
@javax.inject.* *;
|
|
@dagger.* *;
|
|
<init>();
|
|
}
|
|
|
|
-keep class dagger.* { *; }
|
|
-keep class javax.inject.* { *; }
|
|
-keep class * extends dagger.internal.Binding
|
|
-keep class * extends dagger.internal.ModuleAdapter
|
|
-keep class * extends dagger.internal.StaticInjection
|
|
|
|
-keepattributes LineNumberTable,SourceFile
|
|
-dontwarn org.slf4j.**
|
|
-dontwarn javax.**
|
|
|
|
#Andorid Injector
|
|
-dontwarn com.google.errorprone.annotations.**
|
|
|
|
#Material Tabs
|
|
-keep class com.google.android.material.tabs.** {*;}
|
|
|
|
#Lifecycle
|
|
-keep class android.arch.** {*;}
|
|
-keep class * implements android.arch.lifecycle.LifecycleObserver {
|
|
<init>(...);
|
|
}
|
|
-keepclassmembers class * extends android.arch.lifecycle.ViewModel {
|
|
<init>(...);
|
|
}
|
|
-keepclassmembers class android.arch.lifecycle.Lifecycle$State { *; }
|
|
-keepclassmembers class android.arch.lifecycle.Lifecycle$Event { *; }
|
|
-keepclassmembers class * {
|
|
@android.arch.lifecycle.OnLifecycleEvent *;
|
|
}
|
|
|
|
#jobqueue
|
|
-keep interface com.birbit.android.jobqueue.** { *; }
|
|
|
|
# Models
|
|
-keep class ch.protonmail.android.data.local.model.** { *; }
|
|
-keep class ch.protonmail.android.api.** { *; }
|
|
-keep class ch.protonmail.android.uiModel.** { *; }
|
|
|
|
#kotlin coroutines
|
|
-keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {}
|
|
-keepnames class kotlinx.coroutines.CoroutineExceptionHandler {}
|
|
-keepclassmembernames class kotlinx.** {
|
|
volatile <fields>;
|
|
}
|
|
|
|
-keepnames class kotlinx.coroutines.experimental.internal.MainDispatcherFactory {}
|
|
-keepnames class kotlinx.coroutines.experimental.CoroutineExceptionHandler {}
|
|
|
|
-keep class org.jetbrains.kotlin.** { *; }
|
|
-keep class org.jetbrains.annotations.** { *; }
|
|
-keepclassmembers class ** {
|
|
@org.jetbrains.annotations.ReadOnly public *;
|
|
}
|
|
-keep public class kotlin.reflect.jvm.internal.impl.** { public *; }
|
|
|
|
-dontwarn kotlin.reflect.jvm.internal.impl.descriptors.CallableDescriptor
|
|
-dontwarn kotlin.reflect.jvm.internal.impl.descriptors.ClassDescriptor
|
|
-dontwarn kotlin.reflect.jvm.internal.impl.descriptors.ClassifierDescriptorWithTypeParameters
|
|
-dontwarn kotlin.reflect.jvm.internal.impl.descriptors.annotations.AnnotationDescriptor
|
|
-dontwarn kotlin.reflect.jvm.internal.impl.descriptors.impl.PropertyDescriptorImpl
|
|
-dontwarn kotlin.reflect.jvm.internal.impl.load.java.JavaClassFinder
|
|
-dontwarn kotlin.reflect.jvm.internal.impl.resolve.OverridingUtil
|
|
-dontwarn kotlin.reflect.jvm.internal.impl.types.DescriptorSubstitutor
|
|
-dontwarn kotlin.reflect.jvm.internal.impl.types.DescriptorSubstitutor
|
|
-dontwarn kotlin.reflect.jvm.internal.impl.types.TypeConstructor
|
|
|
|
#RxJava, RxAndroid
|
|
-keep class rx.schedulers.Schedulers {
|
|
public static <methods>;
|
|
}
|
|
-keep class rx.schedulers.ImmediateScheduler {
|
|
public <methods>;
|
|
}
|
|
-keep class rx.schedulers.TestScheduler {
|
|
public <methods>;
|
|
}
|
|
-keep class rx.schedulers.Schedulers {
|
|
public static ** test();
|
|
}
|
|
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
|
|
long producerIndex;
|
|
long consumerIndex;
|
|
}
|
|
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
|
|
long producerNode;
|
|
long consumerNode;
|
|
}
|
|
-dontwarn sun.misc.Unsafe
|
|
|
|
# Coroutines
|
|
-dontwarn kotlinx.atomicfu.AtomicBoolean
|
|
|
|
# kotlinx.serialization
|
|
-keepattributes *Annotation*, InnerClasses
|
|
-dontnote kotlinx.serialization.AnnotationsKt # core serialization annotations
|
|
|
|
-keepclassmembers class kotlinx.serialization.json.** {
|
|
*** Companion;
|
|
}
|
|
-keepclasseswithmembers class kotlinx.serialization.json.** {
|
|
kotlinx.serialization.KSerializer serializer(...);
|
|
}
|
|
|
|
-keep,includedescriptorclasses class me.proton.core.**$$serializer { *; }
|
|
-keepclassmembers class me.proton.core.** {
|
|
*** Companion;
|
|
}
|
|
-keepclasseswithmembers class me.proton.core.** {
|
|
kotlinx.serialization.KSerializer serializer(...);
|
|
}
|
|
|
|
-keep,includedescriptorclasses class ch.protonmail.android.**$$serializer { *; }
|
|
-keepclassmembers class ch.protonmail.android.** {
|
|
*** Companion;
|
|
}
|
|
-keepclasseswithmembers class ch.protonmail.android.** {
|
|
kotlinx.serialization.KSerializer serializer(...);
|
|
}
|
|
|
|
# Prevent leaving Data object members always null
|
|
-keepclasseswithmembers,allowobfuscation class * {
|
|
@com.google.gson.annotations.SerializedName <fields>;
|
|
} |