Skip to content

Add Xcode archive project#4

Merged
offyotto merged 2 commits into
mainfrom
codex/add-xcode-archive-project
Jun 6, 2026
Merged

Add Xcode archive project#4
offyotto merged 2 commits into
mainfrom
codex/add-xcode-archive-project

Conversation

@offyotto

@offyotto offyotto commented Jun 6, 2026

Copy link
Copy Markdown
Owner

What changed

  • Added a real Locale.xcodeproj with app, DNS proxy system extension, and shared Swift library targets.
  • Set automatic signing for the app and DNS proxy targets with team 6VDP675K4L.
  • Added checked-in Info.plists for the app and system extension.
  • Forced the embedded DNS proxy wrapper name to dev.offyotto.Locale.LocaleDNSProxy.systemextension, matching its CFBundleIdentifier as App Store Connect requires.
  • Declared ITSAppUsesNonExemptEncryption = false in the app and DNS proxy Info.plists so App Store Connect can skip repeated encryption documentation prompts.
  • Documented that App Store archives must use Locale.xcodeproj / LocaleApp, not the Swift package workspace.

Why

Archiving the SwiftPM package workspace produces a Generic Xcode Archive. The new app target archives to Products/Applications/Locale.app, embeds LocaleDNSProxy.systemextension, and preserves the team/signing metadata Xcode Organizer needs.

App Store Connect also rejects system extensions whose bundle folder name does not equal CFBundleIdentifier + .systemextension. The archive now embeds the extension at:

Locale.app/Contents/Library/SystemExtensions/dev.offyotto.Locale.LocaleDNSProxy.systemextension

while keeping the executable/module as LocaleDNSProxy.

Locale does not implement proprietary or standard encryption algorithms, so the upload bundle now declares non-exempt encryption usage as false.

Validation

  • swift test
  • plutil -lint Resources/Locale-Info.plist Resources/LocaleDNSProxy-Info.plist
  • xcodebuild -project Locale.xcodeproj -scheme LocaleApp -configuration Debug -destination 'platform=macOS' CODE_SIGNING_ALLOWED=NO build
  • xcodebuild -project Locale.xcodeproj -scheme LocaleApp -configuration Debug -destination 'platform=macOS' -allowProvisioningUpdates build
  • xcodebuild -project Locale.xcodeproj -scheme LocaleApp -configuration Release -destination 'generic/platform=macOS' -archivePath /tmp/LocaleEncryptionArchive.xcarchive -allowProvisioningUpdates archive
  • Verified archive metadata: ApplicationPath = Applications/Locale.app, Team = 6VDP675K4L
  • Verified embedded system extension path equals dev.offyotto.Locale.LocaleDNSProxy.systemextension
  • Verified system extension CFBundleIdentifier = dev.offyotto.Locale.LocaleDNSProxy
  • Verified archived app and DNS proxy both contain ITSAppUsesNonExemptEncryption = false
  • Verified app and DNS proxy signatures/entitlements with codesign -dvvv --entitlements :-

@offyotto offyotto marked this pull request as ready for review June 6, 2026 17:32
@offyotto offyotto merged commit a478170 into main Jun 6, 2026
1 check passed
Repository owner deleted a comment from chatgpt-codex-connector Bot Jun 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant