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 472b693
Show file tree
Hide file tree
Showing 11 changed files with 129 additions and 89 deletions.
155 changes: 83 additions & 72 deletions .github/workflows/dart.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,20 +52,31 @@ jobs:
with:
flags: ${{ matrix.package }}
name: ${{ matrix.package }}
fail_ci_if_error: false
# 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
4 changes: 4 additions & 0 deletions packages/sign_in_with_apple/sign_in_with_apple/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 6.1.3

- Support Xcode 16 (in addition to all previously supported versions)

## 6.1.2

- Switch to modern Gradle setup (https://docs.flutter.dev/release/breaking-changes/flutter-gradle-plugin-apply) for the example app
Expand Down
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
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objectVersion = 54;
objects = {

/* Begin PBXBuildFile section */
Expand Down Expand Up @@ -68,7 +68,6 @@
10135393A9089B654C7B3C80 /* Pods-Runner.release.xcconfig */,
EBDBDA9BE28C8968F80280F4 /* Pods-Runner.profile.xcconfig */,
);
name = Pods;
path = Pods;
sourceTree = "<group>";
};
Expand Down Expand Up @@ -156,7 +155,7 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1020;
LastUpgradeCheck = 1510;
ORGANIZATIONNAME = "";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
Expand Down Expand Up @@ -200,10 +199,12 @@
/* Begin PBXShellScriptBuildPhase section */
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
);
name = "Thin Binary";
outputPaths = (
Expand Down Expand Up @@ -236,6 +237,7 @@
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
Expand Down Expand Up @@ -340,7 +342,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
Expand All @@ -358,7 +360,10 @@
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.aboutyou.dart_packages.sign_in_with_apple_example;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
Expand Down Expand Up @@ -414,7 +419,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
Expand Down Expand Up @@ -463,11 +468,12 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
Expand All @@ -482,7 +488,10 @@
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.aboutyou.dart_packages.sign_in_with_apple_example;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
Expand All @@ -501,7 +510,10 @@
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.aboutyou.dart_packages.sign_in_with_apple_example;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1020"
LastUpgradeVersion = "1510"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
import UIKit
import Flutter


#if (os(iOS) && swift(>=6.0)) || (os(macOS) && swift(>=6.0.0))
@main
#else
@UIApplicationMain
#endif
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,9 @@
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
</dict>
</plist>
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: sign_in_with_apple
description: Flutter bridge to initiate Sign in with Apple (on iOS, macOS, and Android). Includes support for keychain entries as well as signing in with an Apple ID.
version: 6.1.2
version: 6.1.3-dev1
homepage: https:/aboutyou/dart_packages/tree/master/packages/sign_in_with_apple
repository: https:/aboutyou/dart_packages

Expand Down

0 comments on commit 472b693

Please sign in to comment.