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