Capacitor 8 upgrade — Step A (keep CocoaPods)
Bump to Capacitor 8 while staying on CocoaPods (decouples the major-version bump from the SPM switch, per the verified plan). Changes: - mobile/package.json: all @capacitor/* + @capacitor-community/safe-area + cli → ^8.0.0 (safe-area 8.0.1 verified Cap 8 compatible; @capacitor/assets stays 3.x, version-agnostic). - 4 local plugins: @capacitor/core peer/dev dep → ^8.0.0; podspec ios deployment_target 14→15. - codemagic.yaml: node 20→22 (Cap 8 requires Node 22+); `cap add ios --packagemanager Cocoapods` (Cap 8 defaults to SPM — force CocoaPods); fail loudly if no Podfile is generated. - add-share-extension.rb: fallback deployment target 14→15. Requirements per the Cap 7→8 guide: Node 22+, Xcode 26+, iOS 15 min. capacitor.config has no adjustMarginsForEdgeToEdge to remove. LiveKit git-pins + native calling unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+7
-2
@@ -29,7 +29,7 @@ workflows:
|
|||||||
BUNDLE_ID: "com.bizgaze.connect"
|
BUNDLE_ID: "com.bizgaze.connect"
|
||||||
XCODE_WORKSPACE: "mobile/ios/App/App.xcworkspace"
|
XCODE_WORKSPACE: "mobile/ios/App/App.xcworkspace"
|
||||||
XCODE_SCHEME: "App"
|
XCODE_SCHEME: "App"
|
||||||
node: 20
|
node: 22
|
||||||
xcode: latest
|
xcode: latest
|
||||||
cocoapods: default
|
cocoapods: default
|
||||||
scripts:
|
scripts:
|
||||||
@@ -44,8 +44,13 @@ workflows:
|
|||||||
script: |
|
script: |
|
||||||
cd mobile
|
cd mobile
|
||||||
# `cap add ios` scaffolds ios/App; safe to re-run — it no-ops if it already exists.
|
# `cap add ios` scaffolds ios/App; safe to re-run — it no-ops if it already exists.
|
||||||
if [ ! -d "ios" ]; then npx cap add ios; fi
|
# Capacitor 8 DEFAULTS to Swift Package Manager, but our whole iOS pipeline (LiveKit Podfile pins,
|
||||||
|
# share-extension injection, AppDelegate patches) is CocoaPods-based — so force CocoaPods.
|
||||||
|
if [ ! -d "ios" ]; then npx cap add ios --packagemanager Cocoapods; fi
|
||||||
npx cap sync ios
|
npx cap sync ios
|
||||||
|
# Fail LOUDLY if no Podfile was generated (flag ignored / SPM project) rather than fail later with a
|
||||||
|
# confusing error — the CocoaPods pipeline downstream needs ios/App/Podfile to exist.
|
||||||
|
test -f ios/App/Podfile || { echo "ERROR: no ios/App/Podfile — 'cap add' did not use CocoaPods"; exit 1; }
|
||||||
# App icon + splash from resources/icon.png & resources/splash*.png (1024x1024 icon, 2732² splash).
|
# App icon + splash from resources/icon.png & resources/splash*.png (1024x1024 icon, 2732² splash).
|
||||||
npx capacitor-assets generate --ios || echo "asset generation skipped"
|
npx capacitor-assets generate --ios || echo "asset generation skipped"
|
||||||
|
|
||||||
|
|||||||
+13
-13
@@ -14,21 +14,21 @@
|
|||||||
"media-library": "file:plugins/media-library",
|
"media-library": "file:plugins/media-library",
|
||||||
"native-call": "file:plugins/native-call",
|
"native-call": "file:plugins/native-call",
|
||||||
"share-inbox": "file:plugins/share-inbox",
|
"share-inbox": "file:plugins/share-inbox",
|
||||||
"@capacitor-community/safe-area": "^7.0.0",
|
"@capacitor-community/safe-area": "^8.0.0",
|
||||||
"@capacitor/android": "^7.0.0",
|
"@capacitor/android": "^8.0.0",
|
||||||
"@capacitor/app": "^7.0.0",
|
"@capacitor/app": "^8.0.0",
|
||||||
"@capacitor/camera": "^7.0.0",
|
"@capacitor/camera": "^8.0.0",
|
||||||
"@capacitor/core": "^7.0.0",
|
"@capacitor/core": "^8.0.0",
|
||||||
"@capacitor/filesystem": "^7.0.0",
|
"@capacitor/filesystem": "^8.0.0",
|
||||||
"@capacitor/ios": "^7.0.0",
|
"@capacitor/ios": "^8.0.0",
|
||||||
"@capacitor/keyboard": "^7.0.0",
|
"@capacitor/keyboard": "^8.0.0",
|
||||||
"@capacitor/share": "^7.0.0",
|
"@capacitor/share": "^8.0.0",
|
||||||
"@capacitor/push-notifications": "^7.0.0",
|
"@capacitor/push-notifications": "^8.0.0",
|
||||||
"@capacitor/splash-screen": "^7.0.0",
|
"@capacitor/splash-screen": "^8.0.0",
|
||||||
"@capacitor/status-bar": "^7.0.0"
|
"@capacitor/status-bar": "^8.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@capacitor/assets": "^3.0.5",
|
"@capacitor/assets": "^3.0.5",
|
||||||
"@capacitor/cli": "^7.0.0"
|
"@capacitor/cli": "^8.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ Pod::Spec.new do |s|
|
|||||||
s.author = 'BizGaze'
|
s.author = 'BizGaze'
|
||||||
s.source = { :git => 'https://bizgaze.com/audio-route.git', :tag => s.version.to_s }
|
s.source = { :git => 'https://bizgaze.com/audio-route.git', :tag => s.version.to_s }
|
||||||
s.source_files = 'ios/Sources/**/*.{swift,h,m}'
|
s.source_files = 'ios/Sources/**/*.{swift,h,m}'
|
||||||
s.ios.deployment_target = '14.0'
|
s.ios.deployment_target = '15.0'
|
||||||
s.dependency 'Capacitor'
|
s.dependency 'Capacitor'
|
||||||
s.swift_version = '5.1'
|
s.swift_version = '5.1'
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -18,9 +18,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@capacitor/core": "^7.0.0"
|
"@capacitor/core": "^8.0.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@capacitor/core": "^7.0.0"
|
"@capacitor/core": "^8.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ Pod::Spec.new do |s|
|
|||||||
s.author = 'BizGaze'
|
s.author = 'BizGaze'
|
||||||
s.source = { :git => 'https://bizgaze.com/media-library.git', :tag => s.version.to_s }
|
s.source = { :git => 'https://bizgaze.com/media-library.git', :tag => s.version.to_s }
|
||||||
s.source_files = 'ios/Sources/**/*.{swift,h,m}'
|
s.source_files = 'ios/Sources/**/*.{swift,h,m}'
|
||||||
s.ios.deployment_target = '14.0'
|
s.ios.deployment_target = '15.0'
|
||||||
s.dependency 'Capacitor'
|
s.dependency 'Capacitor'
|
||||||
s.swift_version = '5.1'
|
s.swift_version = '5.1'
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -18,9 +18,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@capacitor/core": "^7.0.0"
|
"@capacitor/core": "^8.0.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@capacitor/core": "^7.0.0"
|
"@capacitor/core": "^8.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ Pod::Spec.new do |s|
|
|||||||
s.author = 'BizGaze'
|
s.author = 'BizGaze'
|
||||||
s.source = { :git => 'https://bizgaze.com/native-call.git', :tag => s.version.to_s }
|
s.source = { :git => 'https://bizgaze.com/native-call.git', :tag => s.version.to_s }
|
||||||
s.source_files = 'ios/Sources/**/*.{swift,h,m}'
|
s.source_files = 'ios/Sources/**/*.{swift,h,m}'
|
||||||
s.ios.deployment_target = '14.0'
|
s.ios.deployment_target = '15.0'
|
||||||
s.dependency 'Capacitor'
|
s.dependency 'Capacitor'
|
||||||
# LiveKit iOS SDK — carries the call media NATIVELY so audio survives backgrounding AND coordinates with
|
# LiveKit iOS SDK — carries the call media NATIVELY so audio survives backgrounding AND coordinates with
|
||||||
# CallKit's audio session (auto-config OFF via AudioManager.shared.audioSession.isAutomaticConfigurationEnabled
|
# CallKit's audio session (auto-config OFF via AudioManager.shared.audioSession.isAutomaticConfigurationEnabled
|
||||||
|
|||||||
@@ -18,9 +18,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@capacitor/core": "^7.0.0"
|
"@capacitor/core": "^8.0.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@capacitor/core": "^7.0.0"
|
"@capacitor/core": "^8.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ Pod::Spec.new do |s|
|
|||||||
s.author = 'BizGaze'
|
s.author = 'BizGaze'
|
||||||
s.source = { :git => 'https://bizgaze.com/share-inbox.git', :tag => s.version.to_s }
|
s.source = { :git => 'https://bizgaze.com/share-inbox.git', :tag => s.version.to_s }
|
||||||
s.source_files = 'ios/Sources/**/*.{swift,h,m}'
|
s.source_files = 'ios/Sources/**/*.{swift,h,m}'
|
||||||
s.ios.deployment_target = '14.0'
|
s.ios.deployment_target = '15.0'
|
||||||
s.dependency 'Capacitor'
|
s.dependency 'Capacitor'
|
||||||
s.swift_version = '5.1'
|
s.swift_version = '5.1'
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -18,9 +18,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@capacitor/core": "^7.0.0"
|
"@capacitor/core": "^8.0.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@capacitor/core": "^7.0.0"
|
"@capacitor/core": "^8.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ puts "App entitlements: app-group ensured (kept #{(app_ent.keys - ['com.apple.se
|
|||||||
# ── Create the extension target ──────────────────────────────────────────────────────────────────────
|
# ── Create the extension target ──────────────────────────────────────────────────────────────────────
|
||||||
# deployment_target can be nil when it's only set at the project level — fall back so we never create a
|
# deployment_target can be nil when it's only set at the project level — fall back so we never create a
|
||||||
# target with an empty minimum-OS (which Xcode then flags).
|
# target with an empty minimum-OS (which Xcode then flags).
|
||||||
deployment = app.deployment_target || project.build_configurations.first&.build_settings&.[]('IPHONEOS_DEPLOYMENT_TARGET') || '14.0'
|
deployment = app.deployment_target || project.build_configurations.first&.build_settings&.[]('IPHONEOS_DEPLOYMENT_TARGET') || '15.0'
|
||||||
ext = project.new_target(
|
ext = project.new_target(
|
||||||
:app_extension, EXT_NAME, :ios,
|
:app_extension, EXT_NAME, :ios,
|
||||||
deployment, project.products_group, :swift
|
deployment, project.products_group, :swift
|
||||||
|
|||||||
Reference in New Issue
Block a user