diff --git a/CHANGELOG.md b/CHANGELOG.md index 3df6d40606..42b7a44b7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm #### Supported platform versions have been updated -The minimum supported version of iOS is now 11.0 for all frameworks. The minimum supported version of tvOS is now 11.0 for all frameworks. +The minimum supported version of iOS is now 11.0 for all frameworks. The minimum supported version of tvOS is now 11.0 for all frameworks. The XCFramework binaries are now built with Xcode 13 so Xcode 12 is no longer supported. #### Client Tokens are now required diff --git a/FBAEMKit.podspec b/FBAEMKit.podspec index f30adb01f6..6d8a3af040 100644 --- a/FBAEMKit.podspec +++ b/FBAEMKit.podspec @@ -47,7 +47,7 @@ Pod::Spec.new do |s| s.source = { http: "https://github.com/facebook/facebook-ios-sdk/releases/download/v#{s.version}/FacebookSDK_Dynamic.xcframework.zip", - sha1: 'fcad6213f252eff6a31adc4117fc1af6f6726426' + sha1: '608a15c67bb641d49fc59fc2186cd39c45a3941b' } s.vendored_frameworks = 'XCFrameworks/FBAEMKit.xcframework' s.dependency 'FBSDKCoreKit_Basics', "#{s.version}" diff --git a/FBSDKCoreKit.podspec b/FBSDKCoreKit.podspec index c8fb66efa2..0598569be7 100644 --- a/FBSDKCoreKit.podspec +++ b/FBSDKCoreKit.podspec @@ -50,7 +50,7 @@ Pod::Spec.new do |s| s.source = { http: "https://github.com/facebook/facebook-ios-sdk/releases/download/v#{s.version}/FacebookSDK_Dynamic.xcframework.zip", - sha1: 'fcad6213f252eff6a31adc4117fc1af6f6726426' + sha1: '608a15c67bb641d49fc59fc2186cd39c45a3941b' } s.vendored_frameworks = 'XCFrameworks/FBSDKCoreKit.xcframework' s.dependency 'FBSDKCoreKit_Basics', "#{s.version}" diff --git a/FBSDKCoreKit_Basics.podspec b/FBSDKCoreKit_Basics.podspec index 6bccd5b809..951aafc3e9 100644 --- a/FBSDKCoreKit_Basics.podspec +++ b/FBSDKCoreKit_Basics.podspec @@ -49,7 +49,7 @@ Pod::Spec.new do |s| s.source = { http: "https://github.com/facebook/facebook-ios-sdk/releases/download/v#{s.version}/FacebookSDK_Dynamic.xcframework.zip", - sha1: 'fcad6213f252eff6a31adc4117fc1af6f6726426' + sha1: '608a15c67bb641d49fc59fc2186cd39c45a3941b' } s.vendored_frameworks = 'XCFrameworks/FBSDKCoreKit_Basics.xcframework' end diff --git a/FBSDKGamingServicesKit.podspec b/FBSDKGamingServicesKit.podspec index 29263de766..5904f75f48 100644 --- a/FBSDKGamingServicesKit.podspec +++ b/FBSDKGamingServicesKit.podspec @@ -51,7 +51,7 @@ Pod::Spec.new do |s| s.source = { http: "https://github.com/facebook/facebook-ios-sdk/releases/download/v#{s.version}/FacebookSDK_Dynamic.xcframework.zip", - sha1: 'fcad6213f252eff6a31adc4117fc1af6f6726426' + sha1: '608a15c67bb641d49fc59fc2186cd39c45a3941b' } s.vendored_frameworks = "XCFrameworks/FBSDKGamingServicesKit.xcframework" s.dependency "FBSDKCoreKit_Basics", "#{s.version}" diff --git a/FBSDKLoginKit.podspec b/FBSDKLoginKit.podspec index b4d769f02b..6099c4c0ba 100644 --- a/FBSDKLoginKit.podspec +++ b/FBSDKLoginKit.podspec @@ -50,7 +50,7 @@ Pod::Spec.new do |s| s.source = { http: "https://github.com/facebook/facebook-ios-sdk/releases/download/v#{s.version}/FacebookSDK_Dynamic.xcframework.zip", - sha1: 'fcad6213f252eff6a31adc4117fc1af6f6726426' + sha1: '608a15c67bb641d49fc59fc2186cd39c45a3941b' } s.vendored_frameworks = 'XCFrameworks/FBSDKLoginKit.xcframework' s.dependency "FBSDKCoreKit", "#{s.version}" diff --git a/FBSDKShareKit.podspec b/FBSDKShareKit.podspec index 6a154f61d4..af8aed6ab1 100644 --- a/FBSDKShareKit.podspec +++ b/FBSDKShareKit.podspec @@ -50,7 +50,7 @@ Pod::Spec.new do |s| s.source = { http: "https://github.com/facebook/facebook-ios-sdk/releases/download/v#{s.version}/FacebookSDK_Dynamic.xcframework.zip", - sha1: 'fcad6213f252eff6a31adc4117fc1af6f6726426' + sha1: '608a15c67bb641d49fc59fc2186cd39c45a3941b' } s.vendored_frameworks = 'XCFrameworks/FBSDKShareKit.xcframework' s.dependency 'FBSDKCoreKit', "#{s.version}" diff --git a/Package.swift b/Package.swift index 4818e505e6..ef37c81311 100644 --- a/Package.swift +++ b/Package.swift @@ -17,120 +17,6 @@ import Glibc import Darwin.C #endif -enum BinarySource { - case local, remote - - static var current: Self { - if getenv("USE_LOCAL_FB_BINARIES") != nil { - return .local - } else { - return .remote - } - } -} - -struct BinaryTargets { - let source: BinarySource - - var aem: Target { - switch source { - case .local: - return .binaryTarget( - name: "FBAEMKit", - path: "build/XCFrameworks/Static/FBAEMKit.xcframework" - ) - case .remote: - return .binaryTarget( - name: "FBAEMKit", - url: "https://github.com/facebook/facebook-ios-sdk/releases/download/v12.3.1/FBAEMKit-Static_XCFramework.zip", - checksum: "3ec0add385cfb6f8fee6ec1a6b87e14d8acb12bd7a52ff86717384b5fbc94b20" - ) - } - } - - var basics: Target { - switch source { - case .local: - return .binaryTarget( - name: "FBSDKCoreKit_Basics", - path: "build/XCFrameworks/Static/FBSDKCoreKit_Basics.xcframework" - ) - case .remote: - return .binaryTarget( - name: "FBSDKCoreKit_Basics", - url: "https://github.com/facebook/facebook-ios-sdk/releases/download/v12.3.1/FBSDKCoreKit_Basics-Static_XCFramework.zip", - checksum: "d844db7fb9ebc7b11107062a7202741877a641f7713c2e290ad90165b19571ea" - ) - } - } - - var core: Target { - switch source { - case .local: - return .binaryTarget( - name: "FBSDKCoreKit", - path: "build/XCFrameworks/Static/FBSDKCoreKit.xcframework" - ) - case .remote: - return .binaryTarget( - name: "FBSDKCoreKit", - url: "https://github.com/facebook/facebook-ios-sdk/releases/download/v12.3.1/FBSDKCoreKit-Static_XCFramework.zip", - checksum: "41b25386d988f15aaee2b518fd6f2217fe89de709d0b6d4f1a82d1a80a5ec7f5" - ) - } - } - - var login: Target { - switch source { - case .local: - return .binaryTarget( - name: "FBSDKLoginKit", - path: "build/XCFrameworks/Static/FBSDKLoginKit.xcframework" - ) - case .remote: - return .binaryTarget( - name: "FBSDKLoginKit", - url: "https://github.com/facebook/facebook-ios-sdk/releases/download/v12.3.1/FBSDKLoginKit-Static_XCFramework.zip", - checksum: "c2ab6467bde31cfdbafdb970859da45f9f079ee9fbd591dc667ca75df4ce869d" - ) - } - } - - var share: Target { - switch source { - case .local: - return .binaryTarget( - name: "FBSDKShareKit", - path: "build/XCFrameworks/Static/FBSDKShareKit.xcframework" - ) - case .remote: - return .binaryTarget( - name: "FBSDKShareKit", - url: "https://github.com/facebook/facebook-ios-sdk/releases/download/v12.3.1/FBSDKShareKit-Static_XCFramework.zip", - checksum: "2459ff510766894a718bf2bb5c1507bff07d020f030020b886fb864a50b154f1" - ) - } - } - - var gamingServices: Target { - switch source { - case .local: - return .binaryTarget( - name: "FBSDKGamingServicesKit", - path: "build/XCFrameworks/Static/FBSDKGamingServicesKit.xcframework" - ) - case .remote: - return .binaryTarget( - name: "FBSDKGamingServicesKit", - url: "https://github.com/facebook/facebook-ios-sdk/releases/download/v12.3.1/FBSDKGamingServicesKit-Static_XCFramework.zip", - checksum: "e40b1aa4169955d52d2c2ee799e39979fdca5cd3768737c806d330b20e2670df" - ) - } - } -} - -let targets = BinaryTargets(source: .current) - let package = Package( name: "Facebook", platforms: [ @@ -138,11 +24,11 @@ let package = Package( .tvOS(.v10) ], products: [ - // The Kernel of the SDK. Must be included as a runtime dependency. - .library( - name: "FacebookBasics", - targets: ["FBSDKCoreKit_Basics"] - ), + // The Kernel of the SDK. Must be included as a runtime dependency. + .basics, + + // The Facebook AEM Kit + .aem, /* The Core SDK library that provides two importable modules: @@ -154,103 +40,223 @@ let package = Package( that will be used to maintain backwards compatibility with types that have been converted to Swift. This will not contain interfaces for new features written in Swift. - */ - .library( - name: "FacebookCore", - targets: ["FacebookCore", "FBSDKCoreKit"] - ), - - // The Facebook Login SDK - .library( - name: "FacebookLogin", - targets: ["FacebookLogin"] - ), - - // The Facebook Share SDK - .library( - name: "FacebookShare", - targets: ["FBSDKShareKit", "FacebookShare"] - ), - - // The Facebook Gaming Services SDK - .library( - name: "FacebookGamingServices", - targets: ["FacebookGamingServices", "FBSDKGamingServicesKit"] - ), + */ + .core, - // The Facebook AEM Kit - .library( - name: "FacebookAEM", - targets: ["FBAEMKit", "FacebookAEM"] - ) + // The Facebook Login SDK + .login, + + // The Facebook Share SDK + .share, + + // The Facebook Gaming Services SDK + .gaming, + + // The Facebook tvOS SDK. + .tv, ], targets: [ // The kernel of the SDK - targets.basics, + .Prefixed.basics, /* The legacy Objective-C implementation that will be converted to Swift. This will not contain interfaces for new features written in Swift. */ - targets.aem, + .Prefixed.aem, // The main AEM module - .target( - name: "FacebookAEM", - dependencies: ["FBAEMKit"] - ), + .aem, /* The legacy Objective-C implementation that will be converted to Swift. This will not contain interfaces for new features written in Swift. */ - targets.core, + .Prefixed.core, // The main Core SDK module - .target( - name: "FacebookCore", - dependencies: ["FacebookAEM", "FBSDKCoreKit_Basics", "FBSDKCoreKit"], - linkerSettings: [ - .linkedLibrary("c++"), - .linkedLibrary("z"), - .linkedFramework("Accelerate") - ] - ), + .core, /* The legacy Objective-C implementation that will be converted to Swift. This will not contain interfaces for new features written in Swift. */ - targets.login, + .Prefixed.login, // The main Login SDK module - .target( - name: "FacebookLogin", - dependencies: ["FacebookCore", "FBSDKLoginKit"] - ), + .login, /* - The legacy Objective-C implementation that will be converted to Swift. + The legacy Objective-C implementation that has been converted to Swift. This will not contain interfaces for new features written in Swift. */ - targets.share, + .Prefixed.share, // The main Share SDK module - .target( - name: "FacebookShare", - dependencies: ["FacebookCore", "FBSDKShareKit"] - ), + .share, /* The legacy Objective-C implementation that has been converted to Swift. + This will not contain interfaces for new features written in Swift. */ - targets.gamingServices, + .Prefixed.gamingServices, // The main Facebook Gaming Services module - .target( - name: "FacebookGamingServices", - dependencies: ["FBSDKGamingServicesKit"] - ), + .gaming, + + // The tvOS-specific SDK with an FBSDK-prefixed name. + .Prefixed.tv, + + // The tvOS-specific SDK. + .tv, ], - cxxLanguageStandard: CXXLanguageStandard.cxx11 + cxxLanguageStandard: .cxx11 ) + +extension Product { + static let basics = library(name: .basics, targets: [.Prefixed.basics]) + static let core = library(name: .core, targets: [.core, .Prefixed.core]) + static let login = library(name: .login, targets: [.login]) + static let share = library(name: .share, targets: [.share, .Prefixed.share]) + static let gaming = library(name: .gaming, targets: [.gaming, .Prefixed.gaming]) + static let aem = library(name: .aem, targets: [.aem, .Prefixed.aem]) + static let tv = library(name: .tv, targets: [.tv]) +} + +extension Target { + static let binarySource = BinarySource() + + static func binaryTarget(name: String, remoteChecksum: String) -> Target { + switch binarySource { + case .local: + return .binaryTarget( + name: name, + path: localBinaryPath(for: name) + ) + case .remote: + return .binaryTarget( + name: name, + url: remoteBinaryURLString(for: name), + checksum: remoteChecksum + ) + } + } + + static func localBinaryPath(for targetName: String) -> String { + "build/XCFrameworks/Static/\(targetName).xcframework" + } + + static func remoteBinaryURLString(for targetName: String) -> String { + "https://github.com/facebook/facebook-ios-sdk/releases/download/v13.0.0/\(targetName)-Static_XCFramework.zip" + } + + static let aem = target(name: .aem, dependencies: [.Prefixed.aem]) + + static let core = target( + name: .core, + dependencies: [.aem, .Prefixed.basics, .Prefixed.core], + linkerSettings: [ + .cPlusPlusLibrary, + .zLibrary, + .accelerateFramework, + ] + ) + + static let login = target(name: .login, dependencies: [.core, .Prefixed.login]) + + static let share = target(name: .share, dependencies: [.core, .Prefixed.share]) + + static let gaming = target(name: .gaming, dependencies: [.Prefixed.gaming]) + + static let tv = target(name: .tv, dependencies: [.Prefixed.tv]) + + enum Prefixed { + static let basics = binaryTarget( + name: .Prefixed.basics, + remoteChecksum: "b014f2237a65a1433a919f42f37181b9f36477de2d367a2d20859d3e21f79e1b" + ) + + static let aem = binaryTarget( + name: .Prefixed.aem, + remoteChecksum: "7b37769c1799c8ac3094506b2b7127ea79d7002585cb9594c55b47b9c5c86fcb" + ) + + static let core = binaryTarget( + name: .Prefixed.core, + remoteChecksum: "227de8a77e0ea1fb2f2a7bad8f1b954606b40c159cb69c53f5677098b66e5738" + ) + + static let login = binaryTarget( + name: .Prefixed.login, + remoteChecksum: "d93692d0b54a991423598bc9745e82449f80933779136a9c61d210e351951101" + ) + + static let share = binaryTarget( + name: .Prefixed.share, + remoteChecksum: "131af9a4326aeecc808b1e031541ef1bdf560e0c596bf8adce8d8bcbc2ce4d6b" + ) + + static let gamingServices = binaryTarget( + name: .Prefixed.gaming, + remoteChecksum: "2a9b252e0bb526bb6e2b51e4c41b54ce3f598d1f1c0751766a35a3dc8fb9ceb5" + ) + + static let tv = binaryTarget( + name: .Prefixed.tv, + remoteChecksum: "254d71299e55273b8a9e471f41906ecb4418138953825a773f375aa3a31b3ae9" + ) + } +} + +extension Target.Dependency { + static let aem = byName(name: .aem) + static let core = byName(name: .core) + + enum Prefixed { + static let aem = byName(name: .Prefixed.aem) + static let basics = byName(name: .Prefixed.basics) + static let core = byName(name: .Prefixed.core) + static let login = byName(name: .Prefixed.login) + static let share = byName(name: .Prefixed.share) + static let gaming = byName(name: .Prefixed.gaming) + static let tv = byName(name: .Prefixed.tv) + } +} + +extension LinkerSetting { + static let cPlusPlusLibrary = linkedLibrary("c++") + static let zLibrary = linkedLibrary("z") + static let accelerateFramework = linkedFramework("Accelerate") +} + +enum BinarySource { + case local, remote + + init() { + if getenv("USE_LOCAL_FB_BINARIES") != nil { + self = .local + } else { + self = .remote + } + } +} + +extension String { + static let aem = "FacebookAEM" + static let basics = "FacebookBasics" + static let core = "FacebookCore" + static let login = "FacebookLogin" + static let share = "FacebookShare" + static let gaming = "FacebookGamingServices" + static let tv = "FacebookTV" + + enum Prefixed { + static let aem = "FBAEMKit" + static let basics = "FBSDKCoreKit_Basics" + static let core = "FBSDKCoreKit" + static let login = "FBSDKLoginKit" + static let share = "FBSDKShareKit" + static let gaming = "FBSDKGamingServicesKit" + static let tv = "FBSDKTVOSKit" + } +}