This morning I got an e-mail from Apple saying the following:
Dear Developer,
As we announced in October, beginning February 1, 2015 new iOS apps
submitted to the App Store must include 64-bit support and be built
with the iOS 8 SDK. Beginning June 1, 2015 app updates will also need
to follow the same requirements. To enable 64-bit in your project, we
recommend using the default Xcode build setting of “Standard
architectures” to build a single binary with both 32-bit and 64-bit
code.
If you have any questions, visit the Apple Developer Forums.
Best regards, Apple Developer Technical Support
Now I have a question, how do you ensure that an iOS app IS 64bit compatible?
My build settings look like this:
My Deployment target is iOS 6.0.
I just need to confirm that the app is 64 bit compliant, I am all new to iOS and took over a fairly large project not long ago so I'd rather ask and be 100% sure.
Just to make things a bit clearer, how do you ensure that an iOS app is 64bit compatible? I know you need to set certain build rules such as the one in the image, but I want to know is there any way of knowing that your iOS app is 64 bit compliant. 32 bit iOS apps can run on 64bit hardware so I don't believe checking if the iOS app runs on a device will help.
I believe you could upload a new version and see if you get this message: But I was hoping for a nice option without uploading a new build.
Thanks!
With the settings you have you should end up with arm64 and armv7 in your binary. You won't get armv7s because although it's a valid architecture, it's not included in ARCHS_STANDARD if building on Xcode 6 (See also).
Just because it runs on a 64 bit device, it doesn't mean that it has 64-bit support. 64-bit devices can run 32-bit apps.
To determine whether or not it contains an arm64 chunk, you need to find the application. Go to Xcode preferences, and select the Locations tag. The Derived Data line tells you where files are being built.
Open up a Terminal (Finder->Applications->Utilities->Terminal) and go to that location using the 'cd' command. In my case, my project is stored in ~/MyProject
$ cd ~/MyProject
$ cd build
$ find . -name MyTarget
./build/MyTarget
./build/MyTarget/Build/Products/Debug-iphoneos/MyTarget.app/CoreControl
./build/MyTarget/Build/Products/Debug-iphoneos/MyTarget.app.dSYM/Contents/Resources/DWARF/CoreControl
Now we know where the binary is stored (it's the second result), we can check it to see what architectures it contains:
$ dwarfdump ./build/MyTarget/Build/Products/Debug-iphoneos/MyTarget.app/MyTarget
----------------------------------------------------------------------
File: ./build/MyTarget/Build/Products/Debug-iphoneos/MyTarget.app/MyTarget (armv7)
----------------------------------------------------------------------
.debug_info contents:
< EMPTY >
In my case, I only have arm7 built, not arm64.
Related
I recently Updated the VS for Mac. After Wards I cannot Select Build Architecture Armv7 + arm64. It allows Arm64 alone. Since my app is not going to be pushed in App Store i do want these s=architecture to be selected as my build configuration. How to sorted out this
You can always manually edit .csproj file and write whatever value you want.
Apple deprecated 32 bit support in iOS 11. See https://learn.microsoft.com/en-us/xamarin/ios/platform/introduction-to-ios11/updating-your-app/architecture-changes
32-bit apps will not launch in iOS 11+ and we actually can't compile the 32 bit slice with newer Xcode. This is why you can't just edit the csproj, you'd need Xcode 9.4 for that.
Even if you don't deploy to the store you shouldn't have any issue with a 64 bit only App.
EDIT: My answer is provided below
I was developing an educational app which I was targeting specifically for iPad-1 devices, because I think schools can take advantage on these 'old' devices.
However I'm afraid that nowadays it is not possible to upload apps which support iPad-1 (which is stuck with iOS 5.1).
What happens when I try using Xcode 6.4 to submit, is one of the two:
If I include the standard architectures (both 32 and 64 bits), I'm getting an error saying that apps with 64-bits can't set their target to iOS 5.1.
If I remove the 64-bits support, I'm getting an error saying that Apple do not allow apps without 64-bits binary.
I was trying to search the internet but didn't find much info. Any idea please?
EDIT
I was trying to use the standalone app loader but it didn't change anything because the validate is done by the remote server. For the second option above, I was getting this:
ERROR ITMS-90086: "Missing 64-bit support. Beginning on February 1,
2015 new iOS apps submitted to the App Store must include 64-bit
support and be built with the iOS 8 SDK. Beginning June 1, 2015 app
updates will also need to follow the same requirements. To enable
64-bit in your project, we recommend using the default Xcode build
setting of “Standard architectures” to build a single binary with both
32-bit and 64-bit code."
ANSWER
I got an answer at the developer forums of Apple, so copying here:
Although not in the drop-down box of the deployment targets of Xcode, we need to set the deployment target to be 5.1.1 in order to allow installation on iPad-1 devices.
This is because 5.1.1 is compatible with iPad-1, and is capable of reading dual-architecture binaries.
One thing to consider is that it will not be possible to use TestFlight for testing on these devices, because TestFlight is only compatible with iOS 8 and up. But testing can be taken in other means, like direct-install from Xcode.
My first question on stackoverflow and new to iOS development, figuring things as I go. I have checked similar questions already, see links at bottom.
Task:
I am continuing work on a project for a client to make an iOS app update both 32-bit and 64-bit support compatible.
Archive validation gives me:
iTunes Store operation failed.
Missing 64-bit support. Starting February 1, 2015, new iOS apps uploaded to the App Store must include 64-bit support and be built with the iOS 8 SDK, included in Xcode 6 or later. To enable 64-bit in your project, we recommend using the default Xcode build setting of "Standard architectures" to build a single binary with both 32-bit and 64-...
Problem:
I can't seem to get my project/build to support both 32-bit and 64-bit binaries (let alone 64-bit by itself). I have followed Apple's (and other stackoverflow answers') suggestions with the following settings:
OS X 10.9.5
XCode 6.1
Architectures: Standard architectures(armv7,arm64) - $(ARCH_STANDARD)
Build Active Architecture Only: No (tried 'yes' to debug only and 'yes' to all)
Valid Architectures: armv7 armv7s arm64
iOS Deployment Target: 5.1.1 (also tried 6.0)
Methods attempted (tried deleting DerivedData as well):
a) clean -> build -> archive -> validate
b) connect device -> clean -> build -> disconnect device -> archive -> validate
When I check in the binary (following stackoverflow: ios 64-bit compatibility) I only get armv7 in the dwarfdump (which if I understand correctly is only 32-bit but should also have arm64 with the above settings).
File: MyApp.app/MyApp (armv7)
I have attempted many related solutions related to the problem from other other sources(lost track of other references) but no success.
Any help would be greatly appreciated, thanks!
References:
iOS 64 bit compatibility
minimum os x and xcode requirements for ios 8.1 development
iOS app submission : missing 64-bit support
You can manually add 64- bit (arm64) support like this:
Closing this question and to answer it for anyone else that wasn't aware or are new to iOS development (like me in both cases).
As #Almo and #Jeremiah Jessel mentioned in the comments regarding third-party libraries; I had looked into them and some of them were indeed built as 32-bit binary and were unfortunately, no longer maintained to have 64-bit support.
In my case, the problem was definitely the 32-bit libraries. I had some assistance and was able to update the libraries for 64-bit.
I'm getting warning for 64-bit support missing. The whole message is like below:
Missing 64-bit support - Beginning on February 1, 2015 new iOS apps submitted to the App Store must include 64-bit support and be built with the iOS 8 SDK. Beginning June 1, 2015 app updates will also need to follow the same requirements. To enable 64-bit in your project, we recommend using the default Xcode build setting of “Standard architectures” to build a single binary with both 32-bit and 64-bit code.
I've done changes like attached image for Valid Architectures.
If i try to Archive the build with supporting arm64. I'm getting following errors.
If i will remove arm64 from Valid Architectures, it will work fine and submitted successfully to iTunes Connect but i get mail from iTunes that binary is missing 64-bit support.
I have done googling but not able to get exact solution. Please help me for getting out of this issue.
Any help will be surely worth appreciate.
Thanks,
Amazon iOS SDK offers 64bit support since the version 1.7.0
https://aws.amazon.com/releasenotes/iOS/7003308162044672
Simply use their latest version 2.1.0 , and it will compile with arm64 flag.
That means your library is not compiled for 64 bit, arm64 and your app is expecting it,
There should be new version of that library which supports arm64, just check the developer's web site.
http://aws.amazon.com/mobile/sdk/
Simply update valid architectures and add arm64 flag in Xcode it's not the only step that you need to make an application 64-bit compatible.
Your log is telling you that one library at least it has not been compiled for 64-bit. So update your libraries, in particular from the logs I think you need update the Amazon library.
Problem in xamarin Studio submission 64 bit app to appstore
I work with Xamarin Studio. I transform my app with Unified Api and changed my supported architectures to "ARMv7 + AMRv7s + ARM64".
Rebuild and it's ok but when i submission my app to appstore, i receive always:
"Missing 64-bit support - Beginning on February 1, 2015 new iOS apps submitted to the App Store must include 64-bit support and be built with the iOS 8 SDK. Beginning June 1, 2015 app updates will also need to follow the same requirements. To enable 64-bit in your project, we recommend using the default Xcode build setting of “Standard architectures” to build a single binary with both 32-bit and 64-bit code."
I enable 64-bit for AppStore configuration, what's the problem? Can help me?
Given your description I can only guess what could be the problem there, although I've seen quite a few similar issues with ARM64 support.
Check whether the ARM64 architecture is enabled for Release builds (or whatever build configuration you use for submitting to the AppStore)
Check the resulting IPA whether it contains mono binaries with the '32' and '64' suffix
Try a fully clean build (not just clean and build, i.e. checkout your scm repository into a clean directory)
I had to make sure the debug build was set to arm64 as well. Not sure why but this solved it for me.
Do you have a device plugged into the Mac while you're compiling the AppStore build? I've had issues with it when having a device plugged in because it wants to compile for that device only.