What is the "archived-expanded-entitlements.xcent" file in IOS app? - ios

What is the archived-expanded-entitlements.xcent file ?
What is the use of this file in an iOS application?

Basically, the xcent file is a list of entitlements that the app has requested. Since Xcode 6, the entitlements list is also embedded in the app bundle as the xcent file. This file is important when it comes to submitting to the App Store and provides more helpful error messages when provisioning errors occur.
If you want more info, here is a good in-depth article on code signing and provisioning.

When we archive through Xcode : Product > Archive , it includes an ‘archived-expanded-entitlements.xcent’ file in the final .ipa package.

Related

"Invalid Swift Support - The SwiftSupport folder is missing" with Xcode 7.3.1

After submitting an app update using Application Loader, I got this email from Apple:
We have discovered one or more issues with your recent delivery for
"[App Name]". To process your delivery, the following issues must
be corrected:
Invalid Swift Support - The SwiftSupport folder is missing. Rebuild
your app using the current public (GM) version of Xcode and resubmit
it.
Once these issues have been corrected, you can then redeliver the
corrected binary.
I have confirmed that this binary was built with the latest Xcode GM (7.3.1), so that is not the issue. I have seen a wide variety of potential fixes for this problem online but was hoping that by giving further details somebody might be able to help me figure out the specific solution.
Submitted an IPA file using Application Loader 3.5 with no problems.
The previous version of the app does not use Swift, but this update does.
The "Embedded Content Contains Swift Code" build setting is set to NO. My understanding is that this should only be YES if we have a pure Objective-C target that depends on a Swift or mixed target.
The project uses CocoaPods, but nothing has changed in our pods for this update.
The previous version of the app included a WatchKit app and extension, but this update does not.
Inside an xcarchive generated with the same build, the SwiftSupport folder is there. It contains a subfolder called iphoneos which contains several Apple Swift libraries like libswiftFoundation.dylib.
If I rename the .ipa file to .zip and unarchive it, its app package does not contain a SwiftSupport folder, but does contain a Frameworks folder with the same Swift dylibs.
The solution here was in this answer. We needed to use the new -exportOptionsPlist flag with xcodebuild instead of the older -exportFormat and -exportWithOriginalSigningIdentity flags. The plist just needs to have the method key set to app-store.
The root cause of this is that the provisioning profile is ad-hoc and it doesn't create SwiftSupport directory in the ipa. The folder is created using app-store as the export method, so it worked for me when I updated my provisioning profile to app-store.
Reference
I received this same email after uploading an .ipa file to App Store Connect through the Transporter app. The following is where I went wrong: I distributed the app using ad hoc.
The following steps are the solution for my error:
Archive app
Distribute on TestFlight and the App Store
Export
Open ExportOptions.plist in the newly created folder from the export.
Make sure the method property has the value app-store if you are uploading to App Store Connect/TestFlight like me.
Drag and drop the exported .ipa file to Transporter.
Deliver your app to upload it.
And that's it!
Original answer here: https://stackoverflow.com/a/62568526/10374366
In my case, I just added redundant swift file to the project and it solved the problem.
You should choose "Save for iOS App Store Deployment" instead of "Save for Ad Hoc Deployment" option at the time of creating ipa file.
EXPO users.
I had this problem with expo build:ios it got me stumped for days.
The build from the expo server was about 39mbs which was far smaller than previos versions.
To fix it I had to use
expo build:ios -c
This resets all the credentials (I said yes to all questions) then rebuilds the app. The resuling ipa file was 250mbs and everything is now working preperly.
Use this https://github.com/ndpiparava/Swift_StripArm64e script file remove arm64e from .app file
..Nitin
For our case we use app center for preparing android and ios builds.
For production branch we use release provisioning profile and for normal branches we use normal provisioning profile, and we instead of picking the production build, used normal branch build, which caused this issue.

Binary Rejection - Invalid Watchkit Support

We develop Watchkit app about 1.5 month, and we used Xcode 6.2 beta2,beta4, Xcode 6.3 beta to develop before and now use Xcode 6.2 (6c131e) to develop
We use Xcode 6.2 (6c131e) to archive our project , and use Application loader to submit our app.
And then we received the rejection:
"The bundle contains an invalid implementation of WatchKit. The app
may have been build or signed with non-compliant or pre-release tools.
Visit developer.apple.com for more information. "
anyone help me , thx.
Apple Watch apps are now accepted into the App Store as of Tues. March 31.
However, for folks using the old submission workflow of submitting a zipped .app will hit this error because zipped apps are no longer supported for apps that contain a watch extension. Follow these steps to generate a submittable .ipa file instead.
Supporting Raw Zip Watch App Submissions
App Store import validation ensures that watch app submissions include additional files alongside the submitted bundle that are generated by Xcode. This prevents you from using the old submission workflow of submitting a zipped app file using Application Loader.
However, if you have a build process which currently prevents submitting the watch app using Xcode, you may use the following process to generate the necessary .ipa file to be submitted using Application Loader:
Create a directory named WatchKitSupport as a sibling to Payload
Copy a binary named "WK" from the iOS 8.2 SDK in Xcode to your new WatchKitSupport directory. This binary can be found at: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/Library/Application Support/WatchKit/
Do not touch or re-sign the WK binary in any way
Compress everything into a zip and rename the file extension to .ipa
Note: You may compare your .ipa with one generated by Xcode by exporting an .ipa from an archive of a new Xcode project template for which you have added a watch target.
The format of the resulting IPA should contain (at least):
myApp.ipa
|________Payload/
|________Symbols/
|________WatchKitSupport/
|_____WK
Edit: The .dSYM corresponding to the built .app goes in Symbols/. You can always find it alongside the .app in the built products folder, or in dSYMs of an .xcarchive.
While uploading apple watch app, it need to have apple watch extension into embedded binary of iOS app. But if you are habbitat to delete derived data then xcode6 will delete that target. and when you submit it to apple it will only get ios app not apple watch app.enter image description here
Adding Embedded Binaries fails in Xcode Xcode won't link framework form separate project App crashes on device because of missing framework, works in simulator Overview
After deleting the "DerivedData" folder (or performing a "Product > Clean") in xcode6, I cannot add CocoaTouch frameworks from another project to the "Embedded Binary" section (under General tab).
Or, Xcode hits a linker error because it cannot find a framework that if previously could.
Other symptoms
Clicking on the + under "Embedded Binaries" shows the Framework selector but selecting a framework in different project in the workspace does nothing.
As #bobjt stated above, the old way up uploading a .zip file via the Application Loader is no longer valid for apps that contain a WatchKit app/extension.
I was able to upload a valid binary by building my app and then going to Product>Archive>Submit to App Store.
You can't submit WatchKit apps at the moment. Please wait for an official Apple announcement.
I had the same issue. I solved it by putting the correct image assets to the App Icon & uploaded the app through Xcode not the Application Loader. I archived the app from Xcode & validated it. After that I submitted it through Xcode.

Can't read PKZip signature validating app for App Store

I am attempting to submit a new version of my app to the App Store.
I am using Xcode 6 GM. The previous version of this app was submitted with Xcode 5.1 without issue.
After I generate the app archive, I click "Validate..." in the organiser. Xcode takes me through the process of selecting my developer team and verifies the provisioning profile that will be used.
It then starts to generate the package before failing with the message
ditto: Couldn't read PKZip Signature
Unable to extract archive. Please make sure /var/....path to .pkg is a valid zip or ipa archive.
I have navigated to the directory and tried zip on the command line - this gives an error. If I rename the file to .zip then Finder is happy to unzip it, but Zipeg also returns an error.
What I have tried:
Build->Clean
Recreated the provisioning profile
Recreated my signing certificate
Checked all of the "code signing" settings are the same as for my other projects that work
I have also looked into the log files that are created by the packaging process and there is nothing untoward listed until the error about the invalid zip file.
Has anyone seen this?
I have received details of a work-around from Apple developer support.
Open your target's Info.plist
Select an entry in the plist and then select "Show raw keys & values" from the Editor menu
Ensure the key "LSRequiresIPhoneOS" has the value "YES" (add it if necessary)
Regenerate your archive and submit

Generate iPhone application Archive

I want to submit my iPhone application to the app store. But I'm not able to do that due to following error.
ERROR ITMS-9000: "This bundle is invalid. The executable name, as reported by CFBundleExecutable in the info.plist file, may not contain any of these characters: \ [ ] { } parenthesis . + *" at Software Assets (MZItmspSoftwareAssestPackage)
There isn't any problem in generating ipa file for Ad-Hoc testing. I even tried with creating new project from Xcode but still the error continues. I am using Xcode-5.0
Just Edit this executable file(name) setting in info.plist which wouldn't contain special character as like error above. Check this screenshot. check this apple's doc(CFBundleExecutable)
Refer this stack
Note: This type of error doesn't occur with ad-hoc provisioning profile.
You are use the Ad-hoc distribution provision profile for upload the app in app store ....
According to Apple for upload the app you are use the app store distribution provision profile.
So error generate .....
Create the new provision for upload app store but No need the change bundle id....
and check Architecture
and solve your problem
Thanks
Thanks a lot to all who have tried to pull me out from this issue. I really don't know what was the problem but this morning i create new project, add new controllers and other needed files. Just copy all the codes in relative files. Build with certificate that i generated and was using last night. Submit in App Store and it did submitted. I didn't change in Info.plist file. No needed to generate new Distribution profile. Just create new project.
Many many thanks to #Mani, #Mani vannam, #Deepesh
Problem may be with your project name or target name so please rename it by single click on the target. have your project name with out any special characters like []{}

Change app Version with only IPA file provided (no xcode)

I have an app that was developed for my company. Unfortunately it needs to be resigned (i know how do this part) because the distribution cert has expired. The problem is we need to change the version number so it allows for an update on all iPads. Does anyone know how to do this using terminal (i have xcode installed but i dont have and of the files from the developers). Once again, i only have the IPA file for the app.
Thanks for any help.
Rename the .ipa to .zip, and unzip the archive.
Inside should be a folder called "payload", and inside that folder should be your application archive.
Right-click the application archive, and choose "show package contents."
Find the Info.plist file (either named "Info.plist" or "AppName_Info.plist"). Open that file with a text editor
Change the value of "CFBundleVersion" and "CFBundleShortVersionString" to your desired version number.
Re-zip the archive
Rename the .zip to .ipa
Re-sign the .ipa
In answer to Chris Emerson's comment above (sorry, I don't have enough reputation to add another comment so I'm adding an answer) it is still possible to do this! I have just done it for an IPA with latest updates to everything iOS 8.3, OX Mavericks. I was getting the same message "... could not be installed at this time" and it turned out to be an issue with the entitlements in the provisioning profile not matching the entitlements in the *.app.
You can check the entitlements in both like this: https://developer.apple.com/library/ios/technotes/tn2318/_index.html#//apple_ref/doc/uid/DTS40013777-CH1-TNTAG68, and I put an answer detailing how I fixed the entitlements of my IPA so that they matched here: Alter Minimum OS Version of IPA without XCode, iOS 8+.

Resources