highcharts-react-native not working in iOS binary (.ipa) - ios

I have a react-native app. This app has an iOS version, which uses Highcharts.
# package.json
...
"dependencies": {
"#highcharts/highcharts-react-native": "^3.1.2"
"highcharts": "^8.2.0"
}
...
In Xcode, when I run the app locally, the chart shows up fine. But when I build an iOS binary (.ipa), the same charting area is empty.
This tells me that the Highcharts library didn't get included in the packaged binary.
I've been playing around with package.json, Podfile, and Xcode Libraries and Frameworks. But nothing seems to work.
I'm really getting killed on time here. Has someone come across this and fixed it?
EDIT (10/21/2020)
I've attached screenshots of i) the working and ii) the non-working screens.
My problem also seems similar to this SO question.
App behaves different when run from XCode compared to .ipa
As per the answer there, when I changed the build configuration for Archive to debug the generated .ipa started to work!1
But if I do not want to use debug for the build I send to Apple, then how do I build + archive so that all libraries are working.
Working
Not Working

Got this working, tested in via Xcode and TestFlight.
As per #SebastianWędzel 's comment, there was an issue in the library itself. But I used a slightly different patch, here.
https://github.com/highcharts/highcharts-react-native/issues/104#issuecomment-714195854
The ultimate solution was patching the getAssetAsString function in this Highcharts library file.
node_modules/#highcharts/highcharts-react-native/src/HighchartsReactNative.js

Related

Xcode creates generic archive of iOS app because of malformed/incomplete Info.plist file inside the archive

I am trying to archive and distribute my ios app but out of nowhere it just stopped working. I have deployed my app many times and also had this problem before because xcode somehow creaded some bad xml lines in my project.pbxproj file, but eventually I edited the xml source code and it was ok (app archive and upload/distribution to AppStore). Now xcode is showing my new created archive in "Other items" sections and i cannot upload to AppStore. I opened the archive and I noticed that key elements are missing from the Info.plist file inside:
I looked into other archives (after upload/distribution) and it should look like this:
I tried about 10-11 links on google or stackoverflow, summerized very well here (see accepted answer): Xcode creating generic Xcode archive instead of iOS App Archive?
I tried everything and also cocoapods update to 1.10.0, cleanup cache, reinstall pods, no luck.
My app uses another framework project (developed also by me as described here: https://www.raywenderlich.com/5109-creating-a-framework-for-ios) but I haven't changed that one either. I set Skip install to YES to everything except my app's main TARGET and PROJECT Build settings and checked for private header files. I also distributed another app that uses that exact framework project and everything is ok there.
I checked the new changes compared to last commit and the only modifications (except the source code files) was the build and version number of my app.
In the end, I opened my archive and added the missing entries manually in with an xml editor inside the Info.plist, and restarted xcode (as described at the end of the accepted answer in the link above). After that I was able to distribute my app. The problem is that I do not want this approach because I do not know what is causing this and also what other problems it may cause. Does anyone have any other ideas? It seems a lot of people come across this issue, it has tens of possible causes and it makes me lose hours of work everytime it happends (about once every few months this issue just pops out of nowhere).

XCode Project Invalid Bundle on App Store Upload

When submitting our app to the app store the validation process for the build keeps getting rejected with the following error.
Invalid Bundle - One or more dynamic libraries that are referenced by your app are not present in the dylib search path.
Has anyone else had issues with this error? I feel like I've tried just about everything. I'd done the suggested otool -L on the main app as well as the watch app. The only library that it shows linked for is the Mixpanel library. The only other two libraries we are using is Fabric and Crashlytics. From my understanding those are not actual real frameworks? I've also tried to set ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES to YES as many posts online suggest. The project builds and runs fine so I'm completely lost as to how to resolve this issue.
This is a React Native iOS app if that has anything to do with it. I'm not the most experience when it comes to iOS stuff but I can find my way around xcode. Anyone have any suggestions? Maybe the best solution is to just create a new xcode project and set everything up again and copy/paste in the code from the previous project?

Submit an app created with create-react-native-app to the App Store (without XCode?)

Before, react-native 0.45, when you'd create a project, it would generate a XCode project file in the ios folder so that you can open it with XCode and use it to submit your app to the app store.
Since react-native 0.45, react native project are created with the create-react-native-app command and there is no xcode project anymore.
I read that you can "eject" to go back to the old style and get an XCode project. create-react-native-app is supposed to make everything easier, so I suppose there is a way to submit to the app store without ejecting that doesn't make the whole process much more painful than by using XCode.
To be clear: I understand that there are probably ways to submit to the app store without XCode, but aren't them much more painful? I can't believe that react-native would then consider it an improvement to not generate a XCode project anymore.
Could someone point me in the right direction?
Since react-native 0.45, react native project are created with the create-react-native-app command and there is no xcode project anymore.
This is incorrect. create-react-native-app is simply one of two ways to start a React Native project. The react-native init method of starting a project is still there in the docs.
To be clear: I understand that there are probably ways to submit to the app store without XCode, but aren't them much more painful? I can't believe that react-native would then consider it an improvement to not generate a XCode project anymore.
You are not going to get a good answer for this as it's very much down to opinion. StackOverflow is not the right place to ask such a question.
Could someone point me in the right direction?
Same with this question. Please read How to Ask to properly demonstrate what you've tried and exactly what issue you are running into.
As a starting point for learning how to publish, I suggest looking at the create-react-native-app documentation as it gives you two options right there:
Ejecting to generate the ios and android folders with which you can then publish.
Using a third party service like Expo to publish for you.
Their documentation goes a bit more into depth on the options. This is the best summary I can give as an answer without putting any of my opinions into it.

Xcode 6.01 Archive validation error: Invalid Segment Alignment

I have been working on an iOS project solely in Xcode. Deployment target is iOS 8.0. After updating to Xcode 6.x, building and testing on my iPhone 5s and iPhone 6 as well as the simulators works fine. However, when I create an archive and want to validate it, I get the following error:
Archive validation failed due to the issues listed below.
iTunes Store operation failed.
Invalid Segment Alignment. This app does not have proper segment alignment and should be rebuilt with the latest version of Xcode. Please contact Developer Technical Support if you need further assistance.
I have googled for the past couple of days and it seems that this problem mostly occurs in connection with other development tools, especially from Adobe. However, I have only used Xcode for development.
This is what I have tried so far:
Reinstalling Xcode 6.01
Turning Autolayout on and off
Set target from 8.0 to 7.1
Just submit the archive (no error message, but new version is not found in Testflight)
Unfortunately, none of this has worked. My questions:
What does the error message want to tell me?
Has anyone any idea how to solve this problem?
Thanks a lot!
I found the solution. XCode seems to have lost track of two of my files (XX.h and XX.c) This file name (with a .o extension) was in the summary of the 1st step of the validation.
I removed the references to both files, added them again and everything works fine. Hope that helps someone!
(Edit: sorry, cannot flag this answer as the right answer, will do so in two days when stackoverflow lets me)
More detailed instructions:
When pressing "Validate" in the Organizer, look at the "Summary" dialog that pops up
If there are any .o files listed in addition to your app, go back to Xcode and remove the corresponding .h AND .m files from your project (removing the reference is sufficient)
Re-add them by dragging and dropping them back into your project
Recompile and it should work (assuming you're not using Adobe Air components in your app)
(thanks a million for this post Fynh, your fix made it finally work for me!)
In my case I was submitting an app that include a framework I had built that was a universal framework - created using lipo (for use with both device and simulator).
After replacing the universal compiled framework with device compiled framework, validation was successful.
To fix this bug I had to go Targets / Build Phases / Expand Copy Bundle Resources and remove the empty.cpp file (my error was about a empty.o file)
Hope this helps someone

PhoneGap Xcode Missing Header files on Build 'Cordova/CDVViewController.h' file not found

I am using PhoneGap 2.2.0 and XCode 4.5.2.
I can test my programs in the simulators, and I can put them on my devices to test them.
But I simply cannot build for distribution. It always fails with the following error:
my-projevt-path/Classes/AppDelegate.h:30:9: 'Cordova/CDVViewController.h' file not found
I've seen this problem around the web and still can't make it work, given whatever solutions have been posted.
I've changed things in Build Settings, I've reinstalled PhoneGap, I've run new lines in terminal, I've done my app over starting a new PhoneGap project from scratch, I've checked preferences in the build location in Xcode... I can't figure this out AT ALL.
Please, can anyone help? I've been working on this for days.
Thanks!
Problems in Xcode
If you have compilation problems related to missing headers, the build products should build into the same build directory. You may need to set the preference "Xcode Preferences -> Locations -> Derived Data -> Advanced…" to "Unique". This is the default setting for Xcode on a fresh new install, if you upgraded from older versions of Xcode, you might have a legacy preference in there that you need to update.
Found the answer!!!
Yes I am getting the same problem yeah and some help could be great.....
I followed all the instructions even with the ./update_cordova_subproject path as well it does not work. Also I solved the locking problem but I could not find the solution to this problem
The answer, in my case, had seemingly nothing to do with the error message that was being sent. Missing header files? That didn't seem to be the issue. Or, at least, not the direct cause of the issue.
This was an issue with my provisioning/certificates being somehow not right. I had re-created them several times, but it continued to be an issue.
I sent the job to another developer, who opened it on his machine, revoked my certificates and created new ones, and built it without changing anything else. He forwarded me the certificate, the provisioning, and an archive of the job. I opened the archive in xCode and validated it and uploaded it. And it was fine.
If you have got this problem, be certain your certificate/provisioning is set up right. I thought mine was, but apparently it wasn't? The "Apple Process" is definitely weird, and when certificates / profiles gets messed up, problems arise.
I was having the same problem and just solved it! First of the problem may very well be because of your distribution provisioning files... but when you look at the Project Navigator in xCode at the top level you have your Project and inside you have the CordovaLib.xcodeproj click on this file and you will see the iOS Deployment target. Make sure the proper IOS version is selected there. This is 1/2.
2) Then you need to duplicate the Release configuration and rename it Distribution. While the CordovaLib.xcodeproj is selected make a build and then build the actual project. This worked smoothly for me.
Add this line to your Build Settings -> Header Search Paths:
$(OBJROOT)/UninstalledProducts/$(PLATFORM_NAME)/include
Don't replace the existing line that looks similar, that is still needed to be backwards compatible with Xcode 7 and Xcode 6.4.

Resources