Cannot generate iOS App archive in xcode

IphoneIosXcodeMacos

Iphone Problem Overview


I have a problem generating a iOS App archive from an application. The application compiles just fine and even works in the simulator. Now I wanted to make som ad hoc testing and cannot generate the iOS App Archive. When I click on the Product -> Archive it generates a generic xcode archive. Can anyone help me. I should mention, that I have already generated an iOS App Archive of this application. It has just stopped to generate iOS Archive for some reason. Thanks a lot.

Iphone Solutions


Solution 1 - Iphone

Check Build Settings:

  1. Skip install is NO for the main project target
  2. Skip install is YES for framework (sub-projects) targets
  3. In Build Phases for sub-projects, Copy Headers needs to be in Project, not Public (does not apply if building static library)
  4. Installation Directory under Deployment is valid (/Applications for example)

Solution 2 - Iphone

This can happen if you've added a framework/library ... you need to edit the Target->Build Settings of that library and set the 'Skip Install' setting to 'Yes'. When you re-archive, XCode should start producing a 'iOS App Archive' again rather than a 'generic xcode archive'.

Solution 3 - Iphone

In addition of Skip Install to Yes and in case you opened another lib/framwork project within your app project you have to move headers (if any) from public to project in the Build Phase / Copy Headers.

build phase of your lib/framwork target

Solution 4 - Iphone

I did the following to make it work for me:

  1. I had a three20 static library, I used cocoapods to include the files within the main project
  2. followed the skip install for all other sub projects/static libraries and switched the copy headers from public to project as stated above
  3. most importantly: in each library your project uses go to build phases -> Copy Files and ensured that destination is changed from Absolute path to products directory. Note: see the hint below to narrow your search to find the library causing this error.

and that was it!

hint: to get an idea of the offending files that's causing your archive to create an archive file rather than an ipa do this:

  1. Select the archive and click the Distribute button.
  2. Select the 'Save Built Products' option.
  3. Hit Next and Save.
  4. Browse the created directory in Finder.
  5. The 'libraries' subdirectory will identify the libraries that you need to set the Skip Install to Yes.
  6. in some cases usr/local/include will identify the culprit header files you need to move from Public to Project or the files that you have to change from absolute path to products directory (or even the files you forgot to set the skip install to yes flag). but that directory (ie usr/local/include) varies depending on your sublibrary directory structure. In many cases.. you will see all the files listed under Copy Files in step 3 above listed here. If you find them here, then you have a definite answer for the cause of your problem.

update to hint: to make life even more simpler.. whatever files appears under step 4 in hint above.. simply search for it in the global search of xcode.. and you should get immediate results for what you want.. for example, this was the content of my folder (following the steps in hint above):

enter image description here

So I could tell it has something to do with the crypto and ssl libraries.. searching for them:

enter image description here

made me realize that i forgot to set skip install to yes.

Solution 5 - Iphone

If you export the archive, open it and see /urs/local/include in Products try this suggestion:

> In each pod, under Packaging, Private Headers Folder Path and Public Headers Folder Path is set to /usr/local/include. If I clear them then I get a valid archive.

enter image description here

Worked for me after upgrading my React Native app to 0.11.0, Xcode 7 and CocoaPods 0.39.0.beta.4.

Solution 6 - Iphone

If you're using CocoaPods as well as WatchKit or a Today Extension, there is an open issue on the CocoaPods repo explaining what your problem might be.

The solution for me was to remove the Copy Pod Resources phase from the WatchKit Extension and Today Extension targets under Build Phases. The project compiled and archived as expected once I did this.

Hope this helps someone, this had me stumped for an entire day!

Solution 7 - Iphone

If any of the above answers don't work, your issue is probably with cocoaPods. The latest update 0.38.1 messed things up for me, but then i downgraded to 0.37.1 and things returned to normal. Using Xcode 6.3.1

Later edit: updating to 0.38.2 will also fix this. More info about what caused this issue here: Cocoapods 0.38.1 failed to create valid Archive

Solution 8 - Iphone

Although I'm using Xcode5 and what sorted it for me was editing the Build Scheme - trying all of the above suggestions that were applicable didn't help in my case.

I had two targets, say, "App" and "App FREE". My problems with the generic archive happened when I was trying to Archive the FREE version, which I added after the 'normal' version of the app. In my case, when I selected its Scheme in the toolbar and chose Edit Scheme ... I saw that Build section had two targets, namely App and App FREE.

I unchecked all columns for App, leaving only App FREE's columns checked, and clicked OK. Next time I chose Product > Archive I got my App FREE instead of a Generic Archive. :)

Solution 9 - Iphone

If you have only single project, maybe this solution would be useful. This problem had occurred, when I duplicated the target. As a result I had two targets parallel built. This was causing the issue. Generic IOS archive was built.

To turn the parallel built off go to

  • Manage schemes,
  • Edit scheme,
  • Build,
  • Remove the other target.

Solution 10 - Iphone

I had this problem after updating to iOS 9 and Xcode 7. Josh H's solution worked for me:

> In each pod, under Packaging, Private Headers Folder Path and Public > Headers Folder Path is set to /usr/local/include. If I clear them then > I get a valid archive.

I also made a post install script for my Podfile to do this automatically!

    post_install do |installer_representation|
        installer_representation.pods_project.targets.each do |target|
            target.build_configurations.each do |config|
                config.build_settings['PUBLIC_HEADERS_FOLDER_PATH'] = [""];
    			config.build_settings['PRIVATE_HEADERS_FOLDER_PATH'] = [""];
            end
        end
    end

Just add it to the bottom of your Podfile and run pod install

Solution 11 - Iphone

I had this issue. In my case, it was caused by keeping a Mac app target as a dependency of the iOS app.

The reason it was setup like this was that the Mac app was a tool used to generate some data for the iOS app, which was then included in the bundle.

I had to remove that dependency and build the tool separately before making a build of the iOS app itself.

Solution 12 - Iphone

In my scenario I was getting the erroneous "Generic Archive" only after I began including Swift code in my predominantly Objective-C project. After lots of troubleshooting and examination of the archive file that Xcode was spitting out, I noticed that the SwiftSupport folder (with the required dylibs for the Swift runtime) was in a different place in my archive than from a vanilla brand-new Swift project app archive.

I found the Installation Directory build setting and noticed it was set to a custom path in my project. I simply deleted it (setting it to its generic value of /Applications) and the next Build -> Archive I did worked as expected and gave me a proper iOS App Archive.

TL; DR: Make sure your Installation Directory build setting is set to its default value of /Applications when including Swift code in your app, especially if you are starting with an older project file that may have some unexpected legacy build settings.

Solution 13 - Iphone

I have multiple project in my workspace, (GTL, Pods and my main project) and this is what worked for me:

Select the Project, there will be 2 types there, there's the Project and there's the Targets.

For projects that is not your main like GTL or PODS:

Projects:

Skip Install = NO
Installation Directory = /Applications
// For pods
Private Headers Folder Path = ""
Public Headers Folder Path = ""

Targets:

Skip Install = YES
Installation Directory = /Applications
// For pods
Private Headers Folder Path = ""
Public Headers Folder Path = ""

For the main project (which is usually named the same as your product name):

Projects:

Skip Install = NO
Installation Directory = /Applications

Targets:

Skip Install = NO
Installation Directory = /Applications

Check the ios deployment target on each projects and targets to make sure they are all the same.

Solution 14 - Iphone

Leaving this here to save others from the same journey.

I found I needed to remove the same Copy Pod Resources build phase from a static library target in my workspace too.

Solution 15 - Iphone

Addition to Alex L 's answer.

Point 3. Change 'Build Settings' -> 'Public Header Folder Path' to 'include/xxx' also works.

Solution 16 - Iphone

If none of the above helped you...after a lot of time.......

I deleted the value in the Info.plist for Bundle Version because I was happy enough with just Bundle Version Short 1.0. Bad. Don't do this.

*Note I actually did this by editing it in the UI on the right not realizing it would put an empty key in the Info.plist file. I think that makes it invalid. My bundle showed up as other items while archiving and had no icon, and I couldn't upload to anywhere.

This boils down to invalid values in the Info.plist. If it's not a valid archive, try unzipping an old archive and dropping in / overwriting your current one and see if it fixes it when rebuilding the archive.

Solution 17 - Iphone

  1. Go to Build Settings and add

yourAppName/Resources/dist.plist to the Code Signing Entitlements

  1. Press cmd + B with iOS Device or a Real Device selected as Build Target

  2. When done -> scroll to "Products" folder and right-click on yourAppName.app

  3. Choose "Show in Finder"

  4. Create a folder with Name Payload (capital "P")

  5. Copy yourAppName into your Payload Folder

  6. Create a zip from your Payload Folder

  7. Rename the zip to yourAppName.ipa

DONE

Solution 18 - Iphone

After trying just about everything:

  • Clean, Archive
  • delete DerivedData, Archive
  • restart Xcode (I was using XCode7), Archive
  • combinations of above...

I then noticed my boot partition was 'low on free disk space'... about 1GB or so. I rebooted, then got about 18GB free.

Then opened Xcode and project, performed Archive... and surprisingly (after an hour of trying to build an Archive) I finally got a non Generic Archive.

No idea if its a free disk issue which fixed it or a reboot of the macOS that fixed it, but it worked for me.

Solution 19 - Iphone

If you have any .xcodeproj files in Project>Targets>Build Phases>target dependencies remove it from there and then build your ipa. It works for me. Cheers

You can get answer here : https://stackoverflow.com/q/20369290/1733922

Solution 20 - Iphone

In my case, i had to move both FMDB and BlocksKit to static libraries. Previously they were built as subprojects. Remember you can use lipo to create universal libraries. When building the final products, the simulator code will be stripped automagically.

Solution 21 - Iphone

Another possible reason for this is to have references in "Target Dependencies" to projects for a different platform. In my particular case, I was working on a project that shares code for OSX and iOS. In one of the iOS targets, I had accidentally added an OSX target as dependency.

Solution 22 - Iphone

In order to be thorough, I am posting my solution.

I experienced the exact same problem trying to build an Archive of an iOS project in Xcode 5.1.1 (5B1008). None of the above suggestions fixed the problem, and most of them were irrelevant (I had not added any Frameworks, and did not have any Public entries in the Copy Headers section of my Build Phases).

In my case, fixing the problem consisted of simply closing my project, deleting any archives that I had previously made, going to Preferences > Accounts, removing my developer account, quitting Xcode, relaunching, re-adding my developer account, starting the Archive process again. This fixed my problem immediately.

Solution 23 - Iphone

One more solution, since all the above didn't work for me...

Changed the User Header Search Paths (I suppose Header Search Paths would work just as elegantly) to "$(BUILT_PRODUCTS_DIR)/BlocksKit".

Background:

In BlockKit, the developers have structured the headers in the main project differently than the structure on deployment. So, you can't reference the headers in the project, and must reference the headers copied into the build directory.

Solution 24 - Iphone

The way this worked for me in (Xcode 5) I had 2 targets and when I edited the scheme, on the left pane of the scheme editor, you will see the [BUILD, RUN, TEST, PROFILE XXX.APP, ANALYZE, ARCHIVE] from the BUILD pane, you will see your project targets listed in a list. At the far right end you will see the ARCHIVE selections, make sure only one target is selected for archiving.

I had 2 of my targets selected in my project, I checked only the target I wanted in the product, and it worked!

Solution 25 - Iphone

I solved this error by opening solely the app project in XCode, ie. not opening a workspace comprising the application and other projects/libraries/frameworks.

Having 2 separate project, a framework or shared library and an iOS application, I had to open 2 different XCode windows, each by directly opening the .xcodeproj file instead of the common .xcworkspace, in order to preperly build each.

As a nice side effect, XCode no longer rebuilds every target of every project after I do a Clean, resulting in shorted build times.

Background: I am creating an open source SDK, and a demo iOS application. I had both opened in a single workspace. Setting Skip install to YES on the SDK targets would prevent anyone from creating an archive, as it would be empty, so this was not an option. Using Project instead of Public headers would lead to an archive missing the header files that should be distributed, so this was not an option either.

Solution 26 - Iphone

For it was because i was working in a workspace. The project did archived but would ne be displayed in the organizer window. I closed the workspace and open the project on its own. The archived has been opened in the organizer ... hope it's help.

Solution 27 - Iphone

In my case, I had a custom script that was copying some temporary files into:

${TARGET_BUILD_DIR}/myTempDir

That meant that, after investigating the archive to inspect its contents, I found right next to the .app file a myTempDir folder. Once I modified the script to save elsewhere things were sorted.

Solution 28 - Iphone

Try setting $(PROJECT_NAME)Headers in Framework projet's Public Headers Folder Path. You have to go to build settings of the Library Target then edit the Public Headers Folder path as $(PROJECT_NAME)Headers.

Solution 29 - Iphone

If using Xcode 7 with cocoapods v.0.38.2. Try removing copy pod resources from your today extension target.

enter image description here

Solution 30 - Iphone

I encountered this problem after adding a OS X command line tool to my iOS app's project, and Skip Install was set to NO by default for the command line tool's target. Since you obviously can't install an OS X binary to an iOS device, archiving defaulted to a generic Xcode archive. Setting Skip Install to YES for this target fixed the problem.

Solution 31 - Iphone

In my case removing an underscore from the target name fixed it.

Not sure if it was the actual underscore or the namechanging itself that did the trick.

Solution 32 - Iphone

I ran into a similar problem, but in a WatchKit app with no pods. Skip Install was correctly set to NO for the iOS app, but was incorrectly set to NO for the WatchKit App.

Changing Skip Install to YES for the WatchKit App (but keeping it NO for the iOS app) fixed the problem, and Xcode correctly generated an iOS App Archive instead of a Generic Xcode Archive.

Solution 33 - Iphone

In my case, none of the other 30+ answers were working. We had the location for Archives (Preferences -> Locations) set to a custom path pointing to our server (Windows Server 2008 if that makes any difference).

Once I set the location back to the default one in the local machine, it produced a regular iOS app Archive. I am not sure why this works, but I hope it helps someone else as well.

Now we store have to move the .xcarchive files to the server manually for storage, but at least get no issues with generic archives.

Solution 34 - Iphone

In my case I had two targets (Target1 and Target2) and first of them could be archived to the "iOS App" but second to the "Other Items" only. So, for me the faster way to solve this problem was replacing my Target2 by a copy of Target1 by the following steps:
1. Rename Target2 to Target2_old
2. Make a copy of the Target1 and rename it to the Target2.
3. Change link to the proper .plist file (from older target) for new Target2 and check "Target Membership" in your classes.
4. Open "Manage Schemes..." and delete scheme for the Target2_old and then add new scheme for the new Target2
5. Select this new scheme and then Product -> Archive

Solution 35 - Iphone

In my case, i had some files in the Copy Files. I just removed them and then everything was just working fine and i achieved the iOS App Archive. Go to Build Phases->Copy Files and delete the files. Hope this will solve your problem. :)

Solution 36 - Iphone

It happened to me on a app where the version was defined with a undefined variable $(APP_PRODUCT_VERSION)

I defined the version, and I could generate a iOS App.

Solution 37 - Iphone

This is for the poor souls like me for whom none of these solutions worked, where even a new single view application, builds without any error but fails to archive.

Go to Archive locations path (Available in Xcode -> Preferences -> Locations -> Archive Path) and delete folders of problematic days!

Damn you Apple!

Solution 38 - Iphone

None of these solutions worked for me. In my case, Targets->myApp->Signing & Capabilities->Signing Certificate was Apple Development instead of iOS Distribution.

Solution 39 - Iphone

This is not the right solution, however, I was able to generate the App archive. I deleted the whole project and made a fresh checkout (I know, really stupid, but after couple hours of xcode refusing to generate the app archive I would have done anything). Once I set the correct code signing it worked. So probably, xcode had some mismatch in the configuration. If anyone knows, what (what possible configuration) could actually prevent xcode from generating an app archive I'll be glad to hear it. Thank you guys anyway.

Solution 40 - Iphone

After creating an Archive, in Xcode's Organizer, Select your Archived project file and select Distribute.

This brings up another window that allows you to Save for Enterprise or Ad-Hoc Deployment.

This is the option you want, upon selecting Next you can choose the Distribution Profile to use, followed by the Location you want the .ipa to be saved to.

Make sure you select the Save for Enterprise or Ad-Hoc Deployment option and not the Export as Xcode Archive one :

enter image description here

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionFilip MajernikView Question on Stackoverflow
Solution 1 - IphoneAlex LView Answer on Stackoverflow
Solution 2 - IphonedelanyView Answer on Stackoverflow
Solution 3 - IphoneebtokyoView Answer on Stackoverflow
Solution 4 - IphoneabboodView Answer on Stackoverflow
Solution 5 - IphonevhsView Answer on Stackoverflow
Solution 6 - Iphonerebello95View Answer on Stackoverflow
Solution 7 - IphoneEhmad ZubairView Answer on Stackoverflow
Solution 8 - IphoneStephen WatsonView Answer on Stackoverflow
Solution 9 - Iphoneroman777View Answer on Stackoverflow
Solution 10 - IphonejulianwyzView Answer on Stackoverflow
Solution 11 - IphoneTomas AndrleView Answer on Stackoverflow
Solution 12 - IphoneRyan DorshorstView Answer on Stackoverflow
Solution 13 - IphoneBryan PView Answer on Stackoverflow
Solution 14 - IphoneMichaelView Answer on Stackoverflow
Solution 15 - IphoneCopperCashView Answer on Stackoverflow
Solution 16 - Iphoneohc192View Answer on Stackoverflow
Solution 17 - IphoneLoVoView Answer on Stackoverflow
Solution 18 - IphonePeter LiView Answer on Stackoverflow
Solution 19 - IphoneKalpesh PanchasaraView Answer on Stackoverflow
Solution 20 - IphoneMaciej SwicView Answer on Stackoverflow
Solution 21 - IphonemiguelSantirsoView Answer on Stackoverflow
Solution 22 - IphoneAde WardView Answer on Stackoverflow
Solution 23 - IphoneMazyodView Answer on Stackoverflow
Solution 24 - IphonedexyjonesView Answer on Stackoverflow
Solution 25 - IphoneofavreView Answer on Stackoverflow
Solution 26 - IphoneGPYView Answer on Stackoverflow
Solution 27 - IphoneEliView Answer on Stackoverflow
Solution 28 - IphoneInco MobView Answer on Stackoverflow
Solution 29 - IphoneCoderPugView Answer on Stackoverflow
Solution 30 - IphoneBrian StewartView Answer on Stackoverflow
Solution 31 - IphoneMathijsView Answer on Stackoverflow
Solution 32 - IphoneStevenHollandView Answer on Stackoverflow
Solution 33 - Iphonealera729View Answer on Stackoverflow
Solution 34 - IphonePavel KataykinView Answer on Stackoverflow
Solution 35 - IphoneS_JView Answer on Stackoverflow
Solution 36 - IphoneFredGView Answer on Stackoverflow
Solution 37 - IphoneDhilipView Answer on Stackoverflow
Solution 38 - IphonezeeawanView Answer on Stackoverflow
Solution 39 - IphoneFilip MajernikView Answer on Stackoverflow
Solution 40 - IphoneskramView Answer on Stackoverflow