Fix iOS Bundle Identifier Install Failure

2026-05-24 Issue dreamio-tnv Dreamio iOS bundle metadata

Summary

Fixed the Xcode device install failure by adding the missing app bundle metadata to Dreamio/Info.plist. The key fix is CFBundleIdentifier, which now resolves from the target's existing PRODUCT_BUNDLE_IDENTIFIER build setting.

Changes Made

Context

The install error said Xcode could not get the identifier for Dreamio.app and suggested ensuring CFBundleIdentifier exists. The project already defined PRODUCT_BUNDLE_IDENTIFIER = com.kell.dreamio, but GENERATE_INFOPLIST_FILE is set to NO, so Xcode uses the checked-in plist as the source of truth.

Because the plist did not include CFBundleIdentifier, the processed app bundle was invalid for device installation.

Important Implementation Details

Bundle ID$(PRODUCT_BUNDLE_IDENTIFIER) resolves to com.kell.dreamio.
Version$(MARKETING_VERSION) resolves to 0.1.0.
Build$(CURRENT_PROJECT_VERSION) resolves to 1.

This keeps Debug and Release behavior aligned with the target build settings. If the app identifier changes later, it only needs to change in the Xcode project build settings.

Relevant Diff Snippets

The diff below follows the diffs.com guidance for patch-style diff rendering with @pierre/diffs. A plain preformatted fallback is included so the document remains readable offline.

diff --git a/Dreamio/Info.plist b/Dreamio/Info.plist
index 9451a6a..a037c11 100644
--- a/Dreamio/Info.plist
+++ b/Dreamio/Info.plist
@@ -2,6 +2,22 @@
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
+	<key>CFBundleDisplayName</key>
+	<string>$(PRODUCT_NAME)</string>
+	<key>CFBundleExecutable</key>
+	<string>$(EXECUTABLE_NAME)</string>
+	<key>CFBundleIdentifier</key>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>$(PRODUCT_NAME)</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>$(MARKETING_VERSION)</string>
+	<key>CFBundleVersion</key>
+	<string>$(CURRENT_PROJECT_VERSION)</string>
 	<key>UIApplicationSceneManifest</key>
 	<dict>
 		<key>UIApplicationSupportsMultipleScenes</key>

Expected Impact for End-Users

Developers should be able to install and run Dreamio from Xcode without the app bundle being rejected as invalid for a missing identifier. The app's visible behavior is unchanged.

Validation

The first direct xcodebuild attempt failed because the active developer directory is /Library/Developer/CommandLineTools. Validation used DEVELOPER_DIR to point only this command at /Applications/Xcode.app, leaving the global machine setting unchanged.

Issues, Limitations, and Mitigations

Follow-up Work