Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] Undefined Symbols / absl: Its_20220623::variant_internal::ThrowBadVariantAccess() Error #974

Closed
providence94 opened this issue Mar 25, 2024 · 12 comments

Comments

@providence94
Copy link

providence94 commented Mar 25, 2024

[REQUIRED] Please fill in the following fields:

  • Unity editor version: 2022.3.91f1
  • Firebase Unity SDK version: 11.8
  • Source you installed the SDK: Unity Package Manager
  • Problematic Firebase Component: Cloud Firestore
  • Other Firebase Components in use: Auth , Core,App , Storage , Remote Config
  • Additional SDKs you are using: Facebook , Ironsource , GameAnalytics , DevToDev
  • Platform you are using the Unity editor on: MacBook M1 Pro
  • Platform you are targeting: iOS
  • Scripting Runtime: IL2CPP
  • Pre-built SDK from the website or open-source from this repo: _____

[REQUIRED] Please describe the issue here:

After Updating firebase to the latest version 11.8 ,
Xcode fails to build our project during the final linking stage
I thought maybe its some conflict with some other sdks we have
so I removed all the sdks and kept only firebase which failed to build
Since the error mentioned Firestore related errors , I removed Firestore from the project and commented out all the code which used Firestore and it SUCCESSFULLY built in Xcode

after which I decided to just included Firestore only in the package manager and not have any Firestore #includes
in the code.
This Project also Built SUCCESSFULLY
However when I used any firestore code in the game
the subsequent export FAILS to build.

what's very peculiar to me is that
this issue started occurring to me after a specific time

on 20th March around 1PM IST I was successfully able to build the whole project with the latest 11.8 version
but after 3PM onwards the same project fails with the below error

I have tried firebase versions from 9.6 as a way to downgrade and just get the project to build to meet our business goals
but to no avail.
We are STUCK.
We are not able to move forward.
Kindly be of assistance.

Only Android Builds work.

Steps to reproduce:

Have you been able to reproduce this issue with just the Firebase Unity quickstarts (this GitHub project)?
What's the issue repro rate? 5/5

What happened? How can we make the problem occur?
I started getting this error on Xcode during the final linking stages
316081019-4ea0a61c-50c2-4ff4-b7fb-3252d7ccb1ae

After googling and searching on the Issues here I understood that this was fixed and then I Updated to 11.8 version
after which I started getting the below error during the final linking stage in Xcode

316081297-0618450c-5b57-4087-8f23-59395cb6b9b3

@providence94
Copy link
Author

#916 (comment)

#916 (comment)

linking similar issues faced by others here

@shniqq
Copy link

shniqq commented Mar 25, 2024

FYI: Faced the same issue, found a fix for our case, see #975 (didnt see this post when starting to write that one)

@tom-andersen
Copy link
Contributor

Thank you for the report. I will look into this as soon as possible.

@tom-andersen tom-andersen self-assigned this Mar 25, 2024
@ramibadran
Copy link

Hi

we are facing the same issue as below:

We received an email from Apple requesting builds using the iOS 17 SDK or later (due date mid-April), so we proceeded accordingly. However, after upgrading to MacOS Sonoma 14.4 and Xcode 15.3, we encountered several crashes on devices running iOS 17.3 and 17.4.

To address this issue, we upgraded to Firebase SDK version 11.8.0, previously we were using version 11.6.0. Initially, this resolved the issue, and we were able to successfully build for a couple of days.

However, today, when attempting to create another build, we encountered the attached errors and are unable to proceed further with the build process. We attempted to downgrade to version 11.7.0, but encountered the same error with that version as well.

would you please give advice or help in getting out of this?

Screenshot 2024-03-27 at 1 42 25 AM

@a-maurice
Copy link
Collaborator

Hi all,

We are investigating this, trying to figure out why this error arose on builds that were seemingly fine before, and seeing if there are any solutions / workarounds available.

@providence94
Copy link
Author

providence94 commented Mar 27, 2024

@shniqq
hey !
your fix worked for me
I just had to do a verbose and manual pod install to see which pods were being installed , find the mismatched pod versions of firebase
and then Modify the script you provided with the correct libraries and force the version.

I have also added a pod script in the below code which signs the relevant files in the pod file which needs selection of development team and signing as now there are many files that needs individual selection of team and signing

@ramibadran - maybe these will work you

`List _firebaseDependencies = new()
{
"FirebaseABTesting",
"FirebaseAppCheckInterop",
"FirebaseAuthInterop",
"FirebaseCoreExtension",
"FirebaseCoreInternal",
"FirebaseFirestoreInternal",
"FirebaseMessagingInterop",
"FirebaseInstallations",
"FirebaseSharedSwift",
};
var podfileContent = File.ReadAllLines(buildPath + "/Podfile").ToList();
var indexOfEndOfDependencies = podfileContent.FindIndex(line => line.Contains("end"));

    const string dependencyVersion = "'10.22.0'";

    foreach (var firebaseDependency in _firebaseDependencies)
    {
        podfileContent.Insert(indexOfEndOfDependencies,
            $"  pod '{firebaseDependency}', {dependencyVersion}");
    }

    var podfileContentCombined = podfileContent
        .Aggregate(string.Empty, (a, b) => a + b + Environment.NewLine);
    File.WriteAllText(buildPath + "/Podfile", podfileContentCombined);
    using (StreamWriter sw = File.AppendText( buildPath + "/Podfile" ))
    {
        sw.WriteLine("post_install do |installer|");
        sw.WriteLine("installer.pods_project.targets.each do |target|");
        sw.WriteLine("target_is_resource_bundle = target.respond_to?(:product_type) && target.product_type == 'com.apple.product-type.bundle'");
        sw.WriteLine("target.build_configurations.each do |config|");
        sw.WriteLine("if target_is_resource_bundle");
        sw.WriteLine($"config.build_settings[\"DEVELOPMENT_TEAM\"] = \"{PlayerSettings.iOS.appleDeveloperTeamID}\"");
        sw.WriteLine("end\nend\nend");
        sw.WriteLine("end");
    }`

@ramibadran
Copy link

ramibadran commented Mar 27, 2024

@shniqq Hi

I tried this solution. Didn't help. I tried making all to 10.22.0, and also making all to 10.23.0. But same error in both cases
also tried with deleting Podfile.lock file and again making pod install
same error and nothing works

attached our Podfile.lock
Podfile.txt

cc @palashSpoilz

@a-maurice
Copy link
Collaborator

a-maurice commented Mar 27, 2024

Hey all,

So the issue is that the Firestore Unity SDK depends on a specific version of the Firestore iOS SDK, and it is incorrectly pulling in the wrong version of FirebaseFirestoreInternal (which contains an update to gRPC/absl, which is why it is getting undefined symbols in those libraries).

So, for a workaround what you can do is either:
In the Podfile generated by Unity, add the line:
pod 'FirebaseFirestoreInternal', '10.22.0'
alongside the other pods that are listed.

Or, in the Unity project, if you imported via the unityPackage, you should have a file at Assets/Firebase/Editor/FirestoreDependencies.xml
In that file add the following line below the Firebase/Firestore one:
<iosPod name="FirebaseFirestoreInternal" version="10.22.0" minTargetSdk="8.0"></iosPod>
That should result in the Podfile generating the same line mentioned in the first workaround.

Finally, if you imported the library via a package manager such that it is under Packages, what you can do is create the FirestoreDependencies.xml file mentioned above yourself, and just set that line above as the only pod. That should then get included in the set of Dependencies.xml files, and get added to the generated Podfile.

@ramibadran
Copy link

HI @a-maurice

yes your solution working fine,we have applied it and all is well.
Thank you very much

@mianumar
Copy link

Hey all,

So the issue is that the Firestore Unity SDK depends on a specific version of the Firestore iOS SDK, and it is incorrectly pulling in the wrong version of FirebaseFirestoreInternal (which contains an update to gRPC/absl, which is why it is getting undefined symbols in those libraries).

So, for a workaround what you can do is either: In the Podfile generated by Unity, add the line: pod 'FirebaseFirestoreInternal', '10.22.0' alongside the other pods that are listed.

Or, in the Unity project, if you imported via the unityPackage, you should have a file at Assets/Firebase/Editor/FirestoreDependencies.xml In that file add the following line below the Firebase/Firestore one: <iosPod name="FirebaseFirestoreInternal" version="10.22.0" minTargetSdk="8.0"></iosPod> That should result in the Podfile generating the same line mentioned in the first workaround.

Finally, if you imported the library via a package manager such that it is under Packages, what you can do is create the FirestoreDependencies.xml file mentioned above yourself, and just set that line above as the only pod. That should then get included in the set of Dependencies.xml files, and get added to the generated Podfile.

Thanks a lot. It actually Solved my issue.

@Cabskee
Copy link

Cabskee commented Mar 29, 2024

I tried the FirestoreDependencies.xml workaround and unfortunately it did not fix, I am still getting the undefined issues.

@a-maurice
Copy link
Collaborator

Alright, we have a new release out that should help address this: https://github.com/firebase/firebase-unity-sdk/releases/tag/v11.8.1

Note that this release is assuming that it be pulling in:
Firebase/Firestore @ 10.22.0
FirebaseFirestoreInternal @ 10.23.0

So if you had done the workaround of pinning the FirebaseFirestoreInternal version, you will want to undo that when using this release. The next minor version, which should be 11.9.0, will keep those two versions in sync with each other, but that relies on some changes in the cocoapods that will take a while, so this hotfix should help in the meantime. I will close this issue, since either the workaround or hotfix should work for everyone affected. Thanks for bringing this to our attention, and for the folks that provided the Podfile.lock, as that was very helpful.

@firebase firebase locked and limited conversation to collaborators Apr 29, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

9 participants