firebase / firebase-ios-sdk

Firebase SDK for Apple App Development
https://firebase.google.com
Apache License 2.0
5.53k stars 1.44k forks source link

[Error] Type 'NSData' has no member 'gul_data' #12949

Closed Shyam-halodoc closed 3 months ago

Shyam-halodoc commented 3 months ago

Description

Encountering a build-time error in FirebaseCore. The error message states: Type 'NSData' has no member 'gul_data'

This issue only occurs when GoogleUtilities is at v7.13.3. It worked fine with previous versions..

/xxx/project-name/Tuist/Dependencies/SwiftPackageManager/.build/checkouts/firebase-ios-sdk/FirebaseCore/Internal/Sources/HeartbeatLogging/HeartbeatsPayload.swift:176:16: error: type 'NSData' has no member 'gul_data'
    try NSData.gul_data(byGzippingData: self)
        ~~~~~~ ^~~~~~~~
/xxx/project-name/Tuist/Dependencies/SwiftPackageManager/.build/checkouts/firebase-ios-sdk/FirebaseCore/Internal/Sources/HeartbeatLogging/HeartbeatsPayload.swift:183:16: error: type 'NSData' has no member 'gul_data'
    try NSData.gul_data(byInflatingGzippedData: self)
Screenshot 2024-05-11 at 11 03 06 AM

Reproducing the issue

No response

Firebase SDK Version

10.19.1

Xcode Version

15.1

Installation Method

Swift Package Manager

Firebase Product(s)

AB Testing, Analytics, Crashlytics, Remote Config

Targeted Platforms

iOS

Relevant Log Output

No response

If using Swift Package Manager, the project's Package.resolved

Expand Package.resolved snippet
```json { "pins" : [ { "identity" : "abseil-cpp-binary", "kind" : "remoteSourceControl", "location" : "https://github.com/google/abseil-cpp-binary.git", "state" : { "revision" : "df308b8b46607675f2b9ec8e569109008f9155ce", "version" : "1.2022062300.1" } }, { "identity" : "alamofire", "kind" : "remoteSourceControl", "location" : "https://github.com/Alamofire/Alamofire.git", "state" : { "revision" : "3dc6a42c7727c49bf26508e29b0a0b35f9c7e1ad", "version" : "5.8.1" } }, { "identity" : "alamofireimage", "kind" : "remoteSourceControl", "location" : "https://github.com/Alamofire/AlamofireImage.git", "state" : { "revision" : "1eaf3b6c6882bed10f6e7b119665599dd2329aa1", "version" : "4.3.0" } }, { "identity" : "amplitude-ios", "kind" : "remoteSourceControl", "location" : "https://github.com/amplitude/Amplitude-iOS.git", "state" : { "revision" : "d4a71f3e06b5108696ca7b33567d0fc539597d82", "version" : "8.18.3" } }, { "identity" : "analytics-connector-ios", "kind" : "remoteSourceControl", "location" : "https://github.com/amplitude/analytics-connector-ios.git", "state" : { "revision" : "e2ca17ac735bcbc48b13062484541702ef45153d", "version" : "1.0.3" } }, { "identity" : "app-check", "kind" : "remoteSourceControl", "location" : "https://github.com/google/app-check.git", "state" : { "revision" : "7d2688de038d5484866d835acb47b379722d610e", "version" : "10.19.0" } }, { "identity" : "appsflyerframework", "kind" : "remoteSourceControl", "location" : "https://github.com/AppsFlyerSDK/AppsFlyerFramework.git", "state" : { "revision" : "e735a8f7e287c3252353a0c26664e07c084f72bf", "version" : "6.13.2" } }, { "identity" : "cache", "kind" : "remoteSourceControl", "location" : "https://github.com/hyperoslo/Cache.git", "state" : { "revision" : "f44a8f6b5ec27730198725ccc542fef0d1cc6b3d", "version" : "7.1.0" } }, { "identity" : "cocoamqtt", "kind" : "remoteSourceControl", "location" : "https://github.com/emqx/CocoaMQTT.git", "state" : { "revision" : "990303d3549d4284fadd6c83ff8480e6ab0b4d42", "version" : "2.1.6" } }, { "identity" : "collectionconcurrencykit", "kind" : "remoteSourceControl", "location" : "https://github.com/JohnSundell/CollectionConcurrencyKit.git", "state" : { "revision" : "b4f23e24b5a1bff301efc5e70871083ca029ff95", "version" : "0.2.0" } }, { "identity" : "consistencymanager", "kind" : "remoteSourceControl", "location" : "https://github.com/plivesey/ConsistencyManager", "state" : { "branch" : "master", "revision" : "911c519e5633826323ebad0e17125ab2ada4388a" } }, { "identity" : "cryptoswift", "kind" : "remoteSourceControl", "location" : "https://github.com/krzyzanowskim/CryptoSwift.git", "state" : { "revision" : "32f641cf24fc7abc1c591a2025e9f2f572648b0f", "version" : "1.7.2" } }, { "identity" : "cucumberish", "kind" : "remoteSourceControl", "location" : "https://github.com/Ahmed-Ali/Cucumberish.git", "state" : { "revision" : "e7b371812f6906a8cdaecdf5fb32327f9bb446ac" } }, { "identity" : "cwlcatchexception", "kind" : "remoteSourceControl", "location" : "https://github.com/mattgallagher/CwlCatchException.git", "state" : { "revision" : "3ef6999c73b6938cc0da422f2c912d0158abb0a0", "version" : "2.2.0" } }, { "identity" : "cwlpreconditiontesting", "kind" : "remoteSourceControl", "location" : "https://github.com/mattgallagher/CwlPreconditionTesting.git", "state" : { "revision" : "2ef56b2caf25f55fa7eef8784c30d5a767550f54", "version" : "2.2.1" } }, { "identity" : "deepdiff", "kind" : "remoteSourceControl", "location" : "https://github.com/onmyway133/DeepDiff.git", "state" : { "revision" : "2639b3a11054d666a4c5ec1b7dd2808e437f3289", "version" : "2.3.3" } }, { "identity" : "firebase-ios-sdk", "kind" : "remoteSourceControl", "location" : "https://github.com/firebase/firebase-ios-sdk.git", "state" : { "revision" : "c60c958e707c50a9cf8bcb7cfd7d51c566d726c5", "version" : "10.19.1" } }, { "identity" : "flex", "kind" : "remoteSourceControl", "location" : "https://github.com/FLEXTool/FLEX.git", "state" : { "revision" : "e0acf59d06d498041f65bbea1e5914b6e4b39733", "version" : "5.22.10" } }, { "identity" : "googleappmeasurement", "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleAppMeasurement.git", "state" : { "revision" : "6b332152355c372ace9966d8ee76ed191f97025e", "version" : "10.17.0" } }, { "identity" : "googledatatransport", "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleDataTransport.git", "state" : { "revision" : "a637d318ae7ae246b02d7305121275bc75ed5565", "version" : "9.4.0" } }, { "identity" : "googleutilities", "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleUtilities.git", "state" : { "revision" : "57a1d307f42df690fdef2637f3e5b776da02aad6", "version" : "7.13.3" } }, { "identity" : "grpc-binary", "kind" : "remoteSourceControl", "location" : "https://github.com/google/grpc-binary.git", "state" : { "revision" : "ea4cb5cc0c39c732b85386263116d2e2fdbbdc61", "version" : "1.49.2" } }, { "identity" : "gtm-session-fetcher", "kind" : "remoteSourceControl", "location" : "https://github.com/google/gtm-session-fetcher.git", "state" : { "revision" : "0382ca27f22fb3494cf657d8dc356dc282cd1193", "version" : "3.4.1" } }, { "identity" : "interop-ios-for-google-sdks", "kind" : "remoteSourceControl", "location" : "https://github.com/google/interop-ios-for-google-sdks.git", "state" : { "revision" : "2d12673670417654f08f5f90fdd62926dc3a2648", "version" : "100.0.0" } }, { "identity" : "iqkeyboardmanager", "kind" : "remoteSourceControl", "location" : "https://github.com/hackiftekhar/IQKeyboardManager.git", "state" : { "revision" : "c00b1ae9fa1ad8af4465bb6ca901f6943fc98eba", "version" : "6.5.16" } }, { "identity" : "leveldb", "kind" : "remoteSourceControl", "location" : "https://github.com/firebase/leveldb.git", "state" : { "revision" : "a0bc79961d7be727d258d33d5a6b2f1023270ba1", "version" : "1.22.5" } }, { "identity" : "marqueelabel", "kind" : "remoteSourceControl", "location" : "https://github.com/cbpowell/MarqueeLabel", "state" : { "revision" : "877e810534cda9afabb8143ae319b7c3341b121b", "version" : "4.5.0" } }, { "identity" : "material-showcase-ios", "kind" : "remoteSourceControl", "location" : "https://github.com/aromajoin/material-showcase-ios.git", "state" : { "revision" : "0a4be88526187c46dba58c1fd1c1cdb8ad1225c5", "version" : "0.8.0" } }, { "identity" : "mqttcocoaasyncsocket", "kind" : "remoteSourceControl", "location" : "https://github.com/leeway1208/MqttCocoaAsyncSocket.git", "state" : { "revision" : "ce3e18607fd01079495f86ff6195d8a3ca469f73", "version" : "1.0.8" } }, { "identity" : "nanopb", "kind" : "remoteSourceControl", "location" : "https://github.com/firebase/nanopb.git", "state" : { "revision" : "819d0a2173aff699fb8c364b6fb906f7cdb1a692", "version" : "2.30909.0" } }, { "identity" : "nimble", "kind" : "remoteSourceControl", "location" : "https://github.com/Quick/Nimble.git", "state" : { "revision" : "efe11bbca024b57115260709b5c05e01131470d0", "version" : "13.2.1" } }, { "identity" : "notificationbanner", "kind" : "remoteSourceControl", "location" : "https://github.com/Daltron/NotificationBanner.git", "state" : { "revision" : "1406ac60bcab58074fc969e9b4cb804679832c8e", "version" : "3.2.1" } }, { "identity" : "percy-xcui-swift", "kind" : "remoteSourceControl", "location" : "https://github.com/percy/percy-xcui-swift.git", "state" : { "revision" : "a2e9a86dfc3f5b69ef53cbda28a0ea71098c9f77", "version" : "1.0.0" } }, { "identity" : "promisekit", "kind" : "remoteSourceControl", "location" : "https://github.com/mxcl/PromiseKit.git", "state" : { "revision" : "cb70b070cde06837cd10a1febdf6105c1a3bb348", "version" : "8.1.1" } }, { "identity" : "promises", "kind" : "remoteSourceControl", "location" : "https://github.com/google/promises.git", "state" : { "revision" : "e70e889c0196c76d22759eb50d6a0270ca9f1d9e", "version" : "2.3.1" } }, { "identity" : "pull-to-refresh", "kind" : "remoteSourceControl", "location" : "https://github.com/eggswift/pull-to-refresh.git", "state" : { "revision" : "a858aaeb44abc6428af916e8496429d244fac053", "version" : "2.9.3" } }, { "identity" : "qiscuscore-ios", "kind" : "remoteSourceControl", "location" : "https://github.com/qiscus/QiscusCore-iOS.git", "state" : { "revision" : "436eb1ce73b5d15819b9eccba01d575b0654789f", "version" : "1.10.6" } }, { "identity" : "qiscusrealtime-ios", "kind" : "remoteSourceControl", "location" : "https://github.com/qiscus/QiscusRealtime-iOS.git", "state" : { "revision" : "81ea3fa09599f787daafb6930682091fafdcf674", "version" : "1.7.1" } }, { "identity" : "reachability.swift", "kind" : "remoteSourceControl", "location" : "https://github.com/ashleymills/Reachability.swift.git", "state" : { "revision" : "7b7018a69c84ea94ac2a38dff626e16ea81d1db9", "version" : "5.2.1" } }, { "identity" : "realm-core", "kind" : "remoteSourceControl", "location" : "https://github.com/realm/realm-core", "state" : { "revision" : "7227d6a447821c28895daa099b6c7cd4c99d461b", "version" : "13.25.1" } }, { "identity" : "realm-swift", "kind" : "remoteSourceControl", "location" : "https://github.com/realm/realm-swift.git", "state" : { "revision" : "569c656a8494ad03d790fd1075338c1da92d495a", "version" : "10.45.2" } }, { "identity" : "reswift", "kind" : "remoteSourceControl", "location" : "https://github.com/ReSwift/ReSwift.git", "state" : { "revision" : "cb5c3c02f652420ef413dea41e13ac5a76b6c0fd", "version" : "6.1.1" } }, { "identity" : "rocketdata", "kind" : "remoteSourceControl", "location" : "https://github.com/plivesey/RocketData.git", "state" : { "revision" : "91f729200be2afecb752ac527421c24ed16c89b2" } }, { "identity" : "sentry-cocoa", "kind" : "remoteSourceControl", "location" : "https://github.com/getsentry/sentry-cocoa.git", "state" : { "revision" : "0da9c56283b8aada5ef05b16b6cbd6c2790872c4", "version" : "8.25.2" } }, { "identity" : "skeletonui", "kind" : "remoteSourceControl", "location" : "https://github.com/CSolanaM/SkeletonUI.git", "state" : { "revision" : "d5c8a4f62be6a631bd4fe1922505eb34e82e5b4e", "version" : "2.0.1" } }, { "identity" : "skeletonview", "kind" : "remoteSourceControl", "location" : "https://github.com/Juanpe/SkeletonView.git", "state" : { "revision" : "cb4d48d603b650808677f2ddb381b05261b94a16", "version" : "1.30.3" } }, { "identity" : "snapkit", "kind" : "remoteSourceControl", "location" : "https://github.com/SnapKit/SnapKit", "state" : { "revision" : "f222cbdf325885926566172f6f5f06af95473158", "version" : "5.6.0" } }, { "identity" : "sourcekitten", "kind" : "remoteSourceControl", "location" : "https://github.com/jpsim/SourceKitten.git", "state" : { "revision" : "b6dc09ee51dfb0c66e042d2328c017483a1a5d56", "version" : "0.34.1" } }, { "identity" : "starscream", "kind" : "remoteSourceControl", "location" : "https://github.com/daltoniam/Starscream.git", "state" : { "revision" : "a063fda2b8145a231953c20e7a646be254365396", "version" : "3.1.2" } }, { "identity" : "swift-argument-parser", "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-argument-parser.git", "state" : { "revision" : "8f4d2753f0e4778c76d5f05ad16c74f707390531", "version" : "1.2.3" } }, { "identity" : "swift-protobuf", "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-protobuf.git", "state" : { "revision" : "9f0c76544701845ad98716f3f6a774a892152bcb", "version" : "1.26.0" } }, { "identity" : "swift-snapshot-testing", "kind" : "remoteSourceControl", "location" : "https://github.com/pointfreeco/swift-snapshot-testing", "state" : { "revision" : "625ccca8570773dd84a34ee51a81aa2bc5a4f97a", "version" : "1.16.0" } }, { "identity" : "swift-syntax", "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-syntax.git", "state" : { "revision" : "74203046135342e4a4a627476dd6caf8b28fe11b", "version" : "509.0.0" } }, { "identity" : "swiftlint", "kind" : "remoteSourceControl", "location" : "https://github.com/realm/SwiftLint.git", "state" : { "revision" : "6d2e58271ebc14c37bf76d7c9f4082cc15bad718", "version" : "0.53.0" } }, { "identity" : "swiftybeaver", "kind" : "remoteSourceControl", "location" : "https://github.com/SwiftyBeaver/SwiftyBeaver.git", "state" : { "revision" : "1080914828ef1c9ca9cd2bad50667b3d847dabff", "version" : "2.0.0" } }, { "identity" : "swiftyjson", "kind" : "remoteSourceControl", "location" : "https://github.com/SwiftyJSON/SwiftyJSON.git", "state" : { "revision" : "af76cf3ef710b6ca5f8c05f3a31307d44a3c5828", "version" : "5.0.2" } }, { "identity" : "swiftytexttable", "kind" : "remoteSourceControl", "location" : "https://github.com/scottrhoyt/SwiftyTextTable.git", "state" : { "revision" : "c6df6cf533d120716bff38f8ff9885e1ce2a4ac3", "version" : "0.9.0" } }, { "identity" : "swiftytimer", "kind" : "remoteSourceControl", "location" : "https://github.com/janlionly/SwiftyTimer.git", "state" : { "revision" : "cd1c75bc1b72b7a7224ad8e8197b97d367aadbcf", "version" : "2.1.1" } }, { "identity" : "swinject", "kind" : "remoteSourceControl", "location" : "https://github.com/Swinject/Swinject.git", "state" : { "revision" : "463cb2d659c8ae34899d18057ea5b1bb86fc3178", "version" : "2.8.4" } }, { "identity" : "swxmlhash", "kind" : "remoteSourceControl", "location" : "https://github.com/drmohundro/SWXMLHash.git", "state" : { "revision" : "a853604c9e9a83ad9954c7e3d2a565273982471f", "version" : "7.0.2" } }, { "identity" : "veritrans-ios-sdk", "kind" : "remoteSourceControl", "location" : "https://github.com/veritrans/Veritrans-ios-sdk.git", "state" : { "revision" : "a5239cf20a2d76284d56479e58c58846bd5ac103", "version" : "1.24.1" } }, { "identity" : "xendit-sdk-ios-src", "kind" : "remoteSourceControl", "location" : "https://github.com/xendit/xendit-sdk-ios-src.git", "state" : { "revision" : "89bef0e096e2ee7b041be20f0ea551255aaf5ac4", "version" : "3.8.2" } }, { "identity" : "yams", "kind" : "remoteSourceControl", "location" : "https://github.com/jpsim/Yams.git", "state" : { "revision" : "9234124cff5e22e178988c18d8b95a8ae8007f76", "version" : "5.1.2" } }, { "identity" : "ymchatbot-ios", "kind" : "remoteSourceControl", "location" : "https://github.com/yellowmessenger/YMChatbot-iOS.git", "state" : { "revision" : "d7e41167fee13f79497de83f270dedd7aa07b397", "version" : "1.17.0" } }, { "identity" : "zip", "kind" : "remoteSourceControl", "location" : "https://github.com/marmelroy/Zip.git", "state" : { "revision" : "67fa55813b9e7b3b9acee9c0ae501def28746d76", "version" : "2.1.2" } } ], "version" : 2 } ```

If using CocoaPods, the project's Podfile.lock

Expand Podfile.lock snippet
```yml Replace this line with the contents of your Podfile.lock! ```
google-oss-bot commented 3 months ago

I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.

paulb777 commented 3 months ago

Sorry about the trouble. Nothing about the gul_data extension changed in 7.13.3. I recommend cleaning all build artifacts and retrying. Otherwise we'll likely need a reproducible example without Tuist to help.

jslew commented 3 months ago

Same happening to me. Also tuist.

onavidad commented 3 months ago

same here.

ajkolean commented 3 months ago

It seems that GoogleUtilities 7.13.3 introduced resource processing for the PrivacyManifest. Tuist 4 appears to manage this update adequately. Alternatively, you might consider pinning the GoogleUtilities version to an earlier release. Currently, this SDK specifies a version range for GoogleUtilities from "7.12.1" ..< "8.0.0".

In your Dependency.swift, you could specify the dependency as follows to fix the version:

.remote(url: "https://github.com/google/GoogleUtilities.git", requirement: .exact("7.13.2"))

I am guessing it has something with it now having resources so it can't be linked as a static framework anymore. I’m still getting acquainted with Tuist and its intricacies, so there might be nuances I’m missing—particularly regarding the implications of linking resources in what used to be a static framework setup. Maybe someone else has more insight.

jslew commented 3 months ago

Good info, thanks

On Mon, May 13, 2024 at 7:01 PM Andy Kolean @.***> wrote:

It seems that GoogleUtilities 7.13.3 https://github.com/google/GoogleUtilities/compare/7.13.2...7.13.3 introduced resource processing for the PrivacyManifest. Tuist 4 appears to manage this update adequately. Alternatively, you might consider pinning the GoogleUtilities version to an earlier release. Currently, this SDK specifies a version range for GoogleUtilities from "7.12.1" ..< "8.0.0" https://github.com/firebase/firebase-ios-sdk/blob/main/Package.swift.

In your Dependency.swift, you could specify the dependency as follows to fix the version:

.remote(url: "https://github.com/google/GoogleUtilities.git", requirement: .exact("7.13.2"))

I am guessing it has something with it now having resources so it can't be linked as a static framework anymore. I’m still getting acquainted with Tuist and its intricacies, so there might be nuances I’m missing—particularly regarding the implications of linking resources in what used to be a static framework setup. Maybe someone else has more insight.

— Reply to this email directly, view it on GitHub https://github.com/firebase/firebase-ios-sdk/issues/12949#issuecomment-2108944942, or unsubscribe https://github.com/notifications/unsubscribe-auth/AC3T5WA2KFQ7SVEDX7EFG6DZCFA3VAVCNFSM6AAAAABHRVYRKKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMBYHE2DIOJUGI . You are receiving this because you commented.Message ID: @.***>

paulb777 commented 3 months ago

Going to close, since this looks like a Tuist issue or usability question. Feel free to continue the conversation here.