mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
e6d1ab9266
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/35841 X-link: https://github.com/facebook/litho/pull/928 X-link: https://github.com/facebook/yoga/pull/1216 The Yoga JNI bindings use Reflection, so we need to let ProGuard know not to strip certain annotated fields. This is done internally using a single copy of `com.facebook.proguard.annotations` from fbandroid (sometimes), which is then repackaged externally, and published as its own whole Yoga specific package. We never actually inform the stock Gradle project of the rules for the annotations though, so apps must add these manually. This simplifies the setup, where Yoga has its own self-contained annotations/rules. The rules are exposed for Gradle/Buck dependencies, but RN and Litho both consume Yoga via dirsync + custom Gradle logic, so we need to duplicate the proguard rules to them instead of them being propagated automatically. Changelog: [Internal] Reviewed By: rshest Differential Revision: D42406641 fbshipit-source-id: c2b12fd498f93f144e5651917ca878d2a5050e08
70 lines
2.5 KiB
Prolog
70 lines
2.5 KiB
Prolog
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
#
|
|
# This source code is licensed under the MIT license found in the
|
|
# LICENSE file in the root directory of this source tree.
|
|
|
|
# Add project specific ProGuard rules here.
|
|
# By default, the flags in this file are appended to flags specified
|
|
# in /usr/local/Cellar/android-sdk/24.3.3/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:
|
|
|
|
# Disabling obfuscation is useful if you collect stack traces from production crashes
|
|
# (unless you are using a system that supports de-obfuscate the stack traces).
|
|
# -dontobfuscate
|
|
|
|
# React Native
|
|
|
|
# Keep our interfaces so they can be used by other ProGuard rules.
|
|
# See http://sourceforge.net/p/proguard/bugs/466/
|
|
-keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip
|
|
-keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters
|
|
|
|
# Do not strip any method/class that is annotated with @DoNotStrip
|
|
-keep @com.facebook.proguard.annotations.DoNotStrip class *
|
|
-keepclassmembers class * {
|
|
@com.facebook.proguard.annotations.DoNotStrip *;
|
|
}
|
|
|
|
-keep @com.facebook.proguard.annotations.DoNotStripAny class * {
|
|
*;
|
|
}
|
|
|
|
-keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * {
|
|
void set*(***);
|
|
*** get*();
|
|
}
|
|
|
|
-keep class * implements com.facebook.react.bridge.JavaScriptModule { *; }
|
|
-keep class * implements com.facebook.react.bridge.NativeModule { *; }
|
|
-keepclassmembers,includedescriptorclasses class * { native <methods>; }
|
|
-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactProp <methods>; }
|
|
-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactPropGroup <methods>; }
|
|
|
|
-dontwarn com.facebook.react.**
|
|
-keep,includedescriptorclasses class com.facebook.react.bridge.** { *; }
|
|
-keep,includedescriptorclasses class com.facebook.react.turbomodule.core.** { *; }
|
|
|
|
# hermes
|
|
-keep class com.facebook.jni.** { *; }
|
|
|
|
|
|
# okio
|
|
|
|
-keep class sun.misc.Unsafe { *; }
|
|
-dontwarn java.nio.file.*
|
|
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
|
|
-dontwarn okio.**
|
|
|
|
# yoga
|
|
-keep,allowobfuscation @interface com.facebook.yoga.annotations.DoNotStrip
|
|
-keep @com.facebook.yoga.annotations.DoNotStrip class *
|
|
-keepclassmembers class * {
|
|
@com.facebook.yoga.annotations.DoNotStrip *;
|
|
}
|