The 2004 icon, from ipodderx-rs's apple-touch-icon.png, which at 180px is the largest square copy that survives anywhere -- so the sizes above it are upscaled and soft, and a real 1024px original would be worth having if one turns up. Every entry in the icon set gets its own file even where two are the same pixels, because the asset compiler collapses entries that share a filename and the first attempt produced an icns with four of the ten sizes. tools/install-mac.sh builds Release for Catalyst and replaces the copy in /Applications. It quits the running app first, or the replacement is the one still in memory, and it sets DEVELOPER_DIR rather than relying on xcode-select, which on this machine still points at the command line tools. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
89 lines
3.1 KiB
YAML
89 lines
3.1 KiB
YAML
# XcodeGen makes the .xcodeproj from this, so the project is something you can read in a diff
|
|
# rather than a pbxproj nobody can review.
|
|
#
|
|
# brew install xcodegen && xcodegen generate && open iPodderX.xcodeproj
|
|
name: iPodderX
|
|
options:
|
|
bundleIdPrefix: net.sdf1
|
|
deploymentTarget:
|
|
iOS: "16.0"
|
|
macOS: "13.0"
|
|
createIntermediateGroups: true
|
|
settings:
|
|
base:
|
|
SWIFT_VERSION: "5.9"
|
|
TARGETED_DEVICE_FAMILY: "1,2"
|
|
CODE_SIGN_STYLE: Automatic
|
|
targets:
|
|
iPodderX:
|
|
type: application
|
|
platform: iOS
|
|
# The same UIKit app on the Mac. Everything that matters -- Playback, Library, Bridge,
|
|
# CookieBridge -- never touches a view, so only the shell is platform-specific.
|
|
supportsMacCatalyst: true
|
|
sources:
|
|
- Sources
|
|
- Resources/Assets.xcassets
|
|
info:
|
|
path: Resources/Info.plist
|
|
properties:
|
|
CFBundleDisplayName: iPodderX
|
|
CFBundleShortVersionString: "0.1.0"
|
|
CFBundleVersion: "1"
|
|
# Playing on with the screen locked. This is a plist key, not a signed entitlement, so it
|
|
# works on a free personal team -- unlike CarPlay, which Apple has to grant.
|
|
UIBackgroundModes: [audio]
|
|
UILaunchScreen: {}
|
|
# iOS 27 will not run an app that has not adopted the scene lifecycle. A CarPlay app is a
|
|
# second scene beside this one, so its role goes here too when the entitlement exists.
|
|
UIApplicationSceneManifest:
|
|
UIApplicationSupportsMultipleScenes: false
|
|
UISceneConfigurations:
|
|
UIWindowSceneSessionRoleApplication:
|
|
- UISceneConfigurationName: Default Configuration
|
|
UISceneDelegateClassName: $(PRODUCT_MODULE_NAME).SceneDelegate
|
|
UIRequiresFullScreen: false
|
|
UISupportedInterfaceOrientations:
|
|
- UIInterfaceOrientationPortrait
|
|
- UIInterfaceOrientationLandscapeLeft
|
|
- UIInterfaceOrientationLandscapeRight
|
|
UIStatusBarStyle: UIStatusBarStyleLightContent
|
|
# Only needed to point the app at the LAN address, which is plain HTTP. The tunnel is
|
|
# HTTPS and needs none of this.
|
|
NSAppTransportSecurity:
|
|
NSAllowsLocalNetworking: true
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: net.sdf1.ipodderx
|
|
MARKETING_VERSION: "0.1.0"
|
|
# Set as build settings rather than xcodegen's supportsMacCatalyst:, which this version
|
|
# accepts and then writes nothing for -- the generated project had no SUPPORTS_MACCATALYST
|
|
# at all and the Mac destination simply did not exist.
|
|
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
|
|
SUPPORTS_MACCATALYST: "YES"
|
|
DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER: "NO"
|
|
|
|
iPodderXUITests:
|
|
type: bundle.ui-testing
|
|
platform: iOS
|
|
sources:
|
|
- UITests
|
|
dependencies:
|
|
- target: iPodderX
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: net.sdf1.ipodderx.uitests
|
|
|
|
schemes:
|
|
iPodderX:
|
|
build:
|
|
targets:
|
|
iPodderX: all
|
|
iPodderXUITests: [test]
|
|
run:
|
|
config: Debug
|
|
test:
|
|
config: Debug
|
|
targets:
|
|
- iPodderXUITests
|