electrode-io / electrode-native

A platform to ease integration&delivery of React Native apps in existing mobile applications
https://native.electrode.io
Other
726 stars 113 forks source link

Blank project setup with React Native 0.62.2 -> YogaKit modulemap not found and Missing SwiftShims errors #1663

Open devpascoe opened 4 years ago

devpascoe commented 4 years ago

Hi there. I am creating a new setup from scratch. Created a cauldron. Added a nativeapp version. Created a miniapp (its new so RN 0.62.2). Add miniapp to cauldron. Create iOS git container. Publish to container.

New iOS project. Created Cartfile referencing container. carthage bootstrap --no-build --platform ios

Open Xcode project, add framework project. In Xcode, add framework to Frameworks, Libraries and Embedded Content. Edit scheme and disable parallel builds. Xcode build and run. I get the following build errors...

<unknown>:0: error: module map file '/Users/username/Library/Developer/Xcode/DerivedData/demo-abc123/Build/Products/Debug-iphonesimulator/YogaKit/YogaKit.modulemap' not found

and

<unknown>:0: error: missing required module 'SwiftShims'

Are folks having issues starting from scratch? Also let me know if my steps for creating the project aren't quite correct.

Thank you for this epic platform.

cc @belemaire since it appears he headed up the RN 0.62.2 support update.

devpascoe commented 4 years ago

I was able to get the Container project to build by... cd into finalproject/Carthage/Checkouts/app-ios-container npm install pod install open ElectrodeContainer.xcworkspace build successful. I then had do add my ../../../../finalproject project to the ElectrodeContainer.xcworkspace

Now able to build and run however getting another issue launching miniapp. Seems its loaded but getting a crash as its requesting RCTRedBoxWindow

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AppDelegate window]: unrecognized selector sent to instance 0x600003dec1d0'
*** First throw call stack:
(
    0   CoreFoundation                      0x00007fff23e3cf0e __exceptionPreprocess + 350
    1   libobjc.A.dylib                     0x00007fff50ba89b2 objc_exception_throw + 48
    2   CoreFoundation                      0x00007fff23e5dc34 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
    3   UIKitCore                           0x00007fff48cbab74 -[UIResponder doesNotRecognizeSelector:] + 302
    4   CoreFoundation                      0x00007fff23e416b6 ___forwarding___ + 838
    5   CoreFoundation                      0x00007fff23e43bf8 _CF_forwarding_prep_0 + 120
    6   ElectrodeContainer                  0x0000000106c29854 -[RCTRedBoxWindow bottomSafeViewHeight] + 132
    7   ElectrodeContainer                  0x0000000106c27ad3 -[RCTRedBoxWindow initWithFrame:customButtonTitles:customButtonHandlers:] + 883
    8   ElectrodeContainer                  0x0000000106c2ed74 __67-[RCTRedBox
......

Naturally performing those npm install and pod install steps is undesired. But perhaps its a place to look, doesn't seem like those steps are run in any processes automatically.

In any case if someone can confirm creating a fresh new setup using latest React Native version is all working then let me know ❤️😘

devpascoe commented 4 years ago

So a reboot and a clean out and do-over from scratch seems to now allow me to successfully build my client app which is consuming the container framework. hooray! Only other thing i changed was adding a tag to the miniapp instead of referring to a branch. eg, ern cauldron add miniapps https://username@bitbucket.org/reponame/myminiapp.git#v0.0.1 instead of /myminiapp.git#master

However i am unable to load the miniapp. I set debug to NO and i'm getting that RedBox error mentioned above. I decided to: ern start and set debug to YES. I see in the log React Native version mismatch. JavaScript version: 0.62.2 Native version: 0.60.5

Unsure how the versions are different or if its even related to the prod build (when i set debug to NO). I ran watchman watch-del-all && react-native start --reset-cache with no luck.

devpascoe commented 4 years ago

Continuing on... i can see in the Carthage folder the container-metadata.json file refers to: "nativeDeps": [ "react-native@0.60.5", "ernnavigation-api@1.3.0", "ernnavigation-api-impl-native@1.4.2", "react-native-electrode-bridge@1.5.25" ],

However in my cauldron.json: "nativeDeps": [ "ernnavigation-api-impl-native@1.4.3", "ernnavigation-api@1.3.0", "react-native-electrode-bridge@1.5.25", "react-native@0.62.2" ],

Other info, i am setting the preference to use npm instead of yarn.

hmmm

devpascoe commented 4 years ago

The plot thickens and loops back on itself :)

So i ran: ern cauldron update miniapps all --targetVersion v0.0.1 --resetCache then ern publish-container --platform ios --version 1.0.1 --publisher ern-container-publisher-git --url https://username@bitbucket.org/reponame/myapp-ios-container.git then carthage update --no-build --platform ios

Now i can see i get an updated container-metadata.json referencing RN 0.62.2 etc.. plus a Pods folder etc. But ...

When i then build and run in Xcode my project i get the original errors thrown.

<unknown>:0: error: module map file '/Users/username/Library/Developer/Xcode/DerivedData/demo-abc123/Build/Products/Debug-iphonesimulator/YogaKit/YogaKit.modulemap' not found

and

<unknown>:0: error: missing required module 'SwiftShims'

de ja vu 😅

devpascoe commented 4 years ago

Just checking in to see if any of the team / community can fire up from scratch a brand new project with React Native 0.62.2.

friederbluemle commented 4 years ago

Hey @devpascoe - First of all apologies for the radio silence here, we've all been crazy busy with some internal projects..

Thanks for your detailed report! We'll definitely take a look this week. There's also a new release planned, so stay tuned!