How to submit an archive only for 64-bit iOS devices? - ios

I'm trying to archive a content blocker application. Because the API is only available on 64 bits, I've added this in the info.plist of the app:
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
This value is only in the application target, not the content blocker target. When sending my application to the App Store using Xcode Organizer it returns this message:
ERROR ITMS-90503: "Invalid Bundle. Apps that have 'arm64' in the list of UIRequiredDeviceCapabilities in Info.plist must only contain the arm64 slice."...
I've checked online and this error looks new and undocumented, do you know what should I do to remove it?

As dsiddhpura suggested, the solution is to check the valid architectures in the build settings. Be sure to have selected "All" in the right top-right corner and verify that there is only arm64 in the valid architectures.
It should look like this:

your plist must be look like that:
Set Build Active Architecture Only set to Yes. And you validate build product look like that:

You can't upload apps to the App Store with that requirement. The only requirement you can have is lowest iOS target. So if you specify iOS9 (latest) then the iPhone 4s is still able to download your app. iPhone 4s runs the 32-bit architecture.

Either you can remove the architectures other than "arm64" or you can limit the deployment target to 8.0

Related

Xcode invalid entitlements on very old iOS project

The iOS project I've been tasked with upgrading was written in 2013, using Objective-C and iOS 7 SDK. I updated it for the simulator to work with iOS 10.3 but have run into a problem with entitlements when compiling for a device (which I think will be an issue when packaging for the store).
The error is the standard
The entitlements specified in your application’s Code Signing
Entitlements file are invalid, not permitted, or do not match those
specified in your provisioning profile. (0xE8008016).
but as far as I remember, iOS 7 did not use entitlements in the same way (there is no entitlements file in our old repo). How do I fix it if the project was originally so old? Everything matches as far as I can tell so I don't know why it's causing an issue.
Maybe you could try one of that:
Clean your certificate and make it again on Member Center
Look your in Target> Build Settings > Code Signing > Code Signing Entitlements to confirm the code signing is correct or updated.
Go to your Target > Capabilities. Toggle On/Off or Off/On one of the capabilities.
In this case it was overlooking a build setting that Xcode doesn't seem to fill in.
For developing on devices at least, I had to add the path to the entitlements file in the Project section of build settings, not just the Target. This is under the "Code signing entitlements" row. After adding that entry, I was able to test on my phone again.

iOS app compatibility issue

I'm making an application with Swift 2.1, Xcode 7.1.1.
I want it to be at least compatible with iPhone 4S and 5C.
I configured my project settings with armv7 architecture, info.plist, but when I publish my build, I only have arm64 defined in iTunes connect.
Where do I have to configure it correctly ?
Make sure Build Active Architecture Only is set to NO (at least for release), or else it will use the architecture of the connected device at the time you create the build.
please remove
<string>armv7</string>
from the array in
UIRequiredDeviceCapabilities
in info.plist
and submit the app for review on iTunes Connect.

error uploading iOS app to the store

I'm trying to upload my app to the store but here is what i get:
What I've done before::
1- removing armv7s from plist.info files
2- disabling compile for active architecture only
any idea please??
Based on the errors I would speculate that your Architectures build setting includes architectures other than arm64, but you specify arm64 as a required device capability in your Info.plist. You should either remove that requirement from your Info.plist or set the Architectures build setting to just arm64.

Why is my app only building the arm64 slice?

My iOS app has the following build settings:
And yet when I attempt submit the app to the store, I receive this error:
If I add arm64 to UIRequiredDeviceCapabilities as the error suggests, I get the following message upon submission:
Why did the first archive only contain the arm64 slice?
My project does contain a couple other projects (RestKit and CocoaTouchBarcodes), but these projects' build settings look the same as mine. My project also links to the Google Analytics library. I have verified that it is the latest version.
What could be causing my problem?
I had same issue for tvOS application submit, what helped me was to add this to all cocoapods and frameworks plists:
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
Do you have a device plugged in?
-If you have a device plugged in, that device's architecture is the ACTIVE ARCHITECTURE, so you need to unplug the device.
Also try;
-Set "Build Active Architecture Only" to NO for targets and project.
It turns out I had my AppStore Valid Architectures for the project, not target, set to "armv7, arm64". The problem is that comma in there. I must have added it while entering architectures manually at some point. After removing the comma, the armv7 slice builds and the app store submission succeeds.
After some digging search I could understand:
"... the presence of a given key indicates the corresponding feature is required"
".. omitting a key indicates that the feature is not required but that the app is able to run if the feature is present"
So, if you put armv7 it's the same as only armv7 devices can run it. Probably in a previous version of your app you supported all devices. So just remove the key armv7 and your app will be able to support all kind of devices (armv7 and arm64).
Pay attention to supported architectures

Codesign Check Fails . Code Object is not Signed at all In architecture: armv7

I ran the application on my test device iPod Touch 3G with iOS5.0.1 (9A405). The app complies and run fine on the real device. I have developer account installed. I get following error:
error: Codesign check fails : /Users/apple/Library/Developer/Xcode/Archives/2012-03-12/AppName 3-12-12 9.58 PM.xcarchive/Products/Applications/AppName.app: code object is not signed at all
In architecture: armv7.
I assume the my iPod Touch is a armv6 device. But in the AppName-Info.Plist
I have following fields:
Architectures Standard(armv7) - $(ARCHS_STANDARD_32_BIT)
Base SDK Latest iOS (iOS 5.0)
Code Signing Entitlements
Debug
Release
Code Signing Identity iPhone Developer
Debug iPhone Developer
Any iOS SDK iPhone Developer
Release iPhone Developer
Any iOS SDK iPhone Developer
One extra thing, in the
CODE_SIGN_REQUIRED is set to NO in /Platform/iPhoneOS.Platform/Developer/SDKs/iPhoneOS5.0.sdk/Developer/SDKSettings.plist. I cannot seems to change it to YES. I copy that file to desktop. Change the field and drop it back to this location. This field will not update even when Xcode Version 4.2.1 (4D502) is closed.
EDIT: I updated this file via command line. I was able to change CODE_SIGN_REQUIRED to YES but the problem still persist.
<dict>
<key>AlternateSDK</key>
<string>iphonesimulator5.0</string>
<key>CanonicalName</key>
<string>iphoneos5.0</string>
<key>CustomProperties</key>
<dict/>
<key>DefaultProperties</key>
<dict>
<key>AD_HOC_CODE_SIGNING_ALLOWED</key>
<string>NO</string>
<key>CODE_SIGNING_REQUIRED</key>
<string>YES</string>
<key>CODE_SIGN_ENTITLEMENTS</key>
<string></string>
<key>DEAD_CODE_STRIPPING</key>
<string>YES</string>
<key>ENTITLEMENTS_REQUIRED</key>
<string>YES</string>
Do i need to unable the CODE_SIGN_ENTITLEMENTS from blank to YES? Please help.
Why is it so hard to do code sign in Xcode? I had a app released on Android app store. It was much easier.

Resources