{"id":1099,"date":"2021-03-23T13:39:43","date_gmt":"2021-03-23T13:39:43","guid":{"rendered":"https:\/\/www.bytescove.com\/?p=1099"},"modified":"2026-10-03T16:43:26","modified_gmt":"2026-10-03T16:43:26","slug":"distribute-your-code-as-xcframework","status":"publish","type":"post","link":"https:\/\/www.bytescove.com\/it\/distribute-your-code-as-xcframework\/","title":{"rendered":"Distribute your iOS code as an XCFramework"},"content":{"rendered":"<p class=\"wp-block-paragraph\">An XCFramework packages multiple variants of a library in one distributable bundle. Each variant targets a specific platform and architecture combination, such as iOS devices or the iOS Simulator. This is the preferred format when you need to distribute compiled code across Apple platforms.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Prepare the framework target<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Start with a framework target that exposes only the API your clients need. Set <code>BUILD_LIBRARY_FOR_DISTRIBUTION=YES<\/code> when creating archives for binary distribution. For Swift frameworks, this generates module interfaces that help preserve compatibility across supported compiler versions.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Archive each platform variant<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>xcodebuild archive \\\n  -scheme MyFramework \\\n  -destination \"generic\/platform=iOS\" \\\n  -archivePath \"build\/MyFramework-iOS\" \\\n  SKIP_INSTALL=NO \\\n  BUILD_LIBRARY_FOR_DISTRIBUTION=YES\n\nxcodebuild archive \\\n  -scheme MyFramework \\\n  -destination \"generic\/platform=iOS Simulator\" \\\n  -archivePath \"build\/MyFramework-Simulator\" \\\n  SKIP_INSTALL=NO \\\n  BUILD_LIBRARY_FOR_DISTRIBUTION=YES<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Use a generic destination for every platform variant you support. The resulting archives keep binaries, module metadata and debug symbols together. If the framework produces dSYMs or BCSymbolMaps, include the corresponding files when creating the XCFramework.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Create the XCFramework<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>xcodebuild -create-xcframework \\\n  -archive \"build\/MyFramework-iOS.xcarchive\" \\\n  -framework MyFramework.framework \\\n  -archive \"build\/MyFramework-Simulator.xcarchive\" \\\n  -framework MyFramework.framework \\\n  -output \"build\/MyFramework.xcframework\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Using <code>-archive<\/code> keeps the framework and its associated symbols tied to the same archive. You can also use <code>-framework<\/code> with direct paths, but you then need to pass each debug-symbol path yourself.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Verify the result<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Add the XCFramework to a clean sample application.<\/li>\n<li>Build and run on a physical device and the Simulator.<\/li>\n<li>Archive the sample app to catch distribution-only failures.<\/li>\n<li>Check that symbolication works with the distributed dSYMs.<\/li>\n<li>Confirm that no private headers or internal resources are exposed.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If you distribute the binary through Swift Package Manager, host a stable ZIP archive, calculate its checksum with <code>swift package compute-checksum<\/code> and reference the URL and checksum from a binary target. Keep the URL immutable for each released version.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Apple&#8217;s current command options and examples are available in the <a href=\"https:\/\/developer.apple.com\/documentation\/xcode\/creating-a-multi-platform-binary-framework-bundle\">XCFramework documentation<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>How to archive a framework for Apple platforms, combine its variants into an XCFramework and verify the binary before distribution.<\/p>","protected":false},"author":1,"featured_media":1144,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[84],"tags":[32,28,30,31,29,20],"class_list":["post-1099","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mobile","tag-framework","tag-ios","tag-swift","tag-swiftframework","tag-xcframework","tag-xcode"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"How to archive a framework for Apple platforms, combine its variants into an XCFramework and verify the binary before distribution.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"by Francesco Petrungaro\"\/>\n\t<meta name=\"google-site-verification\" content=\"IRXJm1GxwS89wmfpQ-N5Yau8Ns5Ojo4T_anjq1MQVOs\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.bytescove.com\/it\/distribute-your-code-as-xcframework\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Bytes Cove - Software architecture, product development and AI consulting\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Distribute your iOS code as an XCFramework\" \/>\n\t\t<meta property=\"og:description\" content=\"How to archive a framework for Apple platforms, combine its variants into an XCFramework and verify the binary before distribution.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.bytescove.com\/it\/distribute-your-code-as-xcframework\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/www.bytescove.com\/wp-content\/uploads\/2021\/03\/xcframework.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/www.bytescove.com\/wp-content\/uploads\/2021\/03\/xcframework.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2021-03-23T13:39:43+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-10-03T16:43:26+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/bytescove\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@bytescove\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Distribute your iOS code as an XCFramework\" \/>\n\t\t<meta name=\"twitter:description\" content=\"How to archive a framework for Apple platforms, combine its variants into an XCFramework and verify the binary before distribution.\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@bytescove\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/www.bytescove.com\/wp-content\/uploads\/2021\/03\/xcframework.png\" \/>\n\t\t<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t\t<meta name=\"twitter:data1\" content=\"by Francesco Petrungaro\" \/>\n\t\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t\t<meta name=\"twitter:data2\" content=\"2 minuti\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/distribute-your-code-as-xcframework\\\/#blogposting\",\"name\":\"Distribute your iOS code as an XCFramework\",\"headline\":\"Distribute your iOS code as an XCFramework\",\"author\":{\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/author\\\/femp83\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/www.bytescove.com\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/xcframework.png?fit=1600%2C800&ssl=1\",\"width\":1600,\"height\":800,\"caption\":\"xcframework distribution\"},\"datePublished\":\"2021-03-23T13:39:43+00:00\",\"dateModified\":\"2026-10-03T16:43:26+00:00\",\"inLanguage\":\"it-IT\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/distribute-your-code-as-xcframework\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/distribute-your-code-as-xcframework\\\/#webpage\"},\"articleSection\":\"Mobile, Framework, iOS, Swift, SwiftFramework, XCFramework, xcode\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/distribute-your-code-as-xcframework\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/category\\\/mobile\\\/#listItem\",\"name\":\"Mobile\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/category\\\/mobile\\\/#listItem\",\"position\":2,\"name\":\"Mobile\",\"item\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/category\\\/mobile\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/distribute-your-code-as-xcframework\\\/#listItem\",\"name\":\"Distribute your iOS code as an XCFramework\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/distribute-your-code-as-xcframework\\\/#listItem\",\"position\":3,\"name\":\"Distribute your iOS code as an XCFramework\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/category\\\/mobile\\\/#listItem\",\"name\":\"Mobile\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/#organization\",\"name\":\"Bytes Cove\",\"description\":\"Software architecture, product development and AI consulting\",\"url\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/www.bytescove.com\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/VETTORIALIZZAZIONE-BYTES-COVE-WHITE-e1731620117751.png?fit=300%2C230&ssl=1\",\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/distribute-your-code-as-xcframework\\\/#organizationLogo\",\"width\":300,\"height\":230,\"caption\":\"BYTES COVE Logo White Background\"},\"image\":{\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/distribute-your-code-as-xcframework\\\/#organizationLogo\"},\"sameAs\":[\"https:\\\/\\\/facebook.com\\\/bytescove\",\"https:\\\/\\\/x.com\\\/bytescove\",\"https:\\\/\\\/www.instagram.com\\\/bytescove\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/author\\\/femp83\\\/#author\",\"url\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/author\\\/femp83\\\/\",\"name\":\"by Francesco Petrungaro\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/distribute-your-code-as-xcframework\\\/#webpage\",\"url\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/distribute-your-code-as-xcframework\\\/\",\"name\":\"Distribute your iOS code as an XCFramework\",\"description\":\"How to archive a framework for Apple platforms, combine its variants into an XCFramework and verify the binary before distribution.\",\"inLanguage\":\"it-IT\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/distribute-your-code-as-xcframework\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/author\\\/femp83\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/author\\\/femp83\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/www.bytescove.com\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/xcframework.png?fit=1600%2C800&ssl=1\",\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/distribute-your-code-as-xcframework\\\/#mainImage\",\"width\":1600,\"height\":800,\"caption\":\"xcframework distribution\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/distribute-your-code-as-xcframework\\\/#mainImage\"},\"datePublished\":\"2021-03-23T13:39:43+00:00\",\"dateModified\":\"2026-10-03T16:43:26+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/#website\",\"url\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/\",\"name\":\"Bytes Cove\",\"alternateName\":\"BytesCove\",\"description\":\"Software architecture, product development and AI consulting\",\"inLanguage\":\"it-IT\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.bytescove.com\\\/it\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Distribute your iOS code as an XCFramework","description":"How to archive a framework for Apple platforms, combine its variants into an XCFramework and verify the binary before distribution.","canonical_url":"https:\/\/www.bytescove.com\/it\/distribute-your-code-as-xcframework\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"IRXJm1GxwS89wmfpQ-N5Yau8Ns5Ojo4T_anjq1MQVOs","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/www.bytescove.com\/it\/distribute-your-code-as-xcframework\/#blogposting","name":"Distribute your iOS code as an XCFramework","headline":"Distribute your iOS code as an XCFramework","author":{"@id":"https:\/\/www.bytescove.com\/it\/author\/femp83\/#author"},"publisher":{"@id":"https:\/\/www.bytescove.com\/it\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2021\/03\/xcframework.png?fit=1600%2C800&ssl=1","width":1600,"height":800,"caption":"xcframework distribution"},"datePublished":"2021-03-23T13:39:43+00:00","dateModified":"2026-10-03T16:43:26+00:00","inLanguage":"it-IT","mainEntityOfPage":{"@id":"https:\/\/www.bytescove.com\/it\/distribute-your-code-as-xcframework\/#webpage"},"isPartOf":{"@id":"https:\/\/www.bytescove.com\/it\/distribute-your-code-as-xcframework\/#webpage"},"articleSection":"Mobile, Framework, iOS, Swift, SwiftFramework, XCFramework, xcode"},{"@type":"BreadcrumbList","@id":"https:\/\/www.bytescove.com\/it\/distribute-your-code-as-xcframework\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.bytescove.com\/it\/#listItem","position":1,"name":"Home","item":"https:\/\/www.bytescove.com\/it\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.bytescove.com\/it\/category\/mobile\/#listItem","name":"Mobile"}},{"@type":"ListItem","@id":"https:\/\/www.bytescove.com\/it\/category\/mobile\/#listItem","position":2,"name":"Mobile","item":"https:\/\/www.bytescove.com\/it\/category\/mobile\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.bytescove.com\/it\/distribute-your-code-as-xcframework\/#listItem","name":"Distribute your iOS code as an XCFramework"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.bytescove.com\/it\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.bytescove.com\/it\/distribute-your-code-as-xcframework\/#listItem","position":3,"name":"Distribute your iOS code as an XCFramework","previousItem":{"@type":"ListItem","@id":"https:\/\/www.bytescove.com\/it\/category\/mobile\/#listItem","name":"Mobile"}}]},{"@type":"Organization","@id":"https:\/\/www.bytescove.com\/it\/#organization","name":"Bytes Cove","description":"Software architecture, product development and AI consulting","url":"https:\/\/www.bytescove.com\/it\/","logo":{"@type":"ImageObject","url":"https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2024\/08\/VETTORIALIZZAZIONE-BYTES-COVE-WHITE-e1731620117751.png?fit=300%2C230&ssl=1","@id":"https:\/\/www.bytescove.com\/it\/distribute-your-code-as-xcframework\/#organizationLogo","width":300,"height":230,"caption":"BYTES COVE Logo White Background"},"image":{"@id":"https:\/\/www.bytescove.com\/it\/distribute-your-code-as-xcframework\/#organizationLogo"},"sameAs":["https:\/\/facebook.com\/bytescove","https:\/\/x.com\/bytescove","https:\/\/www.instagram.com\/bytescove\/"]},{"@type":"Person","@id":"https:\/\/www.bytescove.com\/it\/author\/femp83\/#author","url":"https:\/\/www.bytescove.com\/it\/author\/femp83\/","name":"by Francesco Petrungaro"},{"@type":"WebPage","@id":"https:\/\/www.bytescove.com\/it\/distribute-your-code-as-xcframework\/#webpage","url":"https:\/\/www.bytescove.com\/it\/distribute-your-code-as-xcframework\/","name":"Distribute your iOS code as an XCFramework","description":"How to archive a framework for Apple platforms, combine its variants into an XCFramework and verify the binary before distribution.","inLanguage":"it-IT","isPartOf":{"@id":"https:\/\/www.bytescove.com\/it\/#website"},"breadcrumb":{"@id":"https:\/\/www.bytescove.com\/it\/distribute-your-code-as-xcframework\/#breadcrumblist"},"author":{"@id":"https:\/\/www.bytescove.com\/it\/author\/femp83\/#author"},"creator":{"@id":"https:\/\/www.bytescove.com\/it\/author\/femp83\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2021\/03\/xcframework.png?fit=1600%2C800&ssl=1","@id":"https:\/\/www.bytescove.com\/it\/distribute-your-code-as-xcframework\/#mainImage","width":1600,"height":800,"caption":"xcframework distribution"},"primaryImageOfPage":{"@id":"https:\/\/www.bytescove.com\/it\/distribute-your-code-as-xcframework\/#mainImage"},"datePublished":"2021-03-23T13:39:43+00:00","dateModified":"2026-10-03T16:43:26+00:00"},{"@type":"WebSite","@id":"https:\/\/www.bytescove.com\/it\/#website","url":"https:\/\/www.bytescove.com\/it\/","name":"Bytes Cove","alternateName":"BytesCove","description":"Software architecture, product development and AI consulting","inLanguage":"it-IT","publisher":{"@id":"https:\/\/www.bytescove.com\/it\/#organization"}}]},"og:locale":"it_IT","og:site_name":"Bytes Cove - Software architecture, product development and AI consulting","og:type":"article","og:title":"Distribute your iOS code as an XCFramework","og:description":"How to archive a framework for Apple platforms, combine its variants into an XCFramework and verify the binary before distribution.","og:url":"https:\/\/www.bytescove.com\/it\/distribute-your-code-as-xcframework\/","og:image":"https:\/\/www.bytescove.com\/wp-content\/uploads\/2021\/03\/xcframework.png","og:image:secure_url":"https:\/\/www.bytescove.com\/wp-content\/uploads\/2021\/03\/xcframework.png","og:image:width":"1600","og:image:height":"800","article:published_time":"2021-03-23T13:39:43+00:00","article:modified_time":"2026-10-03T16:43:26+00:00","article:publisher":"https:\/\/facebook.com\/bytescove","twitter:card":"summary_large_image","twitter:site":"@bytescove","twitter:title":"Distribute your iOS code as an XCFramework","twitter:description":"How to archive a framework for Apple platforms, combine its variants into an XCFramework and verify the binary before distribution.","twitter:creator":"@bytescove","twitter:image":"https:\/\/www.bytescove.com\/wp-content\/uploads\/2021\/03\/xcframework.png","twitter:label1":"Scritto da","twitter:data1":"by Francesco Petrungaro","twitter:label2":"Tempo di lettura stimato","twitter:data2":"2 minuti"},"aioseo_meta_data":{"post_id":"1099","title":"#post_title","description":null,"keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":"#post_title","og_description":null,"og_object_type":"default","og_image_type":"featured","og_image_url":"https:\/\/www.bytescove.com\/wp-content\/uploads\/2021\/03\/xcframework.png","og_image_width":"1600","og_image_height":"800","og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"featured","twitter_image_url":"https:\/\/www.bytescove.com\/wp-content\/uploads\/2021\/03\/xcframework.png","twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2024-12-09 21:28:13","updated":"2026-10-03 16:59:43","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.bytescove.com\/it\/\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.bytescove.com\/it\/category\/mobile\/\" title=\"Mobile\">Mobile<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tDistribute your iOS code as an XCFramework\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.bytescove.com\/it\/"},{"label":"Mobile","link":"https:\/\/www.bytescove.com\/it\/category\/mobile\/"},{"label":"Distribute your iOS code as an XCFramework","link":"https:\/\/www.bytescove.com\/it\/distribute-your-code-as-xcframework\/"}],"jetpack_publicize_connections":[],"jetpack_likes_enabled":false,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pgaWEn-hJ","jetpack-related-posts":[{"id":1283,"url":"https:\/\/www.bytescove.com\/it\/errors-and-issues-building-imessage-stickers-pack\/","url_meta":{"origin":1099,"position":0},"title":"Fixing iMessage Sticker Pack issues in Xcode 13","author":"by Francesco Petrungaro","date":"Dicembre 7, 2021","format":false,"excerpt":"An archived guide to diagnosing iMessage Sticker Pack problems in Xcode 13, including loading, icon and submission issues.","rel":"","context":"In &quot;Mobile&quot;","block_context":{"text":"Mobile","link":"https:\/\/www.bytescove.com\/it\/category\/mobile\/"},"img":{"alt_text":"iOS Stickers Pack Error in Xcode","src":"https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2021\/12\/Stickers-Pack.png?fit=615%2C263&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2021\/12\/Stickers-Pack.png?fit=615%2C263&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2021\/12\/Stickers-Pack.png?fit=615%2C263&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":1648,"url":"https:\/\/www.bytescove.com\/it\/efficiently-managing-dependencies-with-swift-package-manager\/","url_meta":{"origin":1099,"position":1},"title":"Swift Package Manager: A Developer&#8217;s Guide","author":"by Francesco Petrungaro","date":"Giugno 8, 2024","format":false,"excerpt":"A practical guide to creating Swift packages, declaring dependencies, choosing version requirements and integrating packages in Xcode.","rel":"","context":"In &quot;Mobile&quot;","block_context":{"text":"Mobile","link":"https:\/\/www.bytescove.com\/it\/category\/mobile\/"},"img":{"alt_text":"Swift Package Manager Logo","src":"https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2024\/06\/swift-package-manager.png?fit=840%2C340&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2024\/06\/swift-package-manager.png?fit=840%2C340&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2024\/06\/swift-package-manager.png?fit=840%2C340&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2024\/06\/swift-package-manager.png?fit=840%2C340&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":1845,"url":"https:\/\/www.bytescove.com\/it\/build-user-trust-with-apple-app-privacy-labels-best-practices\/","url_meta":{"origin":1099,"position":2},"title":"Build user trust with Apple App Privacy labels: Best practices","author":"by Francesco Petrungaro","date":"Gennaio 13, 2025","format":false,"excerpt":"A practical guide to auditing data collection, completing App Store privacy details and checking privacy manifests before release.","rel":"","context":"In &quot;Mobile&quot;","block_context":{"text":"Mobile","link":"https:\/\/www.bytescove.com\/it\/category\/mobile\/"},"img":{"alt_text":"Apple Privacy Labels Categories","src":"https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2024\/12\/PrivacyLabel.jpg?fit=767%2C470&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2024\/12\/PrivacyLabel.jpg?fit=767%2C470&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2024\/12\/PrivacyLabel.jpg?fit=767%2C470&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2024\/12\/PrivacyLabel.jpg?fit=767%2C470&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":1197,"url":"https:\/\/www.bytescove.com\/it\/v-vo-vs-po-p-in-lldb\/","url_meta":{"origin":1099,"position":3},"title":"Optimize debugging in Xcode: &#8216;v\/vo&#8217; vs &#8216;po\/p&#8217; in LLDB","author":"by Francesco Petrungaro","date":"Maggio 16, 2021","format":false,"excerpt":"When to use LLDB\u2019s frame-variable commands and when expression evaluation with p or po is the better choice in Xcode.","rel":"","context":"In &quot;Mobile&quot;","block_context":{"text":"Mobile","link":"https:\/\/www.bytescove.com\/it\/category\/mobile\/"},"img":{"alt_text":"LLDB Debug optimisation","src":"https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2021\/05\/img_2620.jpg?fit=748%2C328&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2021\/05\/img_2620.jpg?fit=748%2C328&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2021\/05\/img_2620.jpg?fit=748%2C328&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2021\/05\/img_2620.jpg?fit=748%2C328&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":1967,"url":"https:\/\/www.bytescove.com\/it\/how-to-embrace-ai-first-architecture\/","url_meta":{"origin":1099,"position":4},"title":"Come progettare un\u2019architettura che integri l\u2019AI fin dall\u2019inizio","author":"by Francesco Petrungaro","date":"Aprile 25, 2025","format":false,"excerpt":"AI-native product architecture starts with data, evaluation, privacy, failure handling and the role a model plays in the core product.","rel":"","context":"In &quot;AI&quot;","block_context":{"text":"AI","link":"https:\/\/www.bytescove.com\/it\/category\/ai\/"},"img":{"alt_text":"How to embrace AI-First Architecture","src":"https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2025\/04\/AI-First-Architecture.jpg?fit=1024%2C683&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2025\/04\/AI-First-Architecture.jpg?fit=1024%2C683&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2025\/04\/AI-First-Architecture.jpg?fit=1024%2C683&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2025\/04\/AI-First-Architecture.jpg?fit=1024%2C683&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":1194,"url":"https:\/\/www.bytescove.com\/it\/how-to-delete-all-local-branches-that-have-already-been-merged\/","url_meta":{"origin":1099,"position":5},"title":"Clean up your git: remove merged branches","author":"by Francesco Petrungaro","date":"Aprile 23, 2021","format":false,"excerpt":"A safer way to preview and remove local Git branches that have already been merged, while protecting your long-lived branches.","rel":"","context":"In &quot;Tools&quot;","block_context":{"text":"Tools","link":"https:\/\/www.bytescove.com\/it\/category\/tools\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2021\/04\/IMG_0118.png?fit=800%2C458&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2021\/04\/IMG_0118.png?fit=800%2C458&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2021\/04\/IMG_0118.png?fit=800%2C458&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2021\/04\/IMG_0118.png?fit=800%2C458&ssl=1&resize=700%2C400 2x"},"classes":[]}],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.bytescove.com\/wp-content\/uploads\/2021\/03\/xcframework.png?fit=1600%2C800&ssl=1","_links":{"self":[{"href":"https:\/\/www.bytescove.com\/it\/wp-json\/wp\/v2\/posts\/1099","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bytescove.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bytescove.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bytescove.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bytescove.com\/it\/wp-json\/wp\/v2\/comments?post=1099"}],"version-history":[{"count":75,"href":"https:\/\/www.bytescove.com\/it\/wp-json\/wp\/v2\/posts\/1099\/revisions"}],"predecessor-version":[{"id":2186,"href":"https:\/\/www.bytescove.com\/it\/wp-json\/wp\/v2\/posts\/1099\/revisions\/2186"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bytescove.com\/it\/wp-json\/wp\/v2\/media\/1144"}],"wp:attachment":[{"href":"https:\/\/www.bytescove.com\/it\/wp-json\/wp\/v2\/media?parent=1099"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bytescove.com\/it\/wp-json\/wp\/v2\/categories?post=1099"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bytescove.com\/it\/wp-json\/wp\/v2\/tags?post=1099"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}