apivideo/api.video-reactnative-live-stream

[Bug]: Expo SDK 49

BlueBazze opened this issue · 17 comments

Version

v1.2.3

Which operating systems have you used?

  • Android
  • iOS

Environment that reproduces the issue

Any expo build for android.

Is it reproducible in the example application?

No

RTMP Server

192.168.2.28:1935

Reproduction steps

Reproduction: https://github.com/BlueBazze/expo-49-livestream-build-error/tree/master

Trying to build the reproduction throws the error mentioned in the Relevant logs output.
Building the reproduction is descriped in the reproductions' README

Expected result

Build succeeds

Actual result

Build throws the error mentioned in relevant logs output.

Additional context

Trying to use this package with Expo SDK 49 throws the error.
SDK 49 runs on React Native version 0.72.3

Haven't tested iOS

Found this related issue on another RN package: margelo/react-native-quick-crypto#186

At the moment of writing this i would consider this low priority.
Google's latest requirement is android target api 33 which takes effect in 9 days relative to the creation of this github issue.
Expo SDK 48 is supported until SDK 50 is released. And SDK 48 is android targeting api 33

Relevant logs output

[stderr] 
FAILURE: Build failed with an exception.

[stderr] 
* What went wrong:

[stderr] 
Execution failed for task ':app:mergeDebugNativeLibs'.

[stderr] 
> A failure occurred while executing com.android.build.gradle.internal.tasks.MergeNativeLibsTask$MergeNativeLibsTaskWorkAction

[stderr] 
   > 2 files found with path 'lib/arm64-v8a/libcrypto.so' from inputs:

[stderr] 
      - /home/expo/.gradle/caches/transforms-3/96aa0437b2be82ab10ada7819631979e/transformed/jetified-flipper-0.182.0/jni/arm64-v8a/libcrypto.so

[stderr] 
- /home/expo/.gradle/caches/transforms-3/4f404765331db8d43fd810e44289770b/transformed/jetified-rtmpdroid-1.0.5/jni/arm64-v8a/libcrypto.so

[stderr] 
     If you are using jniLibs and CMake IMPORTED targets, see

[stderr] 
     https://developer.android.com/r/tools/jniLibs-vs-imported-targets

I'll look further into this when i get the time if it has not been resolved.
If there are any questions, or explanation need. I will happily answer.

Hi,
Thank for reporting this issue.
This is something we are aware of but the solution is not easy.

I started to upgrade the project with new architecture and new RN version in #67
But I am kind of stuck for now.

b4rtt commented

Hi, Is there an update? We tried to get everything working but unfortunately it's not working. :-( Do you know if downgrading to expo 38 will help?

@b4rtt Downgrading to 38 will yeet you into 2019.

This library works with SDK 48. I am using this version.
Unfortunately this project needs to support fabric to be used in SDK 49 or higher.

having the same issue, any updates?

Thanks @BlueBazze for the answer.

As long as Fabric does not support swift and openssl 3, there won't unfortunately be anything released.

@ThibaultBee do we have any luck yet? is there any alternative or workaround right now that is as good as this?

@BlueBazze

I have fixed this issue in #67

Cool. What did you end up doing about OpenSSL?

Noticed you mentioned some annoyances with iOS in #67. I have a few days available next week if you want any help.

I made a single large shared library librtmpdroid.so that embed libssl.so and libcrypto.so instead of having multiple shared libraries.
The counterpart is that the RN library will embed twice libssl.so and libcrypto.so, so the application will be larger.

Noticed you mentioned some annoyances with iOS in #67. I have a few days available next week if you want any help.

Cool, I would appreciate if you could help on the iOS new arch. 🙏

@ThibaultBee I've played around with it.
Havent been able to get the project started.
Keep getting The Swift pod "react-native-livestream" depends upon "glog", which does not define modules.
Tomorrow i will try to initiate a new objc module and try to get it working there.
Hopefully it can work. Cause Haishinkit has some strong opinions about objc.

Btw, i found this package that uses swift and seems to have a working bridge. https://github.com/mateusz1913/react-native-avoid-softinput/blob/main/packages/react-native-avoid-softinput/ReactNativeAvoidSoftinput.podspec

oh, thanks. I had a look on the project, there might a start of a solution

Unfortunately, on my side, it seems that RCT_NEW_ARCH_ENABLED is never defined when I try to build for the new arch even when I use RCT_NEW_ARCH_ENABLED=1 bundle exec pod install
🤷

This new architecture is really a pain to implement :(

Edit:
Seems like files must have the mm extension instead of the m extension. 🤦