TN3110: Resolving generic Xcode archive issue
Identify common configurations that cause a generic Xcode archive.
Overview
The Archives organizer reports your archive as an app archive if it contains a single top-level app and a generic Xcode archive, otherwise. [Image] You can validate and distribute an app archive. A generic archive, which may contain unexpected items such as header files, static libraries, or frameworks, can’t be validated nor distributed.
Ensure the Skip Install build setting is properly configured
The Skip Install (SKIP_INSTALL) build setting determines whether to install built products within the archive.
When enabled for an app, Xcode doesn’t install the app within the archive. The produced archive doesn’t contain the single top-level app as expected. To generate an app archive, confirm that Skip Install is disabled for your app. [Image]
When disabled for an app’s dependencies such as frameworks, Xcode adds these dependencies to the app’s archive. The produced archive contains multiple folders rather than the expected single top-level app. To generate an app archive, confirm that Skip Install is enabled for all your app’s dependencies. [Image]
Use a Copy Files build phase
If your app links against static libraries, confirm that they all use a Copy files build phase to export their header files. The produced app archive contains header files when static libraries use a Copy files build phase to export these files.
Ensure the Installation Directory build setting is properly configured
The Installation Directory (INSTALL_PATH) build setting specifies the directory where to install built products. It takes default values according to the product being built. To generate an app archive, confirm that Installation Directory is set to the default value such as $(LOCAL_APPS_DIR) for apps.
Revision History
2022-02-08 First published.
See Also
Latest
TN3205: Low-latency communication with RDMA over ThunderboltTN3206: Updating Apple Pay certificatesTN3179: Understanding local network privacyTN3190: USB audio device design considerationsTN3194: Handling account deletions and revoking tokens for Sign in with AppleTN3193: Managing the on-device foundation model’s context windowTN3115: Bluetooth State Restoration app relaunch rulesTN3192: Migrating your iPad app from the deprecated UIRequiresFullScreen keyTN3151: Choosing the right networking APITN3111: iOS Wi-Fi API overviewTN3191: IMAP extensions supported by Mail for iOS, iPadOS, and visionOSTN3134: Network Extension provider deploymentTN3189: Managing Mail background traffic loadTN3187: Migrating to the UIKit scene-based life cycleTN3188: Troubleshooting In-App Purchases availability in the App Store