xref: /expo/android/app/proguard-rules.pro (revision bb2d166c)
1# Add project specific ProGuard rules here.
2# By default, the flags in this file are appended to flags specified
3# in /Users/ide/Library/Android/sdk/tools/proguard/proguard-android.txt
4# You can edit the include path and order by changing the proguardFiles
5# directive in build.gradle.
6#
7# For more details, see
8#   http://developer.android.com/guide/developing/tools/proguard.html
9
10# Add any project specific keep options here:
11
12# If your project uses WebView with JS, uncomment the following
13# and specify the fully qualified class name to the JavaScript interface
14# class:
15#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16#   public *;
17#}
18
19
20# THIS IS VERY VERY BAD. REMOVE AS SOON AS VERSIONING IS FIXED
21-dontwarn **
22
23
24-dontnote **
25
26-keep class host.exp.exponent.generated.AppConstants { *; }
27
28##### Crashlytics #####
29-keepattributes SourceFile,LineNumberTable
30
31##### React Native #####
32-keep,allowobfuscation @interface **.facebook.proguard.annotations.DoNotStrip
33-keep,allowobfuscation @interface **.facebook.proguard.annotations.KeepGettersAndSetters
34-keep,allowobfuscation @interface **.facebook.react.bridge.ReadableType
35
36# Do not strip any method/class that is annotated with @DoNotStrip
37-keep @**.facebook.proguard.annotations.DoNotStrip class *
38-keepclassmembers class * {
39  @**.facebook.proguard.annotations.DoNotStrip *;
40}
41
42-keepclassmembers @**.facebook.proguard.annotations.KeepGettersAndSetters class * {
43  void set*(***);
44  *** get*();
45}
46
47-keep class * extends **.facebook.react.bridge.JavaScriptModule { *; }
48-keep class * extends **.facebook.react.bridge.NativeModule { *; }
49-keepclassmembers class *  { @**.facebook.react.uimanager.UIProp <fields>; }
50-keepclassmembers class *  { @**.facebook.react.uimanager.ReactProp <methods>; }
51-keepclassmembers class *  { @**.facebook.react.uimanager.ReactPropGroup <methods>; }
52
53# TODO: shouldn't need these two rules
54-keep interface **.facebook.react.bridge.** { *; }
55-keep enum **.facebook.react.bridge.** { *; }
56
57##### Versioned React Native #####
58-keep class **.facebook.** { *; }
59-keep class abi** { *; }
60-keep class versioned** { *; }
61
62##### Butterknife #####
63-keep class butterknife.** { *; }
64-dontwarn butterknife.internal.**
65-keep class **$$ViewBinder { *; }
66
67-keepclasseswithmembernames class * {
68    @butterknife.* <fields>;
69}
70
71-keepclasseswithmembernames class * {
72    @butterknife.* <methods>;
73}
74
75##### Stetho #####
76-keep class **.facebook.stetho.** { *; }
77-dontwarn **.facebook.stetho.**
78
79##### fresco #####
80# Keep our interfaces so they can be used by other ProGuard rules.
81# See http://sourceforge.net/p/proguard/bugs/466/
82-keep,allowobfuscation @interface **.facebook.common.internal.DoNotStrip
83
84# Do not strip any method/class that is annotated with @DoNotStrip
85-keep @**.facebook.common.internal.DoNotStrip class *
86-keepclassmembers class * {
87    @**.facebook.common.internal.DoNotStrip *;
88}
89
90# Keep native methods
91-keepclassmembers class * {
92    native <methods>;
93}
94
95-dontwarn okio.**
96-dontwarn javax.annotation.**
97-dontwarn com.android.volley.toolbox.**
98
99##### okhttp #####
100-keepattributes Signature
101-keepattributes *Annotation*
102-keep class com.squareup.okhttp.** { *; }
103-keep interface com.squareup.okhttp.** { *; }
104# This is also needed by Picasso
105-dontwarn com.squareup.okhttp.**
106
107-keep class okhttp3.** { *; }
108-keep interface okhttp3.** { *; }
109# This is also needed by Picasso
110-dontwarn okhttp3.**
111
112##### okio #####
113-keep class sun.misc.Unsafe { *; }
114-dontwarn java.nio.file.*
115-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
116-dontwarn okio.**
117
118##### EventBus #####
119-keepclassmembers class ** {
120    public void onEvent*(***);
121}
122
123# Only required if you use AsyncExecutor
124-keepclassmembers class * extends de.greenrobot.event.util.ThrowableFailureEvent {
125    <init>(java.lang.Throwable);
126}
127
128##### Amplitude #####
129-keep class com.amplitude.api.** {*;}
130
131##### DBFlow #####
132-keep class com.raizlabs.android.dbflow.config.GeneratedDatabaseHolder
133
134##### SpongyCastle #####
135-keep class org.spongycastle.**
136-dontwarn org.spongycastle.jce.provider.X509LDAPCertStoreSpi
137-dontwarn org.spongycastle.x509.util.LDAPStoreHelper
138