Invalid Bundle - App Store Rejection - ios

I am trying to submit my app into the app store but I am getting an error message from Apple:
Dear developer,
We have discovered one or more issues with your recent delivery for
"My App". To process your delivery, the following issues must be
corrected:
Invalid Bundle - One or more dynamic libraries that are referenced by
your app are not present in the dylib search path.
Once these issues have been corrected, you can then redeliver the
corrected binary.
Regards,
The App Store team
I tried using this answer to find out what's wrong but I am still stuck. I exported the iPA file of the app and used the otool -L MyApp command to find the frameworks. Here are the results:
These are my frameworks from the iPA file:
I downloaded all my frameworks using carthage and I added the frameworks to the embedded frameworks section:
However when I submit the app I get the same email back from Apple.
Thanks!

Not sure if this helps, but I encountered the same error once when updating an app. In that case, the problem was caused by a third party library that had to be updated to match the current set of architectures and SDK.

My suggestion is open your archieve from organizer > see product folder > open project.app > see there should no any .exe file(any where within folders as well).

I finally got it accepted by switching "Always Embed Swift Standard Libraries" to yes:

Related

The bundle at 'my_app.app/ResearchKit/ResearchKit/Info.plist' does not contain a bundle executable

Update
XCode Version: 8.2
iOS Target: 9
Hopefully some can point out to me that this is not a bug. Very simply I pulled the latest stable version of researckKit, and I dropped the .xcodeproj file into my new iOS project, added the embedded binary. I created a couple steps that look fine in the simulator. My app builds fine and even the archive validates OK. Upload to app store is fine, but then I am receiving emails from the app store with 6 entries all look about the same, for 6 different Info.plist files inside the ReserachKit framework:
Unexpected CFBundleExecutable Key - The bundle at
'my_app.app/ResearchKit/ResearchKit/Info.plist' does not contain a
bundle executable. If this bundle intentionally does not contain an
executable, consider removing the CFBundleExecutable key from its
Info.plist and using a CFBundlePackageType of BNDL. If this bundle is
part of a third-party framework, consider contacting the developer of
the framework for an update to address this issue.
I have found quite a few answers on Stack Overflow, many people agreeing to do what was suggested in the error message: simply remove the CFBundleExecutable Key from the .plist files. I tried that, but then my archive will not even validate with the following error:
iTunes Store operation failed. Invalid Bundle Structure - The binary
file 'my_app.app/Frameworks/ResearchKit.framework/ResearchKit' is not
permitted. Your app can’t contain standalone executables or libraries,
other than the CFBundleExecutable of supported bundles. Refer to the
Bundle Programming Guide at
https://developer.apple.com/go/?id=bundle-structure for information on
the iOS app bundle structure.
** UPDATE **
Granted I pulled a fresh version of the ResearchKit framework from github for this project. So instead I just tried a copy of a version of ResearchKit from another Xcode Project that I have successfully deployed on the app store recently, i figure if it worked for that app it should go through for this app. But Alas, I am getting the same email error from the App Store about the Unexpected CFBundleExecutable Key.
Again this is an apple-supported free framework. There are simple instructions for how to use it on the github page, which I followed. I have used it before and submitted an app with this framework recently, which had no problems and is currently active in Test Flight Beta Testing. I also filed an issue on the GitHub project page.
I met this problem like yours,and I fixed it by:
Remove Executable file in ResearchKit
Find info.plist in ResearchKit,do:
delete info.plist in ResearchKit.
Or you can add Bundle version,Bundle identifier,Bundle versions in this info.plist,they should be same as your parameters in your own info.plist
check Target - Info - URL Types,check if there is illegal identifier
I contacted Apple Technical Support and they helped me solve the problem. Like I had suspected it was NOT necessary to alter the ResearchKit framework in any way for this to work correctly.
For me, the issue was that I was copying the entire source code, test cases, Xcode projects, and the rest of ResearchKit into the app.
I must have done this at an early step and didn't realize. What was helpful for me was to go to the Build Phases tab in XCode and look in the different sections. My error was that I had the researchkit framework in the sections: Link Binary With LIbraries and Copy Bundle Resources. I needed to remove those.
The correct configuration, which you get by dragging the xcodeproj file to the project and embedding the binary will just add on line to the Target Dependencies and Embed frameworks sections in Build Phases.
Here is a screenshot of my corrected configuration:

How to debug "Invalid Bundle" error which happens only after submitting to app store

I have a lot of frameworks in my app. App works fine in adhoc/enterprise release. Only if I submit to the app store for testflight testing I get this error email from apple:
Dear developer,
We have discovered one or more issues with your recent delivery for "My app's name here". To process your delivery, the following
issues must be corrected:
Invalid Bundle - One or more dynamic libraries that are referenced by your app are not present in the dylib search path.
Once these issues have been corrected, you can then redeliver the corrected binary.
Regards,
The App Store team
there is no specific information here. How can I debug it?
Got an answer from Apple Developer Technical Support which says it is a bug on Apple's side. this is the suggested workaround below which did not work for me:
To diagnose this issue, you should export the IPA you are sending to
the App Store from Xcode. Since IPAs are zip files, you can
decompress it by right clicking and saying Open With > Archive
Utility. You should find your main executable inside the unzipped
folder structure and run otool at the command line to see the library
list: otool -L
The list of paths you get should match what you find inside of your
IPA. All of your libraries should start with #rpath. A simple
comparison of everything in this list with the unzipped IPA folders
should reveal what is missing.
Once you know what is missing, go to your Xcode build phases setup.
There should be a build phase for either Copy Files or Embed
Frameworks that includes the missing library — you should just add the
library to the list. If you don’t see either of these build phases,
you can recreate it by adding a new Copy Files build phase, setting
the Destination to Frameworks, and adding the library to the list,
ensuring that Code Sign On Copy is checked.
If you don’t find anything missing in your main binary, make sure to
do the same search on any other binaries you may have, like for a
watchOS app or an iOS app extension.
If you find that all of the frameworks are in this build phase, please
take a look at the Embedded Binaries section of your app target’s
General page, and let me know if you see multiple levels of ../ next
to the binary that you found is missing.
Please let me know if it works for you!
I have encountered the same issue when uploading an app with watch support to the app store.
I was able to solve it with the hint from the first answer, using otool -L to analyze the binary from the ipa or xcarchive.
However, the problem was not with my frameworks (at #rpath) but with a swift lib. I noticed that libswiftWatchKit.dylib was missing in the frameworks folder.
The solution that worked for me was as simple as to set EMBEDDED_CONTENT_CONTAINS_SWIFT=YES in the build settings of the watch app (or the watch app extension, but not both). After that, all necessary swift libraries were correctly copied to the watch app path in the archive and upload to app store was working correctly.
Apparently, the watch app works and upload passes if you provide the necessary swift libraries only in the main app's folder.
After adding the custom Swift framework to my project I got this email after uploading the app to iTunes connect.
I got this email from iTunes store,
Invalid Bundle - One or more dynamic libraries that are referenced by your app are not present in the dylib search path.
The fix is simple for this issue,
Step 1: Make sure your Custom framework is added to Embedded Binaries in General tab of your target.
Step 2: Under build settings,
Set Always Embed Swift Standard Libraries = Yes for your main project target.
And Set Always Embed Swift Standard Libraries = No for your custom framework target.
This solved my problem and I was able to upload binary to iTunes connect.
Ref
Tried all the above solutions and did not work for me.
I was experiencing this issue in Xcode 10.1 recently and all my frameworks were referenced correctly (did otool -L and everything lined up).
Seems there were some changes in the apple validation process, may be a bug, may not be on Apple's end, but all my prior builds uploaded and validated fine -- and I did not add any new frameworks since.
Upon uploading the binary to iTunesConnect, I'd see the following error:
Invalid Bundle - One or more dynamic libraries that are referenced by
your app are not present in the dylib search path.
Invalid Bundle - The app uses Swift, but one of the binaries could not
link to it because it wasn't found. Check that the app bundles
correctly embed Swift standard libraries using the "Always Embed Swift
Standard Libraries" build setting, and that each binary which uses
Swift has correct search paths to the embedded Swift standard
libraries using the "Runpath Search Paths" build setting.
MY SOLUTION:
After days of debugging, what worked for me was to disable 'Include bitcode for iOS content' upon uploading the archive from Xcode organizer. Seems that this option modifies the binary which caused the validator to fail.
Or you can disable bitcode in your Build Settings
My Problem:
I had the same error with embedded frameworks.
The App project has Custom Framework project
Inside the Custom Framework project is another Custom Framework project
The app built to the simulator and to devices with no problem but failed the Apple test, returning "Invalid Bundle".
I inspected the package just like Taha had been told to by Tech Support and everything was present and correct!
My Solution:
I restructured the project so that the two custom frameworks sit side by side and one is no longer embedded within the other.
This looks to be an Apple validation problem since everything works fine on devices and the simulator but the work around was straight forward.
In my case, in the build settings, this was fixed when I added the following to the build settings for the library:
DYLIB_INSTALL_NAME_BASE = #rpath
The clue was a linker warning: 'YourLibrary has an install name beginning with “/”, but it is not from the specified SDK'
Had same issue. This happened to me because one of my Framework target was added to main target in "Link Binary With Libraries" but was not added to "Target Dependencies" and "Embedded Binaries"
I also received a similar mail from Apple:
Dear Developer,
We identified one or more issues with a recent delivery for your app,
"********. Please correct the following issues, then
upload again.
ITMS-90562: Invalid Bundle - One or more dynamic libraries that are
referenced by your app are not present in the dylib search path.
Best regards,
The App Store Team
I used my own framework for my watch app. I solved this issue by changing the framework option to "Embed Without Signing" in the Extension Target. The default option was "Do Not Embed".
I had the same problem, it was due to one framework not being present in the Frameworks subfolder in the app bundle.
I fixed it by adding a Copy Fields build phase, and adding the missing .framework file there.
This error message is also addressed in Apple Technical Note TN2435
Embedding Frameworks In An App: https://developer.apple.com/library/archive/technotes/tn2435/_index.html
You can find the error message under the heading "Missing Framework Bundle" with troubleshooting steps.
We had the same problem, and even after going through all the steps (see "Missing Framework Bundle"), the only thing that worked was disabling Bitcode.
So I struggled on this for two days. What it turned out to be was I had UITests checked in Archive for the Build for the Scheme I was archiving.
After unchecking it from Archive, re-archiving it, validating it (although validating it before always passed), and "Upload to AppStore" I did not get the e-mail from Apple informing me of Invalid Swift Support. Instead I got the e-mail that it'd been processed and is good to go!
In my case, I've had to add a framework from Notification App Extension to the main target (embed & sign in the main target, do not embed in the extension) - even though there was no mention about it in otool -L output.
Funny thing that Iterable official doc says that the framework should be embedded & signed in the extension - which would lead to another upload problem because of nested bundles.

Invalid Swift Support - Files not in right location

I've been trying to upload a new build to iTunes Connect to update an app. I first used xCode 6 but got a email from Apple stating this:
Dear Developer,
We have discovered one or more issues with your recent delivery for "App". To process your delivery, the following issues must be corrected:
Invalid Swift Support - The files libswiftDarwin.dylib, libswiftDispatch.dylib, libswiftCoreGraphics.dylib, libswiftUIKit.dylib, libswiftContacts.dylib, libswiftCore.dylib, libswiftCoreAudio.dylib, libswiftFoundation.dylib, libswiftXCTest.dylib, libswiftCoreImage.dylib, libswiftObjectiveC.dylib aren’t at the expected location /Payload/App.app/Frameworks.
Move the file to the expected location, 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 thought it was a simple fix, so I just updated to the latest GM (Xcode 7.2) & completed the Swift 2 migration, however I received the same email. Could someone explain how to solve this and what those files are? This isn't a "files don't match" problem as seen in other questions.
I stumbled upon this as I've encountered the same problem. It's the first time I've been tasked with handling the release of a Swift app to the App Store.
I found that this answer by TALAA works a treat: https://stackoverflow.com/a/26949219/1567836
There is an "Embedded Content Contains Swift Code" flag in the Build Settings that needs to be set to YES. After setting this, clean the project before building again.
After the clean, you'll have to recreate a build to upload to the App Store. You might find that the new upload will get rejected claiming that a binary already exists for that number. If you update the build number (has to be larger than the previous one) then the new upload will be accepted.
As per the #Thomas You need to enable that flag and after that for the "Invalid Swift Support", I had the issues with Application Loader since Xcode 6.4. So, I started uploading the app from the "Organizer" (Xcode > Window > Organizer > Upload to App Store).
This solves the problem.
Inspect the payload and also the SwiftSupport folder in the .ipa file (by converting it to a .zip) and make sure the libraries in the email match across both those directories. Those need to match apparently.
You should probably not have libswiftXCTest.dylib in the Payload/App.app/Frameworks or SwiftSupport folders in something you're submitting to Apple. If you do, check the build section of the scheme for your App target and make sure you aren't including any test targets in your Archive step.

Client.ipa does not contain a file

I am pulling my hair out on this error since the past few days. When I try to submit my cordova based iOS app I get an error that Symbols tool failed. This is What i have in my logs:
<IDEDistributionIssue: severity(error), error(Error Domain=ITunesSoftwareServiceErrorDomain Code=-19066 \"The path '/var/folders/sp/fhnmn9hd76vbdl523pf37krw0000gn/T/XcodeDistPipeline.8PQ/Packages/Healthpick Client.ipa' does not contain a file.\" UserInfo={NSLocalizedDescription=The path '/var/folders/sp/fhnmn9hd76vbdl523pf37krw0000gn/T/XcodeDistPipeline.8PQ/Packages/Healthpick Client.ipa' does not contain a file., NSLocalizedFailureReason=Unable to validate your application.})>
Here is a screenshot of the said error upon trying to submit to the app store:
Please help.
I had the same error because there were several static libraries (libXXX.a) erroneously included in the app's package. They were showing in the final upload confirmation box (listing Entitlements & Certificates), under the main .App.
My solution was to remove all references to those static libs from the project, adding them manually in the linker flags and library search paths.
There is certainly a better solution to prevent those files from being included. Hopefully someone more knowledgeable about Xcode can chime in.
I had the same symptoms as Benoit, and was able to remove the erroneously showing libXXX.a files from the app's package by doing the following:
Select the main project file
Select the app's target
Select "Build Phases"
Select "Copy Bundle Resources"
Remove any items related to the lib files that had been showing up in the app's target previously. In my case it was files related to Flurry.
Untick:
Include app symbols for your application on Validate and upload to App Store.
And Bitcode.
I seem to get this on XCode 8.3.1 when uploading an archive when my device is connected. When I unplug my device and try again it works.

Xcode 7.0.1 - Invalid Swift Support - The SwiftSupport folder is missing.

I try to publish on AppStore an App that contains Swift 2.0 files, but I receive the following email:
Dear developer,
We have discovered one or more issues with your recent delivery for
"EMO MILANO". 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.
Regards,
The App Store team
I read the following thread oh stackoverflow (Invalid Binary Or Invalid Swift Support Invalid Swift Support / invalid implementation of swift) but I don't find any solution.
I Have a project that has multiple target and uses Cocoa pods.
This is a screenshot of the project navigator:
Ideas?
To be safe, all components of your app should be built with the same version of Xcode and the Swift compiler to ensure that they work together.
I think you need to do a pod clean and install. I reckon one of your swift pods was created on a old version of Xcode, you updated Xcode and then tried to do a submission to the app store.
Read the apple swift blog about binary compatibility and frameworks
You will also want to specify that your embedded content contains swift in the build settings:
EMBEDDED_CONTENT_CONTAINS_SWIFT
Enable this setting to indicate that content embedded in a target's product contains Swift code, so that the standard Swift libraries can be included in the product.
I just resolved an instance of this problem with Apple support.
The problem turned out to be some junk files were being included in the IPA file from my CI/CD system. In particular I had a .gitkeep file which came from a rsync command, and a .DS_Store file which I put there indirectly by poking around with Finder.
The fix was to tighten the rsync command I was using to import some frameworks from Jenkins to exclude .gitkeep, .DS_Store and any other dot-files.
YMMV. The support engineer agreed that it was a confusing error message.

Resources