Is it possible yet to build 32bit and 64bit 'fat' binaries for iOS? My understanding was that this was coming down the line but I can't see an obvious way to do it in the latest update to Xcode?
I want my application to run in 64bit mode on 5S and 32bit on 5 and below (obviously),
I did read the docs:
Applications can now target iOS 5.1.1 and later while building for 64-bit using the “Standard architecture (including 64-bit)” build setting. This produces an Archive for the App Store with a single binary containing both 32-bit and 64-bit components. During development and testing, you must build only 32-bit when targeting an iOS 5.1.1 device (this is the default in Xcode).
However this is not clear regarding if it's possible to build a 32 and 64bit fat binary with a target deployment of iOS 7
Thanks.
Yes, it's possible. Make sure that you turn off "Build for Active Architecture Only" first. Doing this in XCode 5 and using Standard Architecture will produce a binary with armv7 and armv7s code, so adding 64bit support should do the same.
If you have any third party libraries, be sure to check for updates that support the new devices.
Related
I'm tying to get Xcode in native mode to use the simulators in Rosetta mode, I found this site, which seems to be trying to work except the packages will not build x86 simulator binaries for the simulator, and so I get errors now saying "Could not find module 'xxx' for target 'x86_64-apple-ios-simulator'; found: arm64, arm64-apple-ios-simulator...", it does work if you target a physical device.
We can't switch to m1 completely yet, because of a library built for us by a third party vendor doesn't include the binary for arm simulators, I don't know why it can't just use the normal arm binary.
We have problems with Xcode code in Rosetta mode as well as we have a few IBDesignable UIView subclasses, rosetta Xcode runs a seperate process to generate binaries for these elements to show their fields in Interface Builder, but this process is generating arm64 binaries, which Xcode in rosetta mode doesn't like and throws errors.
I have asked for the supplier of the framework to compile it to support m1 as they are giving us a new version soon, but its unlikely to happen.
In the mean time, I'm trying to find a way to tell Xcode to build the Packages for x86 simulator, the fields Architectures, Exclude Architectures and Build Active Architecture Only don't seem to effect how the packages are built.
I get two errors when trying to validate the app. it works fine in simulators.
App Store Connect Operation Error
Missing 64-bit support. iOS apps submitted to the App Store must include 64-bit support and be built with the iOS 8 SDK or later. We recommend using the default "Standard Architectures" build setting for "Architectures" in Xcode, to build a single binary with both 32-bit and 64-bit support.
App Store Connect Operation Error
Invalid architecture: Apps that include an app extension and framework must support arm64.
same to me. but it hard to get solution from web.
all the common answer about the Valid Architecture arm64.
But xcode 12 already take out the Valid Architecture =(
I'm frantically trying to submit my app for the iOS 9 launch but I'm confronting a weird problem.
When I try to submit my application binary through Xcode 7, I get the following error:
What scares me is googling ERROR ITMS-90533 returned no results.
The architecture Build Settings seems to check out as per this stackoverflow question. In both the Project target and Extension target:
Architectures is set to Standard Architectures (armv7, arm64) in both the Project target and Extension target
Build Active Architecture is set to NO for RELEASE
Valid Architectures is set to arm64, armv7, armv7s
I'm not really sure what to do at this point. I've tried playing around with the settings and nothing seems to be working. Any help would be really awesome.
I managed to upload a similar app (which contains a content blocker extension just as yours) with the following two changes.
First, both Architectures and Valid Architectures only contain arm64.
Second, Info.plist for both the extension and the main app contains the following, restricting this app/extension to 64 bit architectures:
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
Content blocker extensions are supposed to be 64-bit only. Not sure if a mixed 32/64 bit app can also contain a 64-bit-only extension. To be on the safe side, and since the content blocking is anyway the main/only functionality of my app, I made both the app and extension 64bit only.
Update, March 2016. With Xcode 7.2.1, you no longer need to set architecture as one comment below notes. You only need to set required device capabilities and valid architectures. (You can see this being the default setting when you create a new Content Blocker extension with the standard Xcode templates.)
I found that default template Cocoa project containts i386 arch in build settings. But in general I develops for osx 10.6+(10.7). Is i386 required option or not?
Any Mac that can run 10.7 can run a 64-bit app. If your app is 64-bit only, then some Macs built before 2007, with a Core 1 processor, won’t be able to run it. If i386 support is easy, there’s no reason to turn it off, and it will be easier if you support it from day 1. But any Mac built in the last four years should support 64-bit.
I am using XCode 3.2.6 on an Intel Mac running OS X 10.6, to build a fairly simple app that needs to be able to run under OS 10.4 on a PPC-based Mac, in addition to modern Intel-based Macs.
Under the project settings, I only see options for 32-bit Intel, 64-bit Intel, and Standard (32/64 Intel). Should I be seeing a "Universal Binary" entry here?
I don't have any problem running it under 10.4 on an Intel Mac. I was careful not to use features that don't work under 10.4, and I think I set the project settings correctly to allow it to be backward-compatible to 10.4. It's just that I can't figure out how to get it to compile for PPC.
I'm flailing around, trying to figure out how to build a universal binary, and I think I'm probably just missing something obvious. Any help would be greatly appreciated.
You don't have to choose one of the predefined settings for the Architectures build setting. You can choose "Other..." and then explicitly enter a list of architectures like ppc, i386, x86_64.
By the way, there are extra tricks if you need to run on G3s: You must use GCC 4.0 and the 10.4 SDK.