Invalid bundle structure - The app may contain only one executable file. - ios

This question is similar if not identical but there is no solution. I've looked inside the archive and there's only one executable, so I am at a loss as to how to proceed. Any ideas greatly appreciates.

Invalid Build Structure
The binary file 'YourApp.app/libYourLibrary.a' is not permitted.
Your app may contain only one executable file.
This error occurs when a static library file is mistakenly copied into the app bundle.
You should link the libYourLibrary.a static library via a Link Binary with Libraries build phase.
It should NOT be added to the target's Copy Bundle Resources build phase.

My app was rejected with the same error message. It turned out that I was copying a third party framework (Fiksu) in the 'Copy Bundle Resources' build phase. The framework contained an executable and was already linked to in the 'Link Binary With Libraries' build phase. I deleted the framework from the 'Copy Bundle Resources' build phase. The framework continued to work normally in a release build. I resubmitted the app and it passed validation. Similar solution was posted here:
https://devforums.apple.com/message/1020254#1020254

In hindsight the error is straightforward. An executable file was accidentally added to the project. In my case "Develop!.app/Xcode" meant that Xcode was the executable. Checking the list of files in the project I found a symlink to Xcode. (Maybe I dragged it from the dock somehow and dropped it into the project).
If you are getting this error look at the files in your project -- there is an executable there somewhere.

I had this issue for the first time on an app I'd submitted over several versions with no issues.
I found that somehow that although I'd linked to one of my own libraries, one of the source files from that same library appeared in the list of files in the "Copy Bundle Resources" list. I have no idea how it got there but removing it meant that my app build, archived and was submitted successfully. :-)

If you are getting error in following format:
"Invalid Bundle Structure - The binary file 'Abc.app/AnyFileName.o' is not permitted.
Build Phases > Copy Bundle Resources > check your file AnyFileName.swift will be added too here. (Remove it)
validate it with XCode. Error gone !!

In my case I tried to remove references but nothing worked for me. Then I uninstall particular pod, remove references as mentioned here and then install that particular pod again. It worked for me.
For those who required elaboration check below:
1)
In Podfile comment the particular pod by adding # in the beginning and save it:
On command line run: pod install // It will uninstall that framework
2) Removed references of that framework from:
Link Binary with Libraries // In Build Phase
Copy Bundle Resources // In Build Phase
Embed Frameworks
3) Now install Pod again, Remove # which you added before and save it.
On command line run: pod install // It will install that framework again

Just delete the exec file from your bundle and delete the "Executable file" key from your bundle resources.
After that archive and validate the the the build it will work.

Related

Xcode error when attempting to archive project: Unexpected duplicate tasks

My project runs totally fine with no warnings on both the simulator and a real device, but when I try to archive it, I get this error:
Unexpected duplicate tasks:
1) Target 'SwiftDataTables' (project 'Pods') has copy command from '/myAppPath/Pods/SwiftDataTables/SwiftDataTables/SwiftDataTables.bundle/column-sort-descending.png' to '/Users/Marius/Library/Developer/Xcode/DerivedData/myAppName-bvaclcqghnevllgdezgzmpfvrzrz/Build/Intermediates.noindex/ArchiveIntermediates/myAppName/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/SwiftDataTables.framework/column-sort-descending.png'
2) Target 'SwiftDataTables' (project 'Pods') has copy command from '/myAppPath/Pods/SwiftDataTables/SwiftDataTables/SwiftDataTables.bundle/column-sort-descending.png' to '/Users/Marius/Library/Developer/Xcode/DerivedData/myAppName-bvaclcqghnevllgdezgzmpfvrzrz/Build/Intermediates.noindex/ArchiveIntermediates/myAppName/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/SwiftDataTables.framework/column-sort-descending.png'
I get this error 3 times, one for each of the pictures that are in the SwiftDataTables.
I have already tried cleaning the project, uninstalling and reinstalling the problematic library, and removing all the files from Derived Data. From what I have seen from other similar questions, the solution is often checking that a file isn't listed both in Copy Bundle Resources and Compile Sources in target/Build phases, but I can't find any file that is listed twice.
Thanks in advance.
I could fix it by selecting the three images in Xcode and then remove the Target Membership for SwiftDataTables and adding it again.
Try again - In the file navigator you can try searching (Cmd+F) to see
if the files are somehow in the project twice. Try removing entire
framework and any references from the file navigator and the build
settings (check under Frameworks folder, et al), and then re-add. Check the pods files listed in the build
settings. There is a place where the file paths are added for example
if you tried using Carthage previously where the duplication is
occurring.

Xcode Buildtime Error: 'Unable to load contents of file list: '.../Info.plist' (in target 'xxxx')

Xcode started throwing this error in a project today, and I'm having trouble figuring out what it means and how to troubleshoot it, and it's not coming up in any searches. It happens immediately after trying to build to a device (no scripts compile, etc):
error: Unable to load contents of file list: '/Users/.../Products/Debug-appletvos/myapp.app/Info.plist' (in target 'myapp')
Full log below, (note I've replaced build folder with ... for brevity)
Showing Recent Messages
Prepare build
note: Using new build systemnote: Planning buildnote: Constructing build description
Build system information
error: Unable to load contents of file list: '/Users/.../Products/Debug-appletvos/myapp.app/Info.plist' (in target 'myapp')
Build failed 3/5/19, 3:09 PM 0.2 seconds
Things I've tried so far:
Restarting Xcode
Restarting Computer
'Product' > 'Clean Build Folder'
Manually deleting everything in Build folder
Re-download repository on the same computer (same issue)
Re-download repository on a different computer (same issue)
reverting to a previous commit that was working (same issue)
plutil Info.plist responds with Info.plist: OK
Other items of note:
Project uses Cocoapods
Project utilizes custom C++ code
The only file list in the Info.plist file is a list of 2 custom fonts, but those are showing up ok in the Xcode project browser (not red).
If anyone has encountered this before and has a fix, or has any other suggestions for troubleshooting I would greatly appreciate it, thanks!
In my case, I just fixed below
Open terminal under project folder
pod deintegrate
sudo gem install cocoapods-clean
pod clean
Open the project and delete (if it's still there) the “Pods” folder that should be red
pod setup (This may take some time)
pod install
I fix this in this way:
1、Go to your project's target, -> Build Phases -> Embed Pods Frameworks
2、check the input files and input file lists, Output files, and output file lists.
3、move dir from input file lists to input files, and output file lists to output files
I realised after a while that my colleague has updated cocoapods to the latest version, so what I did was just
sudo gem install cocoapods
And that did the trick! :)
Finally figured this out, posting here so others googling can find it.
It was an issue with a build script that used the 'Input File Lists' option, removing and re-adding the script fixed the issue.
Nav to Target
'Build Phases' tab
'Run Script' phase
make notes of what's there, remove it
re-run to make sure things work
re-add the script (and content under 'Input File Lists')
The problem is that you have added path to Input File Lists instead of Input Files
In my case
pod deintegrate
pod install
was enough
In my case, I just fixed below
1- Go to your project's target, -> Build Phases -> Delete [CP] Copy Pods Resources.
2- pod deintegrate.
3- pod install.
First, you work:
Delete the .xcworkspace file
Delete the Podfile.lock file and Pods/ directory
Keep the Podfile
Rerun pod install
If the error still occurs, you need to add include .xcconfig path for CocoaPods in your .xcconfig files by prepending an #include statement like the following: #include “Pods/[path .xccofig file in Terminal”
Example:
I have two environments Stag and Production
After I run the pod file in Terminal. You’ll see in Terminal that CocoaPods did not set the configuration since we already set custom configurations. CocoaPods provides a link to be included in each
Open .xcworkspace file and select .xcconfig file
Finally, Cmd + Shift + K and run project
Good luck!!!
No need to deintegrate pods and install again. Just run
pod install
It will create necessary files for new configurations.
In my case, Xcode was using a Build Configuration that didn't exist anymore. Going to 'edit scheme...' and selecting a valid scheme fixed it for me.
In my case, the problem wasn't about cocoapods, it was about Fabric
I removed row $(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH) from Build Phases > Fabric > Input File Lists and it fixed the error

iOS Swift No Such File or Directory In Debug-iphoneos

Somebody please save me.
This is the error I'm getting. I've tried cleaning, doing a build clean, pod installs and updates. I have not found a solution.
Shell Script Invocation Error Group
/Users/arthuraraujo/Library/Developer/Xcode/DerivedData/Anti-Social_Club-gizjofrkxroutxezxlbuadlvpwbo/Build/Products/Debug-iphoneos/Anti-Social: No such file or directory
I have similar issues in the past and doing the following work for me. Hope your problem is same as mine:
Close xCode
Go to this folder Group
/Users/arthuraraujo/Library/Developer/Xcode/DerivedData/Anti-Social_Club-gizjofrkxroutxezxlbuadlvpwbo/Build/Products/Debug-iphoneos/
and delete Anti-Social.
Restart xCode, clean & build.
It is hard to really tell you the solution with just the information provided. However, the first thing I would try is deleting the derived data, as CodeBender stated. You should also look at your search paths in your project's building settings to make sure your pods are correct/ connecting your pods files to your project.
Possible duplicate of:
Xcode 8 Shell Script Invocation Error
Here is what I did when I got this:
Used this site to completely remove All Versions of cocoapods:
https://superuser.com/questions/686317/how-to-fully-uninstall-the-cocoapods-from-the-mac-machine
Re-installed current stable version of cocoapods (v1.1.1 for me)
Deleted podlock and pods directory
Deleted old .xcworkspace file (this was key for me).
Did "pod install"
Opened xcode and cleaned project and deleted derivedData.
Go to your build phases and remove libReact.a from the linked libraries.
Then add libReact.a but select this one:
libReact.a from 'React' target in 'Pods' project

Validation Error: The bundle contains disallowed file 'Frameworks'

I'm having the same issue as this guy, this guy, and this guy (nota bene, I'm actually not sure if they're all guys, per se).
They all ended up finding their own solutions, but none of them apply to my issue. I'm using Xcode 6.1 in my iOS 8 app with an included extension. The app and the extension both rely on an included framework. When I try to submit the app to the Store, the validation warning I get is "ERROR ITMS-9000: Invalid bundle. The bundle at 'xxxxx.appex' contains disallowed file 'Frameworks'".
I can't even find a file called Frameworks. The shared framework is supposed to be saved at /Library/Frameworks, which is Apple's recommended save location. The project also uses Cocoapods, which strikes me as the only other possible culprit, since it has references in its configuration files to $FRAMEWORK_PATH (though the build folder doesn't include a file or folder with that name).
OK for future viewers here's the fix:
When you create your own iOS framework (I'm using Xcode 6.1) when you build it the final product contains a 'Frameworks' folder in the framework bundle itself. i.e. MyFramework.framework/Frameworks. This happens even if you don't specify a copy files/embed frameworks build phase.
What you have to do is to go into you framework bundle, find the empty frameworks folder and delete it. This should not affect your app's functionality in any way. Then build your app and check that the embedded framework doesn't have a Frameworks folder as planned.
Your archive should now not contain the offending folder and the error should be gone!
I changed build settings > Packaging > Define modules set to YES in my extension and watch app target. Works fine for me.
In my case the solution was the following :
Try to create the script there 'problematic target' -> Build Phases' then click on + and select New Run Script Phase, the run script should go after all others. Insert there :
cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/"
if [[ -d "Frameworks" ]]; then
rm -fr Frameworks
fi
Then clean the project and try to create an archive once again. These answer was provided in the following issue :
https://github.com/CocoaPods/CocoaPods/issues/4203
I hope this help you.
Continuing to work with this, I noted that my Share Extension had an "Embed Frameworks" Build Phase, with the Destination set to the "Frameworks" directory. I changed it to "Shared Frameworks" and the error has gone away.
However, another error remains: "... contains disallowed nested bundles". I thought this was a sort of umbrella error warning as a result of the original. I'll open another question for that one.

Invalid Directory Name - Your app contains a directory name that is already reserved

Just submitted my app for review and was then emailed this error message:
Invalid Directory Name - Your app contains a directory name that is already reserved: 'Frameworks'. You must rename this directory.
Anyone have experience with this?
edit for a little more info: The only thing I have changed recently which may have caused this is to use Cocoapods. I'm opening and compiling from the xcworkspace. I do notice that a library called 'QuickDialogs' which I use had a Group called 'Frameworks' which I renamed.
Try following steps:
find and open ${YOUR_PROJECT_ROOT}/Pods/Pods-resources.sh
search ${FRAMEWORKS_FOLDER_PATH} and replace with ${UNLOCALIZED_RESOURCES_FOLDER_PATH}
clean your project and delete derived Data(organizer-projects)
achive your application again
I met this problem when I add extra frameworks by cocoapods. App store's response told me that there was a directory named Frameworks, which is reserved.
This folder is created at Copy Pods Resources step in Build Phases,
I have found that using ShareKit with Cocoapods was adding a Frameworks to my binary. That's why I substituted:
pod "ShareKit"
with:
pod "ShareKit/Facebook"
pod "ShareKit/Twitter"
pod "ShareKit/GooglePlus"
as I only use these services.
In order to see the folder created go to your binary and see the contents of the archive generated in the Applications folder.
Hope that helps!

Resources