public void CanCorrectlyPickSymbol()
    {
        if (!AndroidBridge.AndroidExtensionsInstalled)
        {
            System.Console.WriteLine("Test ignored, because Android Support is not installed");
            return;
        }

        if (!AndroidLogcatTestsSetup.AndroidSDKAndNDKAvailable())
        {
            System.Console.WriteLine("Test ignored, SDK & NDK are not available.");
            return;
        }

        var tools            = new AndroidTools();
        var playerPackage    = BuildPipeline.GetPlaybackEngineDirectory(BuildTarget.Android, BuildOptions.None);
        var symbolsDirectory = Path.Combine(playerPackage, $"Variations/il2cpp/Development/Symbols");
        var symbolPaths      = new List <ReordableListItem>(new[] { new ReordableListItem()
                                                                    {
                                                                        Enabled = true, Name = symbolsDirectory
                                                                    } });
        var symbolPathsArmV7 = new List <ReordableListItem>(new[] { new ReordableListItem()
                                                                    {
                                                                        Enabled = true, Name = Path.Combine(symbolsDirectory, AndroidLogcatUtilities.kAbiArmV7)
                                                                    } });
        var symbolPathsArm64 = new List <ReordableListItem>(new[] { new ReordableListItem()
                                                                    {
                                                                        Enabled = true, Name = Path.Combine(symbolsDirectory, AndroidLogcatUtilities.kAbiArm64)
                                                                    } });
        var libunity = "libunity";

        AssertStringContains(libunity, AndroidLogcatUtilities.GetSymbolFile(symbolPathsArmV7, string.Empty, libunity + ".so"));
        AssertStringContains(libunity, AndroidLogcatUtilities.GetSymbolFile(symbolPathsArm64, string.Empty, libunity + ".so"));
        // Since ABI is empty, we cannot resolve symbol path, thus the result will be empty
        Assert.AreEqual(string.Empty, AndroidLogcatUtilities.GetSymbolFile(symbolPaths, string.Empty, libunity + ".so"));

        var armv7Result = AndroidLogcatUtilities.GetSymbolFile(symbolPaths, AndroidLogcatUtilities.kAbiArmV7, libunity + ".so");

        AssertStringContains(libunity, armv7Result);
        AssertStringContains(AndroidLogcatUtilities.kAbiArmV7, armv7Result);

        var arm64Result = AndroidLogcatUtilities.GetSymbolFile(symbolPaths, AndroidLogcatUtilities.kAbiArm64, libunity + ".so");

        AssertStringContains(libunity, arm64Result);
        AssertStringContains(AndroidLogcatUtilities.kAbiArm64, arm64Result);
    }
    private static string GetSymbolPath(string abi, string libraryFile)
    {
        var playerPackage = BuildPipeline.GetPlaybackEngineDirectory(BuildTarget.Android, BuildOptions.None);

        return(AndroidLogcatUtilities.GetSymbolFile(Path.Combine(playerPackage, $"Variations/il2cpp/Development/Symbols/{abi}"), libraryFile));
    }