<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Xcode on hobbyworker취미생활자</title>
    <link>https://hobbyworker.me/en/tags/xcode/</link>
    <description>Recent content in Xcode on hobbyworker취미생활자</description>
    <generator>Hugo</generator>
    <language>en</language>
    <copyright>2026 hobbyworker</copyright>
    <lastBuildDate>Tue, 19 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://hobbyworker.me/en/tags/xcode/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Shipping a macOS App to the Mac App Store (3): Upload Settings and App Store Connect Registration</title>
      <link>https://hobbyworker.me/en/dev/2026-05-19-distribute-macos-app-mas-3-export-and-app-store-connect/</link>
      <pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/en/dev/2026-05-19-distribute-macos-app-mas-3-export-and-app-store-connect/</guid>
      <description>Once you&amp;#39;ve finished the MAS build target and the configuration and code branching, it&amp;#39;s time to set up the path for getting that build onto the App Store. Using the example app FocusTimer, this post wraps up the series by covering how to write an ExportOptions-MAS.plist for upload, register an app record in App Store Connect, and verify the build so the two channels stay unbroken.</description>
    </item>
    <item>
      <title>Shipping a macOS App to the Mac App Store (2): Splitting Configuration and Code Between Channels</title>
      <link>https://hobbyworker.me/en/dev/2026-05-18-distribute-macos-app-mas-2-build-config-and-code/</link>
      <pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/en/dev/2026-05-18-distribute-macos-app-mas-2-build-config-and-code/</guid>
      <description>Once you&amp;#39;ve created a build target for MAS, you need to split the configuration files and code so that target actually follows the App Store rules. Using the example app FocusTimer, this post walks through creating MAS-only entitlements and Info.plist files, aligning the build settings, and branching the automatic update code with #if canImport(Sparkle).</description>
    </item>
    <item>
      <title>Shipping a macOS App to the Mac App Store (1): Creating a Separate Build Target</title>
      <link>https://hobbyworker.me/en/dev/2026-05-17-distribute-macos-app-mas-1-target-setup/</link>
      <pubDate>Sun, 17 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/en/dev/2026-05-17-distribute-macos-app-mas-1-target-setup/</guid>
      <description>Shipping a macOS app to the Mac App Store requires a build target separate from the one used for direct distribution, because App Store review forbids self-contained automatic updaters like Sparkle. Using the example app FocusTimer, this post walks through registering a MAS-only Bundle ID, duplicating the build target in Xcode, and handling the cleanup burden that duplication leaves behind.</description>
    </item>
    <item>
      <title>Distributing a macOS App Yourself (3): Hosting the Update Feed and Build Settings</title>
      <link>https://hobbyworker.me/en/dev/2026-05-16-distribute-macos-app-3-update-hosting-and-build/</link>
      <pubDate>Sat, 16 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/en/dev/2026-05-16-distribute-macos-app-3-update-hosting-and-build/</guid>
      <description>The automatic-update feed for a directly distributed macOS app must be hosted at a public location accessible without authentication. Using the example app FocusTimer, this article hosts the update repository with GitHub Pages, connects it to a custom domain you control, and finishes the ExportOptions.plist and app-side configuration to complete the one-time setup for direct distribution.</description>
    </item>
    <item>
      <title>Distributing a macOS App Yourself (2): Creating the Sparkle Auto-Update Signing Key</title>
      <link>https://hobbyworker.me/en/dev/2026-05-15-distribute-macos-app-2-sparkle-signing-key/</link>
      <pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/en/dev/2026-05-15-distribute-macos-app-2-sparkle-signing-key/</guid>
      <description>Implementing automatic updates with the Sparkle framework is the de facto standard for directly distributed macOS apps. Using the example app FocusTimer, this article explains step by step how to generate the EdDSA signing key that Sparkle uses to verify update files, embed the public key in the app, and safely back up and restore the private key.</description>
    </item>
    <item>
      <title>Distributing a macOS App Yourself (1): Developer ID Certificate and Notarization Setup</title>
      <link>https://hobbyworker.me/en/dev/2026-05-14-distribute-macos-app-1-developer-id-certificate/</link>
      <pubDate>Thu, 14 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/en/dev/2026-05-14-distribute-macos-app-1-developer-id-certificate/</guid>
      <description>To distribute a macOS app directly without going through the Mac App Store, you first need a Developer ID certificate and a notarization setup. Using the example app FocusTimer, this article walks through the one-time setup you only need to do once: installing command-line tools, issuing a Developer ID Application certificate, and registering an app-specific password and a notarytool profile for notarization.</description>
    </item>
  </channel>
</rss>
