mirror of
https://github.com/firebase/firebase-ios-sdk
synced 2026-11-09 22:36:01 +05:45
195 lines
6.9 KiB
JSON
195 lines
6.9 KiB
JSON
{
|
|
// Release config for the zip builder (scripts/zip_builder).
|
|
// Keys are documented in scripts/zip_builder/docs/configuration.md; every key is optional except
|
|
// release.name and release.bundleIdPrefix. The version comes from `--version` (or release.version).
|
|
// TODO: Look into generating a JSON Schema for IDE autocomplete/validation.
|
|
"release": {
|
|
"name": "Firebase",
|
|
"bundleIdPrefix": "com.google.firebase",
|
|
// Frameworks from dependency packages keep the CocoaPods-era bundle IDs.
|
|
"dependencyBundleIdPrefix": "org.cocoapods",
|
|
"archiveName": "{name}-{version}-latest.zip"
|
|
},
|
|
|
|
"products": {
|
|
"exclude": [
|
|
"FirebaseAuthCombine-Community",
|
|
"FirebaseFirestoreCombine-Community",
|
|
"FirebaseFunctionsCombine-Community",
|
|
"FirebaseStorageCombine-Community",
|
|
"FirebaseAnalyticsCore",
|
|
"FirebaseAnalyticsIdentitySupport",
|
|
// Removed in 13.0.0.
|
|
"FirebaseMLModelDownloader",
|
|
"FirebaseAI"
|
|
],
|
|
"add": [
|
|
{
|
|
"name": "FirebaseABTesting",
|
|
"targets": ["FirebaseABTesting"]
|
|
}
|
|
],
|
|
"rename": {
|
|
"FirebaseAppDistribution-Beta": "FirebaseAppDistribution",
|
|
"FirebaseInAppMessaging-Beta": "FirebaseInAppMessaging"
|
|
},
|
|
// Built, but without a folder of their own.
|
|
"withoutFolder": [
|
|
"FirebaseCore",
|
|
"FirebaseInstallations"
|
|
],
|
|
// The FirebaseAnalytics folder holds the shared frameworks; other folders don't repeat them.
|
|
"base": {
|
|
"product": "FirebaseAnalytics",
|
|
"frameworks": [
|
|
"FirebaseAnalytics",
|
|
"FirebaseCore",
|
|
"FirebaseCoreInternal",
|
|
"FirebaseInstallations",
|
|
"GoogleAppMeasurement",
|
|
"GoogleAppMeasurementIdentitySupport",
|
|
"GoogleAdsOnDeviceConversion",
|
|
"GoogleUtilities",
|
|
"nanopb",
|
|
"FBLPromises"
|
|
]
|
|
},
|
|
// Restrict products to the platforms of their podspecs.
|
|
// Their Package.swift restrictions (via platform conditions on the products' wrapper targets)
|
|
// aren't inferred, and the podspecs also ship Mac Catalyst.
|
|
"platforms": {
|
|
"FirebaseAppDistribution": ["ios", "catalyst"],
|
|
"FirebaseDatabase": ["ios", "catalyst", "macos", "tvos"],
|
|
"FirebaseFirestore": ["ios", "catalyst", "macos", "tvos"],
|
|
"FirebaseInAppMessaging": ["ios", "catalyst"],
|
|
"FirebasePerformance": ["ios", "catalyst", "tvos"]
|
|
},
|
|
// TODO(#7): Bundle legacy transitive frameworks into product directories
|
|
"extraFrameworks": {
|
|
"FirebasePerformance": [
|
|
"FirebaseRemoteConfig",
|
|
"FirebaseSharedSwift"
|
|
]
|
|
}
|
|
},
|
|
|
|
"frameworks": {
|
|
// Combine GoogleUtilities-* into one GoogleUtilities framework.
|
|
"aggregate": ["GoogleUtilities"],
|
|
// Each pod packages its SwiftPM companion targets into one framework.
|
|
"merge": {
|
|
"AppCheckCore": ["AppCheckRecaptchaProvider"],
|
|
"FirebaseAuth": ["FirebaseAuthInternal"],
|
|
"FirebaseCrashlytics": ["FirebaseCrashlyticsSwift"],
|
|
"FirebaseDatabase": ["FirebaseDatabaseInternal"],
|
|
"FirebaseInAppMessaging": ["FirebaseInAppMessagingInternal", "FirebaseInAppMessaging_iOS"],
|
|
"FirebaseRemoteConfig": ["FirebaseRemoteConfigInternal"],
|
|
"FirebaseSessions": ["FirebaseSessionsObjC"]
|
|
},
|
|
"rename": {
|
|
// CocoaPods ships GTMSessionFetcher/Core as the GTMSessionFetcher module.
|
|
"GTMSessionFetcherCore": "GTMSessionFetcher",
|
|
// With source Firestore (FIREBASE_SOURCE_FIRESTORE=1, as for the dynamic zip), these give
|
|
// the legacy names, which the prebuilt binaries already have.
|
|
"FirebaseFirestoreInternalWrapper": "FirebaseFirestoreInternal",
|
|
"abseil": "absl",
|
|
"gRPC-Core": "grpc",
|
|
"gRPC-cpp": "grpcpp"
|
|
},
|
|
// The FirebaseFirestore pod's Objective-C headers forward to FirebaseFirestoreInternal, and the
|
|
// FirebaseStorage pod ships its Objective-C typedefs as public headers.
|
|
"publicHeaders": {
|
|
"FirebaseFirestore": ["FirebaseFirestoreInternal/FirebaseFirestore"],
|
|
"FirebaseStorage": ["FirebaseStorage/Typedefs"]
|
|
},
|
|
// CocoaPods ships these in PrivateHeaders/ (podspec `private_header_files`).
|
|
"privateHeaders": ["FBLPromisePrivate.h"],
|
|
// GoogleUtilities' vendored IsAppEncrypted.h is private in its podspec.
|
|
"hiddenHeaders": ["IsAppEncrypted.h"],
|
|
// Restrict frameworks to the platforms of their podspecs.
|
|
"platforms": {
|
|
"AppCheckRecaptchaProvider": ["ios", "catalyst"],
|
|
"RecaptchaInterop": ["ios", "catalyst"],
|
|
"leveldb": ["ios", "catalyst", "macos", "tvos"]
|
|
}
|
|
},
|
|
|
|
// TODO: Parity settings for the initial release.
|
|
// The settings below minimize the release diff against the legacy CocoaPods zip distribution.
|
|
// In future releases, they can be removed to ship the modernized modular SwiftPM distribution.
|
|
"build": {
|
|
// TODO(#4): Restrict watchOS device slices to [arm64, arm64_32] to match the legacy
|
|
// watchos-arm64_arm64_32 slice naming.
|
|
"architectures": {
|
|
"watchos": ["arm64", "arm64_32"]
|
|
},
|
|
// Compile the way the CocoaPods zip build did: sources check `COCOAPODS` / `FIREBASE_BUILD_ZIP_FILE`
|
|
// (e.g. GoogleUtilities reports the `zip` deployment type) instead of `SWIFT_PACKAGE`.
|
|
"defineSwiftPackage": false,
|
|
"defines": [
|
|
"COCOAPODS=1",
|
|
"FIREBASE_BUILD_ZIP_FILE=1"
|
|
],
|
|
"swiftConditions": ["COCOAPODS"],
|
|
// Podspecs build in Swift 5 mode, except FirebaseAILogic.
|
|
"swiftVersion": {
|
|
"*": "5.0",
|
|
"FirebaseAILogic": "6.0"
|
|
},
|
|
"versionMacro": "Firebase_VERSION"
|
|
},
|
|
|
|
// CocoaPods resource and privacy bundles, and Info.plist values of the legacy zip.
|
|
"layout": {
|
|
"privacyBundle": {
|
|
"*": "{target}_Privacy",
|
|
"GTMSessionFetcher": "GTMSessionFetcher_Core_Privacy"
|
|
},
|
|
"resourceBundles": {
|
|
"FirebaseInAppMessaging": "InAppMessagingDisplayResources"
|
|
},
|
|
// Works around an App Store validation failure for embedded static frameworks (#12439).
|
|
"infoPlist": {
|
|
"MinimumOSVersion": "100.0"
|
|
}
|
|
},
|
|
|
|
"zip": {
|
|
"files": [
|
|
{
|
|
"to": ".",
|
|
"files": [
|
|
// The legacy zip's README; it moves here when ReleaseTooling is retired.
|
|
"ReleaseTooling/Template/README.md",
|
|
"CoreOnly/NOTICES",
|
|
"CoreOnly/Sources/Firebase.h",
|
|
"CoreOnly/Sources/module.modulemap"
|
|
]
|
|
},
|
|
{
|
|
"to": "FirebaseCrashlytics",
|
|
"files": [
|
|
"Crashlytics/run",
|
|
"Crashlytics/upload-symbols"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
|
|
"verify": {
|
|
// Modules the import check skips: none of these import in any released zip, legacy included.
|
|
"skipImports": [
|
|
// Its module/class name clash breaks its own .swiftinterface.
|
|
"AppCheckCore",
|
|
// C++ libraries (prebuilt, or built from source for the dynamic zip) whose modules aren't
|
|
// importable from Swift or Objective-C.
|
|
"absl",
|
|
"grpc",
|
|
"grpcpp",
|
|
"openssl_grpc",
|
|
// C++-only.
|
|
"leveldb"
|
|
]
|
|
}
|
|
}
|