From 8bca6e36d612d235fb6db10c9b2378bcca1917b5 Mon Sep 17 00:00:00 2001 From: matinzd Date: Tue, 15 Aug 2023 14:26:23 +0200 Subject: [PATCH] fix: dot lottie for android in release mode --- .../LottieAnimationViewPropertyManager.kt | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/packages/core/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt b/packages/core/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt index d1ea9cdb..83dd75b8 100644 --- a/packages/core/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt +++ b/packages/core/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt @@ -11,6 +11,7 @@ import com.airbnb.lottie.SimpleColorFilter import com.airbnb.lottie.TextDelegate import com.airbnb.lottie.model.KeyPath import com.airbnb.lottie.value.LottieValueCallback +import com.facebook.react.BuildConfig import com.facebook.react.bridge.ColorPropConverter import com.facebook.react.bridge.ReadableArray import com.facebook.react.bridge.ReadableMap @@ -94,9 +95,27 @@ class LottieAnimationViewPropertyManager(view: LottieAnimationView) { animationURL = null } - sourceDotLottie?.let { - view.setAnimationFromUrl(it, it.hashCode().toString()) - sourceDotLottie = null + sourceDotLottie?.let { assetName -> + if(BuildConfig.DEBUG) { + view.setAnimationFromUrl(assetName) + sourceDotLottie = null + return + } + + // resource needs to be loaded in release mode: https://github.com/facebook/react-native/issues/24963#issuecomment-532168307 + val resourceId = view.resources.getIdentifier( + assetName, + "raw", + view.context.packageName + ) + + if (resourceId == 0) { + RNLog.e("Animation for $assetName was not found in raw resources") + return + } + + view.setAnimation(resourceId) + animationNameDirty = false } if (animationNameDirty) {