Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Skottie crashes on release builds on Android, adding proguard rule stops it from building a release apk #44

Open
ISnowFoxI opened this issue May 17, 2024 · 5 comments

Comments

@ISnowFoxI
Copy link

The app crashes as soon as you navigate to a page where there is a Skottie component. This was happening on Android. Ios worked fine. Let me know if you need extra logs or anything.

React code:

import cameraPermission from './cameraPermission.json';
...
 <Skottie
  style={styles.animationStyle}
  source={micPermission}
  autoPlay
  loop
  resizeMode="contain"
/>

Sentry report:

Exception in HostFunction: java.lang.NoSuchMethodError: no non-static method "Lcom/skiaskottie/DotLottieReader;.readDotLottie(Ljava/lang/String;)Ljava/lang/String;

LogCat specifically for the release apk:

  
E  FATAL EXCEPTION: mqt_native_modules
Process: com.xxx.xxx, PID: 26091
com.facebook.react.common.JavascriptException: Error: Exception in HostFunction: java.lang.NoSuchMethodError: no non-static method "Lcom/skiaskottie/DotLottieReader;.readDotLottie(Ljava/lang/String;)Ljava/lang/String;", js engine: hermes, stack:
callNativeSyncHook@1:101483
nonPromiseMethodWrapper@1:98493
anonymous@1:2612919
loadModuleImplementation@1:75222
guardedLoadModule@1:74764
metroRequire@1:74386
anonymous@1:2612067
loadModuleImplementation@1:75222
guardedLoadModule@1:74721
metroRequire@1:74386
PermissionsRequired@1:2611442
renderWithHooks@1:364797
beginWork$1@1:406649
performUnitOfWork@1:393234
workLoopSync@1:393094
renderRootSync@1:392975
performSyncWorkOnRoot@1:390366
flushSyncCallbacks@1:354441
batchedUpdatesImpl@1:407047
batchedUpdates@1:347251
_receiveRootNodeIDEvent@1:347536
receiveTouches@1:401729
__callFunction@1:102741
anonymous@1:101046
__guard@1:102002
callFunctionReturnFlushedQueue@1:101004

at com.facebook.react.modules.core.ExceptionsManagerModule.reportException(SourceFile:76)
at java.lang.reflect.Method.invoke(Native Method)
at com.facebook.react.bridge.JavaMethodWrapper.invoke(SourceFile:143)
at com.facebook.react.bridge.JavaModuleWrapper.invoke(SourceFile:22)
at com.facebook.jni.NativeRunnable.run(Native Method)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(SourceFile:1)
at android.os.Looper.loopOnce(Looper.java:211)
at android.os.Looper.loop(Looper.java:300)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(SourceFile:38)
at java.lang.Thread.run(Thread.java:1012)
@idrakimuhamad
Copy link
Contributor

I'm assuming you enabled proguard. You need to add below to the proguard rule.

-keep class com.skiaskottie.** { *; }

@ISnowFoxI
Copy link
Author

I'm assuming you enabled proguard. You need to add below to the proguard rule.

-keep class com.skiaskottie.** { *; }

yes, will try this in a bit, thank you

@ISnowFoxI
Copy link
Author

Can confirm this fixes the issue. Thanks again @idrakimuhamad

@ISnowFoxI
Copy link
Author

I got my hopes up too quickly and didn't test in with a release app. Now it throws build errors. Which I'll post in an hour or so

@ISnowFoxI
Copy link
Author

I was able to pull this out from android studio

:react-native-skottie:buildCMakeRelWithDebInfo[arm64-v8a]
undefined symbol: RNJsi::JsiHostObject::~JsiHostObject()
undefined symbol: RNJsi::JsiHostObject::JsiHostObject()
undefined symbol: RNJsi::JsiHostObject::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)
undefined symbol: RNJsi::JsiHostObject::set(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&, facebook::jsi::Value const&)
undefined symbol: RNJsi::JsiHostObject::getPropertyNames(facebook::jsi::Runtime&)
undefined symbol: typeinfo for RNJsi::JsiHostObject
undefined symbol: RNSkia::RNSkOpenGLCanvasProvider::surfaceAvailable(_jobject*, int, int)
undefined symbol: RNSkia::RNSkOpenGLCanvasProvider::surfaceDestroyed()
undefined symbol: RNSkia::RNSkOpenGLCanvasProvider::surfaceSizeChanged(int, int)
undefined symbol: RNSkia::RNSkOpenGLCanvasProvider::~RNSkOpenGLCanvasProvider()
undefined symbol: RNSkia::RNSkOpenGLCanvasProvider::RNSkOpenGLCanvasProvider(std::__ndk1::function<void ()>, std::__ndk1::shared_ptr<RNSkia::RNSkPlatformContext>)
undefined symbol: RNSkia::RNSkManager::registerSkiaView(unsigned long, std::__ndk1::shared_ptr<RNSkia::RNSkView>)
undefined symbol: RNSkia::RNSkManager::setSkiaView(unsigned long, std::__ndk1::shared_ptr<RNSkia::RNSkView>)
undefined symbol: RNSkia::RNSkManager::unregisterSkiaView(unsigned long)
linker command failed with exit code 1 (use -v to see invocation)
:react-native-skottie:buildCMakeRelWithDebInfo[armeabi-v7a]
JsiSkMatrix.h
JsiSkRSXform.h
react-native-skia-skottie.h
JniPlatformContext.h
memory
RNSkTimingInfo.h
undefined symbol: RNJsi::JsiHostObject::~JsiHostObject()
undefined symbol: RNJsi::JsiHostObject::JsiHostObject()
undefined symbol: RNJsi::JsiHostObject::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)
undefined symbol: RNJsi::JsiHostObject::set(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&, facebook::jsi::Value const&)
undefined symbol: RNJsi::JsiHostObject::getPropertyNames(facebook::jsi::Runtime&)
undefined symbol: typeinfo for RNJsi::JsiHostObject
undefined symbol: RNSkia::RNSkOpenGLCanvasProvider::surfaceAvailable(_jobject*, int, int)
undefined symbol: RNSkia::RNSkOpenGLCanvasProvider::surfaceDestroyed()
undefined symbol: RNSkia::RNSkOpenGLCanvasProvider::surfaceSizeChanged(int, int)
undefined symbol: RNSkia::RNSkOpenGLCanvasProvider::~RNSkOpenGLCanvasProvider()
undefined symbol: RNSkia::RNSkOpenGLCanvasProvider::RNSkOpenGLCanvasProvider(std::__ndk1::function<void ()>, std::__ndk1::shared_ptr<RNSkia::RNSkPlatformContext>)
undefined symbol: RNSkia::RNSkManager::registerSkiaView(unsigned int, std::__ndk1::shared_ptr<RNSkia::RNSkView>)
undefined symbol: RNSkia::RNSkManager::setSkiaView(unsigned int, std::__ndk1::shared_ptr<RNSkia::RNSkView>)
undefined symbol: RNSkia::RNSkManager::unregisterSkiaView(unsigned int)
linker command failed with exit code 1 (use -v to see invocation)
:react-native-skottie:buildCMakeRelWithDebInfo[x86]
undefined symbol: RNJsi::JsiHostObject::~JsiHostObject()
undefined symbol: RNJsi::JsiHostObject::JsiHostObject()
undefined symbol: RNJsi::JsiHostObject::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)
undefined symbol: RNJsi::JsiHostObject::set(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&, facebook::jsi::Value const&)
undefined symbol: RNJsi::JsiHostObject::getPropertyNames(facebook::jsi::Runtime&)
undefined symbol: typeinfo for RNJsi::JsiHostObject
undefined symbol: RNSkia::RNSkOpenGLCanvasProvider::surfaceAvailable(_jobject*, int, int)
undefined symbol: RNSkia::RNSkOpenGLCanvasProvider::surfaceDestroyed()
undefined symbol: RNSkia::RNSkOpenGLCanvasProvider::surfaceSizeChanged(int, int)
undefined symbol: RNSkia::RNSkOpenGLCanvasProvider::~RNSkOpenGLCanvasProvider()
undefined symbol: RNSkia::RNSkOpenGLCanvasProvider::RNSkOpenGLCanvasProvider(std::__ndk1::function<void ()>, std::__ndk1::shared_ptr<RNSkia::RNSkPlatformContext>)
undefined symbol: RNSkia::RNSkManager::registerSkiaView(unsigned int, std::__ndk1::shared_ptr<RNSkia::RNSkView>)
undefined symbol: RNSkia::RNSkManager::setSkiaView(unsigned int, std::__ndk1::shared_ptr<RNSkia::RNSkView>)
undefined symbol: RNSkia::RNSkManager::unregisterSkiaView(unsigned int)
linker command failed with exit code 1 (use -v to see invocation)
:react-native-skottie:buildCMakeRelWithDebInfo[x86_64]
undefined symbol: RNJsi::JsiHostObject::~JsiHostObject()
undefined symbol: RNJsi::JsiHostObject::JsiHostObject()
undefined symbol: RNJsi::JsiHostObject::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)
undefined symbol: RNJsi::JsiHostObject::set(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&, facebook::jsi::Value const&)
undefined symbol: RNJsi::JsiHostObject::getPropertyNames(facebook::jsi::Runtime&)
undefined symbol: typeinfo for RNJsi::JsiHostObject
undefined symbol: RNSkia::RNSkOpenGLCanvasProvider::surfaceAvailable(_jobject*, int, int)
undefined symbol: RNSkia::RNSkOpenGLCanvasProvider::surfaceDestroyed()
undefined symbol: RNSkia::RNSkOpenGLCanvasProvider::surfaceSizeChanged(int, int)
undefined symbol: RNSkia::RNSkOpenGLCanvasProvider::~RNSkOpenGLCanvasProvider()
undefined symbol: RNSkia::RNSkOpenGLCanvasProvider::RNSkOpenGLCanvasProvider(std::__ndk1::function<void ()>, std::__ndk1::shared_ptr<RNSkia::RNSkPlatformContext>)
undefined symbol: RNSkia::RNSkManager::registerSkiaView(unsigned long, std::__ndk1::shared_ptr<RNSkia::RNSkView>)
undefined symbol: RNSkia::RNSkManager::setSkiaView(unsigned long, std::__ndk1::shared_ptr<RNSkia::RNSkView>)
undefined symbol: RNSkia::RNSkManager::unregisterSkiaView(unsigned long)
linker command failed with exit code 1 (use -v to see invocation)

@ISnowFoxI ISnowFoxI reopened this May 17, 2024
@ISnowFoxI ISnowFoxI changed the title Skottie crashes on release builds on Android Skottie crashes on release builds on Android, adding proguard rule stops it from building a release apk May 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants