I am working on a ios project which uses third party framework(widevine DRM framework). It is working fine in debug/release modes when it is tested but after archiving it is crashing. Inorder to make the framework work in debug/Release modes I had to set "dead code stripping" to NO and "symbols hidden by default" to NO.
Should I have to change something in the Build Settings for it to run properly after archive? What is the difference between running in Release mode and archive build?
Related
We have developed a Watch App for our React-Native IOS app using SwiftUI. After the the integrations are completed, we've tried to upload the build to TestFlight for testing purposes. In the process, since enabling bitcode is mandatory for WatchOS apps, it is enabled through Project Target -> Build Settings -> Build Options -> Enable Bitcode : Yes (And also tried to enable bitcode for Pods target). However, there is no other option to enable bitcode in the Watch Targets (both watch app and watchkit extension).
When we tried to upload the build to TestFlight, it got rejected with the error code ITMS-90496: Invalid Executable - The executable "{ProjectName}/Watch App WatchKit Extension.appex/WatchKit Extension" does not contain bitcode.
I have also read that in order to make the whole project bitcode enabled, you need to make sure that the libraries are also bitcode compatible. And since the app is a React-Native app, it contains a lot of 3rd party libraries. If anyone who tried to add a Watch App to an existing React-Native project and managed to upload it to TestFlight can help us during the process, it would be really helpful.
For those who are experiencing the same issue, our was in RN 0.63.* version, and the third party libraries were kind of old as well. After upgrading both RN and the third party library versions, the issue is gone and we're now able to upload to Testflight!
In my case it helped to open the project.pbxproj file in an editor outside of Xcode (e.g. VSCode) and remove all lines that contain ENABLE_BITCODE.
Seems the default settings of ENABLE_BITCODE are the right ones. Somehow Xcode puts in these lines without needing them.
currently we've build an app including a pairing library.
this works perfect when we use the simulator or connect an iphone/ipad to test the app.
at the moment we're ready to upload it to the appstore and there's suddenly an error:
this is the message:
You should add a run script phase that removes the x86_64 architecture from your library (after all, it is only there for simulator runs and isn't needed for AppStore distribution). Use the solution described here: http://ikennd.ac/blog/2015/02/stripping-unwanted-architectures-from-dynamic-libraries-in-xcode/
I am experimenting with pulling data from the internet for my app, and everything works as it should when the app is run in the iOS Simulator or on my own device.
The frameworks I'm using are Alamofire, SwiftyJSON and GzipSwift; I cloned the Github repo of the Gzip framework, build it myself, dragged the .framework into my project navigator and linked it up (added the framework to Link Binary with Libraries under Build Phases).
Now, when I build the code for any specific device, it compiles and runs just fine, but when I select 'Generic iOS Device' as the target, the build process fails and tells me that it couldn't find the methods I used from the Gzip framework.
I am quite certain I missed some setting or didn't import the framework correctly, but I have no clue on how to fix this.
Any ideas?
I guess you build the framework only with the simulator architecture instead of building it for all architectures (arm64).
I generated a build on an app for the App Store awhile back. Now I am making some changes but when I try to Run the app in Xcode v7.3.1 I see an alert saying "A build only device cannot be used to run this target. No supported iOS devices are available. Connect a device to run your application or choose a simulated device as the destination."
I can build the app and run it on my iPhone but my emulators have disappeared from the dropdown list of run targets.
I tried cleaning the build and setting Build Settings > iOS Deployment Target to 7.1 as suggested by others but to no avail.
How can I can get my emulators back in the list of run targets?
Xcode has been buggy lately, try to close out Xcode and re-run the project, If that doesn't work make sure your root folder which holds your project contains your project name an make sure the project names are exactly the same, this happened to me yesterday!
My Xcode project builds and runs on a device but it does not build against the simulator. I am using a custom Framework in my project. This post seems to indicate that when you build a Framework to be included in another project you can only build it for the simulator or a device, but not both. Is this the case?
I am using Xcode 6.3.1
You're correct that you can only build for one platform at a time, but the answer in your link explains how to use a script to build a binary that contains the framework for both platforms.