-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
BITCODE support #535
Comments
I'm not sure what the |
When trying to build Quick with Xcode 7 beta 3, I got the following failure message:
Perhaps it's related to this? |
@dduan That is related to Quick/Quick#342. |
From whatt i've gathered so far, bitcode will be included ONLY when archiving. Afaict, carthage isn't archiving, so i imagine there is some work to be done there. |
Any update on this? Is there anybody working on this? Otherwise I'd invest some spare time... |
I'm not sure what should be done here. |
This issue is making any watchOS frameworks unusable when built with Carthage. When you try to submit the app to iTunesConnect, the Bitcode is missing. |
To be fair, I opened this issue not knowing what it would entail at the time. As far as I'm concerned all this is completely broken anyway. |
I'm running into this issue as well. When submitting an app, I get the following warning for each framework built by Carthage:
The dependencies do have the bitcode build setting enabled, but Carthage' build process/xcodebuild doesn't seem to pick that up. I'd like to help in resolving this issue, but any pointers for where to look would be appreciated. |
I got around this by adding the Carthage checkout to my workspace and building the frameworks with my project. You can use |
Bitcode segments are included by xcode only when archiving. So if by "bitcode build setting enabled", you mean the dropdown set to "yes", that's expected. /kra On Sep 15, 2015, at 4:47 AM, Thomas Visser [email protected] wrote:
|
Maybe we should be using the |
I have found the Xcode setting differs between archive and build: During normal builds, During archive builds, |
Interesting! I wonder if making Carthage manually set |
Definitely sounds like the way you'd like to go. Awesome finding! |
Switching to |
conradev - thanks for your tip! I just tried adding that to my frameworks in Xcode then manually rebuilding. It worked and my WatchOS2 app is now submitted :-) So I can confirm this seems to fix it. |
I have two Frameworks developed by myself that seem to miss the bitcode. I get this error when submitting: I modified the run script adding OTHER_CFLAGS="-fembed-bitcode", but doesn't seem to work either. Anybody can give me a step by step solution. I would really appreciate, I am completely stuck. |
I didn't find any place in Xcode for setting BITCODE_GENERATION_MODE to bitcode. How is that done? |
@skyluca You can add it as a |
Also to be clear that flag goes in the framework projects - and you'll have to rebuild your frameworks once you've added it. So for me the steps were
|
@conradev, @dcaunt, @TomThorpe Thank you very much! I set BITCODE_GENERATION_MODE to bitcode. It looks it worked out. This time I am not receiving any error from iTunes, and the Icon of the App appeared on TestFlight App. Nevertheless it's still processing. I have been stuck on this for 48 hours, because I have a very complicated run script for building a Universal Framework both for iOS and WatchOS (and then another script for eliminating the simulators slices during submission). I hope that the nightmare is finished. |
There is another relatively significant issue. Before submitting I have to uncheck "Include application symbols" (this way I cannot receive symbolicated crashes... If I do not uncheck I get this error: "The archive did not contain <DVTFilePat: .............../BCSymbolMaps/.... as expected. Anyone ever got this problem? |
By the way I confirm that the submission setting BITCODE_GENERATION_MODE to bitcode worked perfectly!!!!! Thank you!! |
Yep I did get that too and also unticked the upload dsyms option. Sorry I should have mentioned that. I'm not sure how important uploading dsyms will be now anyway given that if you submit using bitcode the app willl have the final compilation done by the app store which should generate the dsyms for us. I'm not 100% sure on that though. Glad it worked for you! Full credit to @conradev for finding that flag! |
Yes full credit to @conradev !! By the way I have another "small" issue when the submission to iTunes is finalized. I get this message: " The archive passed validation with several warnings. iTunes Store operation succeeded with a warning. The resulting API analysis file is too large. We were unable to validate your API usage prior to delivery. This is just an informational message" Do you get you too this message?? |
@skyluca I always get that warning, doesn't have much to do with bitcode. I don't think bitcode has anything to do with dsyms, it opens post submission optimizations by retaining the semantics, but the actual debug symbols like "File foo+category.m line 24" is not available with dsy,s |
And it's a good idea? |
Yeah I would probably remove it. It's only an implementation detail due to how Xcode works and the fact that |
That's true, thank you! 👏 |
Are you talking about this change? 8fdc17d If I am reading this right, you are saying the next release of Carthage (0.9.4) should automatically handle setting BITCODE_GENERATION_MODE correctly without requiring every project change their own settings, yes? |
I don't know which version number next Carthage release will have but this issue should be solved in it. I don't know specific commit as well. |
I do not understand what happens, but with the new version of Xcode 7.3, the same dynamic library that I built with the flag BITCODE_GENERATION_MODE to bitcode, and which was working perfectly until now, does not work anymore. The project where I import my dynamic library gives again (when archiving) the error "You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE) or obtain an updated library from the vendor for architecture armv7k". Any clues? |
@drskywalkerluke Can you please open a new issue with the details of your problem? This thread is very long, and your issue is related but distinct. |
These build settings allow Mantle to be used with Carthage as a precompiled binary in projects that require the use of bitcode. They match the build settings defined in the ReactiveCocoa/ReactiveCocoa project. Without the BITCODE_GENERATION_MODE setting set to 'bitcode', Carthage builds fail with: 'bitcode bundle could not be generated because 'Carthage/Build/iOS/Mantle.framework/Mantle' was built without full bitcode. All frameworks and dylibs for bitcode must be generated from Xcode Archive or Install build for architecture armv7' See also: Carthage/Carthage#535
…o bitcode This enables frameworks to support Bitcode when built with Carthage (which uses `build` instead of `archive`). See Carthage/Carthage#535 for more details.
Reading the release notes, I stumbled upon this:
Given that
Carthage
is simply built on top ofxcodebuild
(yay!), it's likely that nothing will need to be changed. When compiling frameworks for dependencies using Xcode 7 (which hopefuly will haveENABLE_BITCODE
set totrue
by default), it will do the right thing.I figured I'd open an issue to keep track of this though :)
Happy Swifting!
The text was updated successfully, but these errors were encountered: