xref: /expo/android/app/proguard-rules.pro (revision 8ef929c3)
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##### Expo Universal Modules #####
32
33-keepclassmembers class * {
34  @expo.core.interfaces.ExpoProp *;
35}
36-keepclassmembers class * {
37  @expo.core.interfaces.ExpoMethod *;
38}
39
40-keepclassmembers class * {
41  @**.expo.core.interfaces.ExpoProp *;
42}
43-keepclassmembers class * {
44  @**.expo.core.interfaces.ExpoMethod *;
45}
46
47##### React Native #####
48-keep,allowobfuscation @interface **.facebook.proguard.annotations.DoNotStrip
49-keep,allowobfuscation @interface **.facebook.proguard.annotations.KeepGettersAndSetters
50-keep,allowobfuscation @interface **.facebook.react.bridge.ReadableType
51
52# Do not strip any method/class that is annotated with @DoNotStrip
53-keep @**.facebook.proguard.annotations.DoNotStrip class *
54-keepclassmembers class * {
55  @**.facebook.proguard.annotations.DoNotStrip *;
56}
57
58-keepclassmembers @**.facebook.proguard.annotations.KeepGettersAndSetters class * {
59  void set*(***);
60  *** get*();
61}
62
63-keep class * extends **.facebook.react.bridge.JavaScriptModule { *; }
64-keep class * extends **.facebook.react.bridge.NativeModule { *; }
65-keepclassmembers class *  { @**.facebook.react.uimanager.UIProp <fields>; }
66-keepclassmembers class *  { @**.facebook.react.uimanager.ReactProp <methods>; }
67-keepclassmembers class *  { @**.facebook.react.uimanager.ReactPropGroup <methods>; }
68
69# TODO: shouldn't need these two rules
70-keep interface **.facebook.react.bridge.** { *; }
71-keep enum **.facebook.react.bridge.** { *; }
72
73##### Versioned React Native #####
74-keep class **.facebook.** { *; }
75-keep class abi** { *; }
76-keep class versioned** { *; }
77-keep class expo.modules** { *; }
78
79##### Butterknife #####
80-keep class butterknife.** { *; }
81-dontwarn butterknife.internal.**
82-keep class **$$ViewBinder { *; }
83
84-keepclasseswithmembernames class * {
85    @butterknife.* <fields>;
86}
87
88-keepclasseswithmembernames class * {
89    @butterknife.* <methods>;
90}
91
92##### Stetho #####
93-keep class **.facebook.stetho.** { *; }
94-dontwarn **.facebook.stetho.**
95
96##### fresco #####
97# Keep our interfaces so they can be used by other ProGuard rules.
98# See http://sourceforge.net/p/proguard/bugs/466/
99-keep,allowobfuscation @interface **.facebook.common.internal.DoNotStrip
100
101# Do not strip any method/class that is annotated with @DoNotStrip
102-keep @**.facebook.common.internal.DoNotStrip class *
103-keepclassmembers class * {
104    @**.facebook.common.internal.DoNotStrip *;
105}
106
107# Keep native methods
108-keepclassmembers class * {
109    native <methods>;
110}
111
112-dontwarn okio.**
113-dontwarn javax.annotation.**
114-dontwarn com.android.volley.toolbox.**
115
116##### okhttp #####
117-keepattributes Signature
118-keepattributes *Annotation*
119-keep class com.squareup.okhttp.** { *; }
120-keep interface com.squareup.okhttp.** { *; }
121# This is also needed by Picasso
122-dontwarn com.squareup.okhttp.**
123
124-keep class okhttp3.** { *; }
125-keep interface okhttp3.** { *; }
126# This is also needed by Picasso
127-dontwarn okhttp3.**
128
129##### okio #####
130-keep class sun.misc.Unsafe { *; }
131-dontwarn java.nio.file.*
132-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
133-dontwarn okio.**
134
135##### EventBus #####
136-keepclassmembers class ** {
137    public void onEvent*(***);
138}
139
140# Only required if you use AsyncExecutor
141-keepclassmembers class * extends de.greenrobot.event.util.ThrowableFailureEvent {
142    <init>(java.lang.Throwable);
143}
144
145##### Amplitude #####
146-keep class com.amplitude.api.** {*;}
147
148##### DBFlow #####
149-keep class com.raizlabs.android.dbflow.config.GeneratedDatabaseHolder
150
151##### SpongyCastle #####
152-keep class org.spongycastle.**
153-dontwarn org.spongycastle.jce.provider.X509LDAPCertStoreSpi
154-dontwarn org.spongycastle.x509.util.LDAPStoreHelper
155