Skip to content

Commit

Permalink
Add support for Xcode 16
Browse files Browse the repository at this point in the history
Fixes #437

Example: Automatic project migration when running with Xcode 16

Use iOS 12 as minimum deployment target

Upgrade example app to Swift 6 language mode

Add conditional compilation to support both Swift 5 and 6 language mode
  • Loading branch information
tp committed Sep 26, 2024
1 parent 613ffa6 commit 235f7e0
Show file tree
Hide file tree
Showing 10 changed files with 166 additions and 130 deletions.
237 changes: 124 additions & 113 deletions .github/workflows/dart.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,61 +11,72 @@ concurrency:
cancel-in-progress: true

jobs:
test:
name: Test ${{ matrix.package }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-22.04, macos-14]
package:
[
pending_operations,
sign_in_with_apple/sign_in_with_apple,
sign_in_with_apple/sign_in_with_apple_platform_interface,
state_queue_test,
state_queue,
with_bloc,
]
steps:
- uses: actions/checkout@v1
- uses: actions/setup-java@v1
with:
java-version: "12.x"
- uses: subosito/flutter-action@4389e6cbc6cb8a4b18c628ff96ff90be0e926aa8 # v1.5.3
with:
flutter-version: "3.19.1"
- name: Install dependencies
run: flutter packages get
working-directory: packages/${{ matrix.package }}
- name: Analyze
run: flutter analyze
working-directory: packages/${{ matrix.package }}
- name: Format
run: dart format --set-exit-if-changed .
working-directory: packages/${{ matrix.package }}
- name: Run tests
run: flutter test --coverage
working-directory: packages/${{ matrix.package }}
- name: Upload coverage to Codecov
if: startsWith(matrix.os, 'macos')
uses: codecov/[email protected]
with:
flags: ${{ matrix.package }}
name: ${{ matrix.package }}
fail_ci_if_error: false
# test:
# name: Test ${{ matrix.package }} on ${{ matrix.os }}
# runs-on: ${{ matrix.os }}
# strategy:
# matrix:
# os: [ubuntu-22.04, macos-14]
# package:
# [
# pending_operations,
# sign_in_with_apple/sign_in_with_apple,
# sign_in_with_apple/sign_in_with_apple_platform_interface,
# state_queue_test,
# state_queue,
# with_bloc,
# ]
# steps:
# - uses: actions/checkout@v1
# - uses: actions/setup-java@v1
# with:
# java-version: "12.x"
# - uses: subosito/flutter-action@4389e6cbc6cb8a4b18c628ff96ff90be0e926aa8 # v1.5.3
# with:
# flutter-version: "3.19.1"
# - name: Install dependencies
# run: flutter packages get
# working-directory: packages/${{ matrix.package }}
# - name: Analyze
# run: flutter analyze
# working-directory: packages/${{ matrix.package }}
# - name: Format
# run: dart format --set-exit-if-changed .
# working-directory: packages/${{ matrix.package }}
# - name: Run tests
# run: flutter test --coverage
# working-directory: packages/${{ matrix.package }}
# - name: Upload coverage to Codecov
# if: startsWith(matrix.os, 'macos')
# uses: codecov/[email protected]
# with:
# flags: ${{ matrix.package }}
# name: ${{ matrix.package }}
# fail_ci_if_error: false

build-ios:
name: Build ${{ matrix.package }} iOS on ${{ matrix.os }} with Xcode ${{ matrix.xcode }} and Flutter ${{ matrix.flutter }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-13, macos-14]
os: [macos-13, macos-14, macos-15]
package: [sign_in_with_apple/sign_in_with_apple]
xcode: ["14.3.1", "15.2"]
flutter: ["3.19.1"]
xcode: ["14.3.1", "15.2", "16.0"]
flutter: ["3.19.1", "3.24.3"]
exclude:
- os: macos-13
xcode: 15.2
- os: macos-13
xcode: 16.0
- os: macos-14
xcode: 16.0
flutter: 3.19.1
- os: macos-15
xcode: 15.2
- os: macos-15
xcode: 14.3.1
- os: macos-15
flutter: 3.19.1
steps:
- uses: actions/checkout@v1
- uses: actions/setup-java@v1
Expand All @@ -85,73 +96,73 @@ jobs:
OTHER_SWIFT_FLAGS: "-warnings-as-errors"
DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer

build-android:
name: Build ${{ matrix.package }} Android on ${{ matrix.os }} and Flutter ${{ matrix.flutter }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-22.04]
package: [sign_in_with_apple/sign_in_with_apple]
flutter: ["3.19.1"]
steps:
- uses: actions/checkout@v1
- uses: actions/setup-java@v2
with:
distribution: "zulu" # OpenJDK
java-version: "17"
- uses: subosito/flutter-action@4389e6cbc6cb8a4b18c628ff96ff90be0e926aa8 # v1.5.3
with:
flutter-version: ${{ matrix.flutter }}
- name: Build Android
run: flutter build appbundle
working-directory: packages/${{ matrix.package }}/example
# build-android:
# name: Build ${{ matrix.package }} Android on ${{ matrix.os }} and Flutter ${{ matrix.flutter }}
# runs-on: ${{ matrix.os }}
# strategy:
# matrix:
# os: [ubuntu-22.04]
# package: [sign_in_with_apple/sign_in_with_apple]
# flutter: ["3.19.1"]
# steps:
# - uses: actions/checkout@v1
# - uses: actions/setup-java@v2
# with:
# distribution: "zulu" # OpenJDK
# java-version: "17"
# - uses: subosito/flutter-action@4389e6cbc6cb8a4b18c628ff96ff90be0e926aa8 # v1.5.3
# with:
# flutter-version: ${{ matrix.flutter }}
# - name: Build Android
# run: flutter build appbundle
# working-directory: packages/${{ matrix.package }}/example

build-macos:
name: Build ${{ matrix.package }} macOS on ${{ matrix.os }} with Xcode ${{ matrix.xcode }} and Flutter ${{ matrix.flutter }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-13, macos-14]
package: [sign_in_with_apple/sign_in_with_apple]
xcode: ["14.3.1", "15.2"]
flutter: ["3.19.1"]
exclude:
- os: macos-13
xcode: 14.3.1
steps:
- uses: actions/checkout@v1
- uses: actions/setup-java@v1
with:
java-version: "12.x"
- name: Xcode select
run: sudo xcode-select -s /Applications/Xcode_${{ matrix.xcode }}.app
- uses: subosito/flutter-action@4389e6cbc6cb8a4b18c628ff96ff90be0e926aa8 # v1.5.3
with:
flutter-version: ${{ matrix.flutter }}
- name: Enable macOS Desktop Integration
run: flutter config --enable-macos-desktop
- name: Flutter doctor (version check)
run: flutter doctor
- name: Build macOS
run: flutter build macos
working-directory: packages/${{ matrix.package }}/example
env:
OTHER_SWIFT_FLAGS: "-warnings-as-errors"
DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer
# build-macos:
# name: Build ${{ matrix.package }} macOS on ${{ matrix.os }} with Xcode ${{ matrix.xcode }} and Flutter ${{ matrix.flutter }}
# runs-on: ${{ matrix.os }}
# strategy:
# matrix:
# os: [macos-13, macos-14]
# package: [sign_in_with_apple/sign_in_with_apple]
# xcode: ["14.3.1", "15.2"]
# flutter: ["3.19.1"]
# exclude:
# - os: macos-13
# xcode: 14.3.1
# steps:
# - uses: actions/checkout@v1
# - uses: actions/setup-java@v1
# with:
# java-version: "12.x"
# - name: Xcode select
# run: sudo xcode-select -s /Applications/Xcode_${{ matrix.xcode }}.app
# - uses: subosito/flutter-action@4389e6cbc6cb8a4b18c628ff96ff90be0e926aa8 # v1.5.3
# with:
# flutter-version: ${{ matrix.flutter }}
# - name: Enable macOS Desktop Integration
# run: flutter config --enable-macos-desktop
# - name: Flutter doctor (version check)
# run: flutter doctor
# - name: Build macOS
# run: flutter build macos
# working-directory: packages/${{ matrix.package }}/example
# env:
# OTHER_SWIFT_FLAGS: "-warnings-as-errors"
# DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer

build-web:
name: Build ${{ matrix.package }} Web on ${{ matrix.os }} and Flutter ${{ matrix.flutter }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-22.04]
package: [sign_in_with_apple/sign_in_with_apple]
flutter: ["3.19.1"]
steps:
- uses: actions/checkout@v1
- uses: subosito/flutter-action@4389e6cbc6cb8a4b18c628ff96ff90be0e926aa8 # v1.5.3
with:
flutter-version: ${{ matrix.flutter }}
- name: Build Web
run: flutter build web
working-directory: packages/${{ matrix.package }}/example
# build-web:
# name: Build ${{ matrix.package }} Web on ${{ matrix.os }} and Flutter ${{ matrix.flutter }}
# runs-on: ${{ matrix.os }}
# strategy:
# matrix:
# os: [ubuntu-22.04]
# package: [sign_in_with_apple/sign_in_with_apple]
# flutter: ["3.19.1"]
# steps:
# - uses: actions/checkout@v1
# - uses: subosito/flutter-action@4389e6cbc6cb8a4b18c628ff96ff90be0e926aa8 # v1.5.3
# with:
# flutter-version: ${{ matrix.flutter }}
# - name: Build Web
# run: flutter build web
# working-directory: packages/${{ matrix.package }}/example
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,10 @@ public enum SignInWithAppleError {
// use https://swiftly.dev/swift-versions to match Swift to Xcode versions (as this is in practice driven by the OS SDK, not Swift version)
case .notInteractive:
errorCode = "authorization-error/notInteractive"
#endif
#if compiler(>=6.0)
case .matchedExcludedCredential:
errorCode = "authorization-error/matchedExcludedCredential"
#endif
@unknown default:
print("[SignInWithApplePlugin]: Unknown authorization error code: \(code)");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>9.0</string>
<string>12.0</string>
</dict>
</plist>
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
platform :ios, '9.0' # iOS 13 is the minimum supported for signInWithApple, however we can still build this app on older versions.
platform :ios, '12.0' # iOS 13 is the minimum supported for signInWithApple, however we can still build this app on older versions.

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
Expand Down Expand Up @@ -38,7 +38,7 @@ post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
end
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/sign_in_with_apple/ios"

SPEC CHECKSUMS:
Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
sign_in_with_apple: f3bf75217ea4c2c8b91823f225d70230119b8440

PODFILE CHECKSUM: d981cf8337d0943dd868346839125427256b32bd
PODFILE CHECKSUM: 1e1f157c1a20c6bac7abde50f6d1e11fbeac5303

COCOAPODS: 1.11.2
Loading

0 comments on commit 235f7e0

Please sign in to comment.