fixes, improvements. firebase

This commit is contained in:
Savya Bikram Shah
2026-06-01 13:15:40 +05:45
parent 384176fdcc
commit 6f79bcd018
180 changed files with 25324 additions and 9393 deletions

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 92fb8dee4b9814d298c0f231de1e55e0
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
<!-- Copyright (C) 2019 Google Inc. All Rights Reserved.
FirebaseAnalytics iOS and Android Dependencies.
-->
<dependencies>
<remoteSwiftPackage url="https://github.com/firebase/firebase-ios-sdk.git" version="12.13.0">
<swiftPackage name="FirebaseAnalytics" replacesPod="Firebase/Analytics"/>
</remoteSwiftPackage>
<iosPods>
<iosPod name="Firebase/Analytics" version="12.13.0" minTargetSdk="15.0">
</iosPod>
</iosPods>
<androidPackages>
<androidPackage spec="com.google.firebase:firebase-analytics:23.2.0">
</androidPackage>
<androidPackage spec="com.google.firebase:firebase-analytics-unity:13.11.0">
<repositories>
<repository>Assets/Firebase/m2repository</repository>
</repositories>
</androidPackage>
</androidPackages>
</dependencies>

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 1e3c2da79be842cd838a9ddd70d20fa9
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Editor/AnalyticsDependencies.xml
timeCreated: 1480838400
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,27 @@
<!-- Copyright (C) 2019 Google Inc. All Rights Reserved.
FirebaseApp iOS and Android Dependencies.
-->
<dependencies>
<remoteSwiftPackage url="https://github.com/firebase/firebase-ios-sdk.git" version="12.13.0">
<swiftPackage name="FirebaseCore" replacesPod="Firebase/Core"/>
</remoteSwiftPackage>
<iosPods>
<iosPod name="Firebase/Core" version="12.13.0" minTargetSdk="15.0">
</iosPod>
</iosPods>
<androidPackages>
<androidPackage spec="com.google.firebase:firebase-common:22.0.1">
</androidPackage>
<androidPackage spec="com.google.firebase:firebase-analytics:23.2.0">
</androidPackage>
<androidPackage spec="com.google.android.gms:play-services-base:18.10.0">
</androidPackage>
<androidPackage spec="com.google.firebase:firebase-app-unity:13.11.0">
<repositories>
<repository>Assets/Firebase/m2repository</repository>
</repositories>
</androidPackage>
</androidPackages>
</dependencies>

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9b63af95d9364af4a3d8ce58738b6223
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Editor/AppDependencies.xml
timeCreated: 1480838400
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,25 @@
<!-- Copyright (C) 2019 Google Inc. All Rights Reserved.
FirebaseCrashlytics iOS and Android Dependencies.
-->
<dependencies>
<remoteSwiftPackage url="https://github.com/firebase/firebase-ios-sdk.git" version="12.13.0">
<swiftPackage name="FirebaseCrashlytics" replacesPod="Firebase/Crashlytics"/>
</remoteSwiftPackage>
<iosPods>
<iosPod name="Firebase/Crashlytics" version="12.13.0" minTargetSdk="15.0">
</iosPod>
</iosPods>
<androidPackages>
<androidPackage spec="com.google.firebase:firebase-crashlytics-ndk:20.0.6">
</androidPackage>
<androidPackage spec="com.google.firebase:firebase-analytics:23.2.0">
</androidPackage>
<androidPackage spec="com.google.firebase:firebase-crashlytics-unity:13.11.0">
<repositories>
<repository>Assets/Firebase/m2repository</repository>
</repositories>
</androidPackage>
</androidPackages>
</dependencies>

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: be690db6bda046a89e38b20ef9bfe06c
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Editor/CrashlyticsDependencies.xml
timeCreated: 1480838400
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,67 @@
fileFormatVersion: 2
guid: 3781f2218eef4d5a823dba406baa434b
labels:
- gvh
- gvh_targets-editor
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Editor/Firebase.Crashlytics.Editor.dll
PluginImporter:
externalObjects: {}
serializedVersion: 3
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 0
platformData:
Android:
enabled: 0
settings:
CPU: AnyCPU
Any:
enabled: 0
settings: {}
Editor:
enabled: 1
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
Linux64:
enabled: 0
settings:
CPU: None
OSXUniversal:
enabled: 0
settings:
CPU: None
WebGL:
enabled: 0
settings: {}
Win:
enabled: 0
settings:
CPU: None
Win64:
enabled: 0
settings:
CPU: None
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
iOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
tvOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,67 @@
fileFormatVersion: 2
guid: 9f2edbf81053418f879076c05f816dc2
labels:
- gvh
- gvh_targets-editor
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Editor/Firebase.Editor.dll
PluginImporter:
externalObjects: {}
serializedVersion: 3
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 0
platformData:
Android:
enabled: 0
settings:
CPU: AnyCPU
Any:
enabled: 0
settings: {}
Editor:
enabled: 1
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
Linux64:
enabled: 0
settings:
CPU: None
OSXUniversal:
enabled: 0
settings:
CPU: None
WebGL:
enabled: 0
settings: {}
Win:
enabled: 0
settings:
CPU: None
Win64:
enabled: 0
settings:
CPU: None
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
iOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
tvOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,72 @@
Assets/Editor Default Resources/Firebase/fb_analytics.png
Assets/Editor Default Resources/Firebase/fb_analytics_dark.png
Assets/Editor Default Resources/Firebase/fb_auth.png
Assets/Editor Default Resources/Firebase/fb_auth_dark.png
Assets/Editor Default Resources/Firebase/fb_cloud_messaging.png
Assets/Editor Default Resources/Firebase/fb_cloud_messaging_dark.png
Assets/Editor Default Resources/Firebase/fb_config.png
Assets/Editor Default Resources/Firebase/fb_config_dark.png
Assets/Editor Default Resources/Firebase/fb_crashlytics.png
Assets/Editor Default Resources/Firebase/fb_crashlytics_dark.png
Assets/Editor Default Resources/Firebase/fb_database.png
Assets/Editor Default Resources/Firebase/fb_database_dark.png
Assets/Editor Default Resources/Firebase/fb_functions.png
Assets/Editor Default Resources/Firebase/fb_functions_dark.png
Assets/Editor Default Resources/Firebase/fb_storage.png
Assets/Editor Default Resources/Firebase/fb_storage_dark.png
Assets/Editor Default Resources/Firebase/firebase_lockup.png
Assets/Editor Default Resources/Firebase/firebase_lockup_dark.png
Assets/ExternalDependencyManager/Editor/1.2.187/Google.IOSResolver.dll
Assets/ExternalDependencyManager/Editor/1.2.187/Google.IOSResolver.pdb
Assets/ExternalDependencyManager/Editor/1.2.187/Google.JarResolver.dll
Assets/ExternalDependencyManager/Editor/1.2.187/Google.JarResolver.pdb
Assets/ExternalDependencyManager/Editor/1.2.187/Google.PackageManagerResolver.dll
Assets/ExternalDependencyManager/Editor/1.2.187/Google.PackageManagerResolver.pdb
Assets/ExternalDependencyManager/Editor/1.2.187/Google.VersionHandlerImpl.dll
Assets/ExternalDependencyManager/Editor/1.2.187/Google.VersionHandlerImpl.pdb
Assets/ExternalDependencyManager/Editor/CHANGELOG.md
Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll
Assets/ExternalDependencyManager/Editor/Google.VersionHandler.pdb
Assets/ExternalDependencyManager/Editor/LICENSE
Assets/ExternalDependencyManager/Editor/README.md
Assets/ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.187_manifest.txt
Assets/Firebase/Editor/AnalyticsDependencies.xml
Assets/Firebase/Editor/AppDependencies.xml
Assets/Firebase/Editor/Firebase.Editor.dll
Assets/Firebase/Editor/Firebase.Editor.pdb
Assets/Firebase/Editor/generate_xml_from_google_services_json.exe
Assets/Firebase/Editor/generate_xml_from_google_services_json.py
Assets/Firebase/FirebaseApp/Internal/AssemblyInfo.cs
Assets/Firebase/FirebaseApp/Internal/Firebase.App.Internal.asmdef
Assets/Firebase/FirebaseApp/Internal/FirebaseInterops.cs
Assets/Firebase/FirebaseApp/Internal/HttpHelpers.cs
Assets/Firebase/FirebaseApp/Internal/link.xml
Assets/Firebase/Plugins/Firebase.Analytics.dll
Assets/Firebase/Plugins/Firebase.Analytics.pdb
Assets/Firebase/Plugins/Firebase.App.dll
Assets/Firebase/Plugins/Firebase.App.pdb
Assets/Firebase/Plugins/Firebase.Platform.dll
Assets/Firebase/Plugins/Firebase.Platform.pdb
Assets/Firebase/Plugins/Firebase.TaskExtension.dll
Assets/Firebase/Plugins/Firebase.TaskExtension.pdb
Assets/Firebase/Plugins/Google.MiniJson.dll
Assets/Firebase/Plugins/iOS/Firebase.Analytics.dll
Assets/Firebase/Plugins/iOS/Firebase.Analytics.pdb
Assets/Firebase/Plugins/iOS/Firebase.App.dll
Assets/Firebase/Plugins/iOS/Firebase.App.pdb
Assets/Firebase/Plugins/x86_64/FirebaseCppAnalytics.bundle
Assets/Firebase/Plugins/x86_64/FirebaseCppAnalytics.dll
Assets/Firebase/Plugins/x86_64/FirebaseCppAnalytics.so
Assets/Firebase/Plugins/x86_64/FirebaseCppApp-13_11_0.bundle
Assets/Firebase/Plugins/x86_64/FirebaseCppApp-13_11_0.dll
Assets/Firebase/Plugins/x86_64/FirebaseCppApp-13_11_0.so
Assets/Firebase/m2repository/com/google/firebase/firebase-analytics-unity/13.11.0/firebase-analytics-unity-13.11.0.pom
Assets/Firebase/m2repository/com/google/firebase/firebase-analytics-unity/13.11.0/firebase-analytics-unity-13.11.0.srcaar
Assets/Firebase/m2repository/com/google/firebase/firebase-analytics-unity/maven-metadata.xml
Assets/Firebase/m2repository/com/google/firebase/firebase-app-unity/13.11.0/firebase-app-unity-13.11.0.pom
Assets/Firebase/m2repository/com/google/firebase/firebase-app-unity/13.11.0/firebase-app-unity-13.11.0.srcaar
Assets/Firebase/m2repository/com/google/firebase/firebase-app-unity/maven-metadata.xml
Assets/Plugins/iOS/Firebase/libFirebaseCppAnalytics.a
Assets/Plugins/iOS/Firebase/libFirebaseCppApp.a
Assets/Plugins/tvOS/Firebase/libFirebaseCppAnalytics.a
Assets/Plugins/tvOS/Firebase/libFirebaseCppApp.a

View File

@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: a9a3a847307045ea83fa26ebe0fee848
labels:
- gvh
- gvh_manifest
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Editor/FirebaseAnalytics_version-13.11.0_manifest.txt
- gvhp_manifestname-0Google Analytics
- gvhp_manifestname-1FirebaseAnalytics
timeCreated: 0

View File

@@ -0,0 +1,71 @@
Assets/Editor Default Resources/Firebase/fb_analytics.png
Assets/Editor Default Resources/Firebase/fb_analytics_dark.png
Assets/Editor Default Resources/Firebase/fb_auth.png
Assets/Editor Default Resources/Firebase/fb_auth_dark.png
Assets/Editor Default Resources/Firebase/fb_cloud_messaging.png
Assets/Editor Default Resources/Firebase/fb_cloud_messaging_dark.png
Assets/Editor Default Resources/Firebase/fb_config.png
Assets/Editor Default Resources/Firebase/fb_config_dark.png
Assets/Editor Default Resources/Firebase/fb_crashlytics.png
Assets/Editor Default Resources/Firebase/fb_crashlytics_dark.png
Assets/Editor Default Resources/Firebase/fb_database.png
Assets/Editor Default Resources/Firebase/fb_database_dark.png
Assets/Editor Default Resources/Firebase/fb_functions.png
Assets/Editor Default Resources/Firebase/fb_functions_dark.png
Assets/Editor Default Resources/Firebase/fb_storage.png
Assets/Editor Default Resources/Firebase/fb_storage_dark.png
Assets/Editor Default Resources/Firebase/firebase_lockup.png
Assets/Editor Default Resources/Firebase/firebase_lockup_dark.png
Assets/ExternalDependencyManager/Editor/1.2.187/Google.IOSResolver.dll
Assets/ExternalDependencyManager/Editor/1.2.187/Google.IOSResolver.pdb
Assets/ExternalDependencyManager/Editor/1.2.187/Google.JarResolver.dll
Assets/ExternalDependencyManager/Editor/1.2.187/Google.JarResolver.pdb
Assets/ExternalDependencyManager/Editor/1.2.187/Google.PackageManagerResolver.dll
Assets/ExternalDependencyManager/Editor/1.2.187/Google.PackageManagerResolver.pdb
Assets/ExternalDependencyManager/Editor/1.2.187/Google.VersionHandlerImpl.dll
Assets/ExternalDependencyManager/Editor/1.2.187/Google.VersionHandlerImpl.pdb
Assets/ExternalDependencyManager/Editor/CHANGELOG.md
Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll
Assets/ExternalDependencyManager/Editor/Google.VersionHandler.pdb
Assets/ExternalDependencyManager/Editor/LICENSE
Assets/ExternalDependencyManager/Editor/README.md
Assets/ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.187_manifest.txt
Assets/Firebase/Editor/AppDependencies.xml
Assets/Firebase/Editor/CrashlyticsDependencies.xml
Assets/Firebase/Editor/Firebase.Crashlytics.Editor.dll
Assets/Firebase/Editor/Firebase.Crashlytics.Editor.pdb
Assets/Firebase/Editor/Firebase.Editor.dll
Assets/Firebase/Editor/Firebase.Editor.pdb
Assets/Firebase/Editor/generate_xml_from_google_services_json.exe
Assets/Firebase/Editor/generate_xml_from_google_services_json.py
Assets/Firebase/FirebaseApp/Internal/AssemblyInfo.cs
Assets/Firebase/FirebaseApp/Internal/Firebase.App.Internal.asmdef
Assets/Firebase/FirebaseApp/Internal/FirebaseInterops.cs
Assets/Firebase/FirebaseApp/Internal/HttpHelpers.cs
Assets/Firebase/FirebaseApp/Internal/link.xml
Assets/Firebase/Plugins/Firebase.App.dll
Assets/Firebase/Plugins/Firebase.App.pdb
Assets/Firebase/Plugins/Firebase.Crashlytics.dll
Assets/Firebase/Plugins/Firebase.Crashlytics.pdb
Assets/Firebase/Plugins/Firebase.Platform.dll
Assets/Firebase/Plugins/Firebase.Platform.pdb
Assets/Firebase/Plugins/Firebase.TaskExtension.dll
Assets/Firebase/Plugins/Firebase.TaskExtension.pdb
Assets/Firebase/Plugins/Google.MiniJson.dll
Assets/Firebase/Plugins/iOS/Firebase.App.dll
Assets/Firebase/Plugins/iOS/Firebase.App.pdb
Assets/Firebase/Plugins/iOS/Firebase.Crashlytics.dll
Assets/Firebase/Plugins/iOS/Firebase.Crashlytics.pdb
Assets/Firebase/Plugins/x86_64/FirebaseCppApp-13_11_0.bundle
Assets/Firebase/Plugins/x86_64/FirebaseCppApp-13_11_0.dll
Assets/Firebase/Plugins/x86_64/FirebaseCppApp-13_11_0.so
Assets/Firebase/m2repository/com/google/firebase/firebase-app-unity/13.11.0/firebase-app-unity-13.11.0.pom
Assets/Firebase/m2repository/com/google/firebase/firebase-app-unity/13.11.0/firebase-app-unity-13.11.0.srcaar
Assets/Firebase/m2repository/com/google/firebase/firebase-app-unity/maven-metadata.xml
Assets/Firebase/m2repository/com/google/firebase/firebase-crashlytics-unity/13.11.0/firebase-crashlytics-unity-13.11.0.pom
Assets/Firebase/m2repository/com/google/firebase/firebase-crashlytics-unity/13.11.0/firebase-crashlytics-unity-13.11.0.srcaar
Assets/Firebase/m2repository/com/google/firebase/firebase-crashlytics-unity/maven-metadata.xml
Assets/Plugins/iOS/Firebase/libFirebaseCppApp.a
Assets/Plugins/iOS/Firebase/libFirebaseCppCrashlytics.a
Assets/Plugins/tvOS/Firebase/libFirebaseCppApp.a
Assets/Plugins/tvOS/Firebase/libFirebaseCppCrashlytics.a

View File

@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 6e81ab079399484d877f51756833fe48
labels:
- gvh
- gvh_manifest
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Editor/FirebaseCrashlytics_version-13.11.0_manifest.txt
- gvhp_manifestname-0Firebase Crashlytics
- gvhp_manifestname-1FirebaseCrashlytics
timeCreated: 0

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ae88c0972b7448b5b36def1716f1d711
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Editor/generate_xml_from_google_services_json.exe
timeCreated: 1480838400
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,498 @@
#!/usr/bin/python
# Copyright 2016 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Stand-alone implementation of the Gradle Firebase plugin.
Converts the services json file to xml:
https://googleplex-android.googlesource.com/platform/tools/base/+/studio-master-dev/build-system/google-services/src/main/groovy/com/google/gms/googleservices
"""
__author__ = 'Wouter van Oortmerssen'
import argparse
import ctypes
import json
import os
import platform
import sys
from xml.etree import ElementTree
if platform.system().lower() == 'windows':
import ctypes.wintypes # pylint: disable=g-import-not-at-top
# Map Python 2's unicode method to encode a string as bytes in python 3.
try:
unicode('') # See whether unicode class is available (Python < 3)
except NameError:
unicode = str # pylint: disable=redefined-builtin,invalid-name
# Input filename if it isn't set.
DEFAULT_INPUT_FILENAME = 'app/google-services.json'
# Output filename if it isn't set.
DEFAULT_OUTPUT_FILENAME = 'res/values/googleservices.xml'
# Input filename for .plist files, if it isn't set.
DEFAULT_PLIST_INPUT_FILENAME = 'GoogleService-Info.plist'
# Output filename for .json files, if it isn't set.
DEFAULT_JSON_OUTPUT_FILENAME = 'google-services-desktop.json'
OAUTH_CLIENT_TYPE_ANDROID_APP = 1
OAUTH_CLIENT_TYPE_WEB = 3
def read_xml_value(xml_node):
"""Utility method for reading values from the plist XML.
Args:
xml_node: An ElementTree node, that contains a value.
Returns:
The value of the node, or None, if it could not be read.
"""
if xml_node.tag == 'string':
return xml_node.text
elif xml_node.tag == 'integer':
return int(xml_node.text)
elif xml_node.tag == 'real':
return float(xml_node.text)
elif xml_node.tag == 'false':
return 0
elif xml_node.tag == 'true':
return 1
else:
# other types of input are ignored. (data, dates, arrays, etc.)
return None
def construct_plist_dictionary(xml_root):
"""Constructs a dictionary of values based on the contents of a plist file.
Args:
xml_root: An ElementTree node, that represents the root of the xml file
that is to be parsed. (Which should be a dictionary containing
key-value pairs of the properties that need to be extracted.)
Returns:
A dictionary, containing key-value pairs for all (supported) entries in the
node.
"""
xml_dict = xml_root.find('dict')
if xml_dict is None:
return None
plist_dict = {}
i = 0
while i < len(xml_dict):
if xml_dict[i].tag == 'key':
key = xml_dict[i].text
i += 1
if i < len(xml_dict):
value = read_xml_value(xml_dict[i])
if value is not None:
plist_dict[key] = value
i += 1
return plist_dict
def update_dict_keys(key_map, input_dict):
"""Creates a dict from input_dict with the same values but new keys.
Two dictionaries are passed to this function: the key_map that represents a
mapping of source keys to destination keys, and the input_dict that is the
dictionary that is to be duplicated, replacing any key that matches a source
key with a destination key. Source keys that are not present in the
input_dict will not have their destination key represented in the result.
In other words, if key_map is `{'old': 'new', 'foo': 'bar'}`, and input_dict
is `{'old': 10}`, the result will be `{'new': 10}`.
Args:
key_map (dict): A dictionary of strings to strings that maps source keys to
destination keys.
input_dict (dict): The dictionary of string keys to any value type, which
is to be duplicated, replacing source keys with the corresponding
destination keys from key_map.
Returns:
dict: A new dictionary with updated keys.
"""
return {
new_key: input_dict[old_key]
for (old_key, new_key) in key_map.items()
if old_key in input_dict
}
def construct_google_services_json(xml_dict):
"""Constructs a google services json file from a dictionary.
Args:
xml_dict: A dictionary of all the key/value pairs that are needed for the
output json file.
Returns:
A string representing the output json file.
"""
try:
json_struct = {
'project_info':
update_dict_keys(
{
'GCM_SENDER_ID': 'project_number',
'DATABASE_URL': 'firebase_url',
'PROJECT_ID': 'project_id',
'STORAGE_BUCKET': 'storage_bucket'
}, xml_dict),
'client': [{
'client_info': {
'mobilesdk_app_id': xml_dict['GOOGLE_APP_ID'],
'android_client_info': {
'package_name': xml_dict['BUNDLE_ID']
}
},
'api_key': [{
'current_key': xml_dict['API_KEY']
}],
'services': {
'analytics_service': {
'status': xml_dict['IS_ANALYTICS_ENABLED']
},
'appinvite_service': {
'status': xml_dict['IS_APPINVITE_ENABLED']
}
}
},],
'configuration_version':
'1'
}
# OAuth client is optional, but include it if present.
if 'CLIENT_ID' in xml_dict:
json_struct['client'][0]['oauth_client'] = [{
'client_id': xml_dict['CLIENT_ID'],
}]
return json.dumps(json_struct, indent=2)
except KeyError as e:
sys.stderr.write('Could not find key in plist file: [%s]\n' % (e.args[0]))
return None
def convert_plist_to_json(plist_string, input_filename):
"""Converts an input plist string into a .json file and saves it.
Args:
plist_string: The contents of the loaded plist file.
input_filename: The file name that the plist data was read from.
Returns:
the converted string, or None if there were errors.
"""
try:
root = ElementTree.fromstring(plist_string)
except ElementTree.ParseError:
sys.stderr.write('Error parsing file %s.\n'
'It does not appear to be valid XML.\n' % (input_filename))
return None
plist_dict = construct_plist_dictionary(root)
if plist_dict is None:
sys.stderr.write('In file %s, could not locate a top-level \'dict\' '
'element.\n'
'File format should be plist XML, with a top-level '
'dictionary containing project settings as key-value '
'pairs.\n' % (input_filename))
return None
json_string = construct_google_services_json(plist_dict)
return json_string
def gen_string(parent, name, text):
"""Generate one <string /> element and put into the list of keeps.
Args:
parent: The object that will hold the string.
name: The name to store the string under.
text: The text of the string.
"""
if text:
prev = parent.get('tools:keep', '')
if prev:
prev += ','
parent.set('tools:keep', prev + '@string/' + name)
child = ElementTree.SubElement(parent, 'string', {
'name': name,
'translatable': 'false'
})
child.text = text
def indent(elem, level=0):
"""Recurse through XML tree and add indentation.
Args:
elem: The element to recurse over
level: The current indentation level.
"""
i = '\n' + level*' '
if elem is not None:
if not elem.text or not elem.text.strip():
elem.text = i + ' '
if not elem.tail or not elem.tail.strip():
elem.tail = i
for elem in elem:
indent(elem, level+1)
if not elem.tail or not elem.tail.strip():
elem.tail = i
else:
if level and (not elem.tail or not elem.tail.strip()):
elem.tail = i
def argv_as_unicode_win32():
"""Returns unicode command line arguments on windows.
"""
get_command_line_w = ctypes.cdll.kernel32.GetCommandLineW
get_command_line_w.restype = ctypes.wintypes.LPCWSTR
# CommandLineToArgvW parses the Unicode command line
command_line_to_argv_w = ctypes.windll.shell32.CommandLineToArgvW
command_line_to_argv_w.argtypes = [
ctypes.wintypes.LPCWSTR,
ctypes.POINTER(ctypes.c_int)
]
command_line_to_argv_w.restype = ctypes.POINTER(
ctypes.wintypes.LPWSTR)
argc = ctypes.c_int(0)
argv = command_line_to_argv_w(get_command_line_w(), argc)
# Strip the python executable from the arguments if it exists
# (It would be listed as the first argument on the windows command line, but
# not in the arguments to the python script)
sys_argv_len = len(sys.argv)
return [unicode(argv[i]) for i in
range(argc.value - sys_argv_len, argc.value)]
def main():
parser = argparse.ArgumentParser(
description=((
'Converts a Firebase %s into %s similar to the Gradle plugin, or '
'converts a Firebase %s into a %s suitible for use on desktop apps.' %
(DEFAULT_INPUT_FILENAME, DEFAULT_OUTPUT_FILENAME,
DEFAULT_PLIST_INPUT_FILENAME, DEFAULT_JSON_OUTPUT_FILENAME))))
parser.add_argument('-i', help='Override input file name',
metavar='FILE', required=False)
parser.add_argument('-o', help='Override destination file name',
metavar='FILE', required=False)
parser.add_argument('-p', help=('Package ID to select within the set of '
'packages in the input file. If this is '
'not specified, the first package in the '
'input file is selected.'))
parser.add_argument('-l', help=('List all package IDs referenced by the '
'input file. If this is specified, '
'the output file is not created.'),
action='store_true', default=False, required=False)
parser.add_argument('-f', help=('Print project fields from the input file '
'in the form \'name=value\\n\' for each '
'field. If this is specified, the output '
'is not created.'),
action='store_true', default=False, required=False)
parser.add_argument(
'--plist',
help=(
'Specifies a plist file to convert to a JSON configuration file. '
'If this is enabled, the script will expect a .plist file as input, '
'which it will convert into %s file. The output file is '
'*not* suitable for use with Firebase on Android.' %
(DEFAULT_JSON_OUTPUT_FILENAME)),
action='store_true',
default=False,
required=False)
# python 2 on Windows doesn't handle unicode arguments well, so we need to
# pre-process the command line arguments before trying to parse them.
if platform.system() == 'Windows':
sys.argv = argv_as_unicode_win32()
args = parser.parse_args()
if args.plist:
input_filename = DEFAULT_PLIST_INPUT_FILENAME
output_filename = DEFAULT_JSON_OUTPUT_FILENAME
else:
input_filename = DEFAULT_INPUT_FILENAME
output_filename = DEFAULT_OUTPUT_FILENAME
if args.i:
# Encode the input string (type unicode) as a normal string (type str)
# using the 'utf-8' encoding so that it can be worked with the same as
# input names from other sources (like the defaults).
input_filename_raw = args.i.encode('utf-8')
# Decode the filename to a unicode string using the 'utf-8' encoding to
# properly handle filepaths with unicode characters in them.
input_filename = input_filename_raw.decode('utf-8')
if args.o:
output_filename = args.o
with open(input_filename, 'r') as ifile:
file_string = ifile.read()
json_string = None
if args.plist:
json_string = convert_plist_to_json(file_string, input_filename)
if json_string is None:
return 1
jsobj = json.loads(json_string)
else:
jsobj = json.loads(file_string)
root = ElementTree.Element('resources')
root.set('xmlns:tools', 'http://schemas.android.com/tools')
project_info = jsobj.get('project_info')
if project_info:
gen_string(root, 'firebase_database_url', project_info.get('firebase_url'))
gen_string(root, 'gcm_defaultSenderId', project_info.get('project_number'))
gen_string(root, 'google_storage_bucket',
project_info.get('storage_bucket'))
gen_string(root, 'project_id', project_info.get('project_id'))
if args.f:
if not project_info:
sys.stderr.write('No project info found in %s.' % input_filename)
return 1
for field, value in sorted(project_info.items()):
sys.stdout.write('%s=%s\n' % (field, value))
return 0
packages = set()
client_list = jsobj.get('client')
if client_list:
# Search for the user specified package in the file.
selected_package_name = ''
selected_client = client_list[0]
find_package_name = args.p
for client in client_list:
package_name = client.get('client_info', {}).get(
'android_client_info', {}).get('package_name', '')
if not package_name:
package_name = client.get('oauth_client', {}).get(
'android_info', {}).get('package_name', '')
if package_name:
if not selected_package_name:
selected_package_name = package_name
selected_client = client
if package_name == find_package_name:
selected_package_name = package_name
selected_client = client
packages.add(package_name)
if args.p and selected_package_name != find_package_name:
sys.stderr.write('No packages found in %s which match the package '
'name %s\n'
'\n'
'Found the following:\n'
'%s\n' % (input_filename, find_package_name,
'\n'.join(packages)))
return 1
client_api_key = selected_client.get('api_key')
if client_api_key:
client_api_key0 = client_api_key[0]
gen_string(root, 'google_api_key', client_api_key0.get('current_key'))
gen_string(root, 'google_crash_reporting_api_key',
client_api_key0.get('current_key'))
client_info = selected_client.get('client_info')
if client_info:
gen_string(root, 'google_app_id', client_info.get('mobilesdk_app_id'))
# Only include the first matching OAuth client ID per type.
client_id_web_parsed = False
client_id_android_parsed = False
oauth_client_list = selected_client.get('oauth_client')
if oauth_client_list:
for oauth_client in oauth_client_list:
client_type = oauth_client.get('client_type')
client_id = oauth_client.get('client_id')
if not (client_type and client_id): continue
if (client_type == OAUTH_CLIENT_TYPE_WEB and
not client_id_web_parsed):
gen_string(root, 'default_web_client_id', client_id)
client_id_web_parsed = True
if (client_type == OAUTH_CLIENT_TYPE_ANDROID_APP and
not client_id_android_parsed):
gen_string(root, 'default_android_client_id', client_id)
client_id_android_parsed = True
services = selected_client.get('services')
if services:
ads_service = services.get('ads_service')
if ads_service:
gen_string(root, 'test_banner_ad_unit_id',
ads_service.get('test_banner_ad_unit_id'))
gen_string(root, 'test_interstitial_ad_unit_id',
ads_service.get('test_interstitial_ad_unit_id'))
analytics_service = services.get('analytics_service')
if analytics_service:
analytics_property = analytics_service.get('analytics_property')
if analytics_property:
gen_string(root, 'ga_trackingId',
analytics_property.get('tracking_id'))
# enable this once we have an example if this service being present
# in the json data:
maps_service_enabled = False
if maps_service_enabled:
maps_service = services.get('maps_service')
if maps_service:
maps_api_key = maps_service.get('api_key')
if maps_api_key:
for k in range(0, len(maps_api_key)):
# generates potentially multiple of these keys, which is
# the same behavior as the java plugin.
gen_string(root, 'google_maps_key',
maps_api_key[k].get('maps_api_key'))
tree = ElementTree.ElementTree(root)
indent(root)
if args.l:
for package in sorted(packages):
if package:
sys.stdout.write(package + '\n')
else:
path = os.path.dirname(output_filename)
if path and not os.path.exists(path):
os.makedirs(path)
if not args.plist:
tree.write(output_filename, 'utf-8', True)
else:
with open(output_filename, 'w') as ofile:
ofile.write(json_string)
return 0
if __name__ == '__main__':
sys.exit(main())

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8f18ed76c0f04ce0a65736104f913ef8
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Editor/generate_xml_from_google_services_json.py
timeCreated: 1480838400
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9bf777e8570954e5faa1c638fd0c68f7
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d8f2a4a0f471748a1865f7d363c9bdc6
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,6 @@
using System.Runtime.CompilerServices;
// Grant native C# Unity packages access to Firebase.App's internal helpers
[assembly: InternalsVisibleTo("Firebase.Functions")]
[assembly: InternalsVisibleTo("Firebase.FirebaseAI")]
[assembly: InternalsVisibleTo("Firebase.FirebaseAI.TestApp")]

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d640bc2403824e5599315e0050b99aeb
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/FirebaseApp/Internal/AssemblyInfo.cs
timeCreated: 1480838400
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,17 @@
{
"name": "Firebase.App.Internal",
"rootNamespace": "Firebase.Internal",
"references": [],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": true,
"precompiledReferences": [
"Firebase.App.dll",
"Firebase.Platform.dll"
],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9b4ce77d2be44f25af03d4cbf9bee9f9
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/FirebaseApp/Internal/Firebase.App.Internal.asmdef
timeCreated: 1480838400
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,461 @@
/*
* Copyright 2025 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using System.Net.Http;
using System.Net.WebSockets;
using System.Reflection;
using System.Threading.Tasks;
namespace Firebase.Internal
{
// Contains internal helper methods for interacting with other Firebase libraries.
internal static class FirebaseInterops
{
// The cached fields for FirebaseApp reflection.
private static PropertyInfo _dataCollectionProperty = null;
// The various App Check types needed to retrieve the token, cached via reflection on startup.
private static Type _appCheckType;
private static MethodInfo _appCheckGetInstanceMethod;
private static MethodInfo _appCheckGetTokenMethod;
private static MethodInfo _appCheckGetLimitedUseTokenMethod;
private static PropertyInfo _appCheckTokenResultProperty;
private static PropertyInfo _appCheckTokenTokenProperty;
// Used to determine if the App Check reflection initialized successfully, and should work.
private static bool _appCheckReflectionInitialized = false;
// The header used by the AppCheck token.
private const string appCheckHeader = "X-Firebase-AppCheck";
// The various Auth types needed to retrieve the token, cached via reflection on startup.
private static Type _authType;
private static MethodInfo _authGetAuthMethod;
private static PropertyInfo _authCurrentUserProperty;
private static MethodInfo _userTokenAsyncMethod;
private static PropertyInfo _userTokenTaskResultProperty;
// Used to determine if the Auth reflection initialized successfully, and should work.
private static bool _authReflectionInitialized = false;
// The header used by the AppCheck token.
private const string authHeader = "Authorization";
static FirebaseInterops()
{
InitializeAppReflection();
InitializeAppCheckReflection();
InitializeAuthReflection();
}
private static void LogError(string message)
{
#if FIREBASEAI_DEBUG_LOGGING
UnityEngine.Debug.LogError(message);
#endif
}
// Cache the methods needed for FirebaseApp reflection.
private static void InitializeAppReflection()
{
try
{
_dataCollectionProperty = typeof(FirebaseApp).GetProperty(
"IsDataCollectionDefaultEnabled",
BindingFlags.Instance | BindingFlags.NonPublic);
if (_dataCollectionProperty == null)
{
LogError("Could not find FirebaseApp.IsDataCollectionDefaultEnabled property via reflection.");
return;
}
if (_dataCollectionProperty.PropertyType != typeof(bool))
{
LogError("FirebaseApp.IsDataCollectionDefaultEnabled is not a bool, " +
$"but is {_dataCollectionProperty.PropertyType}");
return;
}
}
catch (Exception e)
{
LogError($"Failed to initialize FirebaseApp reflection: {e}");
}
}
// Gets the property FirebaseApp.IsDataCollectionDefaultEnabled.
public static bool GetIsDataCollectionDefaultEnabled(FirebaseApp firebaseApp)
{
if (firebaseApp == null || _dataCollectionProperty == null)
{
return false;
}
try
{
return (bool)_dataCollectionProperty.GetValue(firebaseApp);
}
catch (Exception e)
{
LogError($"Error accessing 'IsDataCollectionDefaultEnabled': {e}");
return false;
}
}
// SDK version to use if unable to find it.
private const string _unknownSdkVersion = "unknown";
private static readonly Lazy<string> _sdkVersionFetcher = new(() =>
{
try
{
// Get the type Firebase.VersionInfo from the assembly that defines FirebaseApp.
Type versionInfoType = typeof(FirebaseApp).Assembly.GetType("Firebase.VersionInfo");
if (versionInfoType == null)
{
LogError("Firebase.VersionInfo type not found via reflection");
return _unknownSdkVersion;
}
// Firebase.VersionInfo.SdkVersion
PropertyInfo sdkVersionProperty = versionInfoType.GetProperty(
"SdkVersion",
BindingFlags.Static | BindingFlags.NonPublic);
if (sdkVersionProperty == null)
{
LogError("Firebase.VersionInfo.SdkVersion property not found via reflection.");
return _unknownSdkVersion;
}
return sdkVersionProperty.GetValue(null) as string ?? _unknownSdkVersion;
}
catch (Exception e)
{
LogError($"Error accessing SdkVersion via reflection: {e}");
return _unknownSdkVersion;
}
});
// Gets the internal property Firebase.VersionInfo.SdkVersion
internal static string GetVersionInfoSdkVersion()
{
return _sdkVersionFetcher.Value;
}
// Cache the various types and methods needed for AppCheck token retrieval.
private static void InitializeAppCheckReflection()
{
const string firebaseAppCheckTypeName = "Firebase.AppCheck.FirebaseAppCheck, Firebase.AppCheck";
const string getAppCheckTokenMethodName = "GetAppCheckTokenAsync";
const string getLimitedUseAppCheckTokenMethodName = "GetLimitedUseAppCheckTokenAsync";
try
{
// Set this to false, to allow easy failing out via return.
_appCheckReflectionInitialized = false;
_appCheckType = Type.GetType(firebaseAppCheckTypeName);
if (_appCheckType == null)
{
return;
}
// Get the static method GetInstance(FirebaseApp app)
_appCheckGetInstanceMethod = _appCheckType.GetMethod(
"GetInstance", BindingFlags.Static | BindingFlags.Public, null,
new Type[] { typeof(FirebaseApp) }, null);
if (_appCheckGetInstanceMethod == null)
{
LogError("Could not find FirebaseAppCheck.GetInstance method via reflection.");
return;
}
// Get the instance method GetAppCheckTokenAsync(bool forceRefresh)
_appCheckGetTokenMethod = _appCheckType.GetMethod(
getAppCheckTokenMethodName, BindingFlags.Instance | BindingFlags.Public, null,
new Type[] { typeof(bool) }, null);
if (_appCheckGetTokenMethod == null)
{
LogError($"Could not find {getAppCheckTokenMethodName} method via reflection.");
return;
}
// Get the instance method GetLimitedUseAppCheckTokenAsync()
_appCheckGetLimitedUseTokenMethod = _appCheckType.GetMethod(
getLimitedUseAppCheckTokenMethodName, BindingFlags.Instance | BindingFlags.Public, null,
Type.EmptyTypes, null);
if (_appCheckGetLimitedUseTokenMethod == null)
{
LogError($"Could not find {getLimitedUseAppCheckTokenMethodName} method via reflection.");
return;
}
// Should be Task<AppCheckToken>
Type appCheckTokenTaskType = _appCheckGetTokenMethod.ReturnType;
// Get the Result property from the Task<AppCheckToken>
_appCheckTokenResultProperty = appCheckTokenTaskType.GetProperty("Result");
if (_appCheckTokenResultProperty == null)
{
LogError("Could not find Result property on App Check token Task.");
return;
}
// Should be AppCheckToken
Type appCheckTokenType = _appCheckTokenResultProperty.PropertyType;
_appCheckTokenTokenProperty = appCheckTokenType.GetProperty("Token");
if (_appCheckTokenTokenProperty == null)
{
LogError($"Could not find Token property on AppCheckToken.");
return;
}
_appCheckReflectionInitialized = true;
}
catch (Exception e)
{
LogError($"Exception during static initialization of FirebaseInterops: {e}");
}
}
// Gets the AppCheck Token, assuming there is one. Otherwise, returns null.
internal static async Task<string> GetAppCheckTokenAsync(FirebaseApp firebaseApp, bool limitedUse = false)
{
// If AppCheck reflection failed for any reason, nothing to do.
if (!_appCheckReflectionInitialized)
{
return null;
}
try
{
// Get the FirebaseAppCheck instance for the current FirebaseApp
object appCheckInstance = _appCheckGetInstanceMethod.Invoke(null, new object[] { firebaseApp });
if (appCheckInstance == null)
{
LogError("Failed to get FirebaseAppCheck instance via reflection.");
return null;
}
object taskObject;
if (limitedUse)
{
taskObject = _appCheckGetLimitedUseTokenMethod.Invoke(appCheckInstance, null);
}
else
{
// Invoke GetAppCheckTokenAsync(false) - returns a Task<AppCheckToken>
taskObject = _appCheckGetTokenMethod.Invoke(appCheckInstance, new object[] { false });
}
if (taskObject is not Task appCheckTokenTask)
{
LogError($"Invoking GetToken did not return a Task.");
return null;
}
// Await the task to get the AppCheckToken result
await appCheckTokenTask;
// Check for exceptions in the task
if (appCheckTokenTask.IsFaulted)
{
LogError($"Error getting App Check token: {appCheckTokenTask.Exception}");
return null;
}
// Get the Result property from the Task<AppCheckToken>
object tokenResult = _appCheckTokenResultProperty.GetValue(appCheckTokenTask); // This is the AppCheckToken struct
if (tokenResult == null)
{
LogError("App Check token result was null.");
return null;
}
// Get the Token property from the AppCheckToken struct
string finalToken = _appCheckTokenTokenProperty.GetValue(tokenResult) as string;
return finalToken;
}
catch (Exception e)
{
// Log any exceptions during the reflection/invocation process
LogError($"An error occurred while trying to fetch App Check token: {e}");
}
return null;
}
// Cache the various types and methods needed for Auth token retrieval.
private static void InitializeAuthReflection()
{
const string firebaseAuthTypeName = "Firebase.Auth.FirebaseAuth, Firebase.Auth";
const string getTokenMethodName = "TokenAsync";
try
{
// Set this to false, to allow easy failing out via return.
_authReflectionInitialized = false;
_authType = Type.GetType(firebaseAuthTypeName);
if (_authType == null)
{
// Auth assembly likely not present, fine to skip
return;
}
// Get the static method GetAuth(FirebaseApp app):
_authGetAuthMethod = _authType.GetMethod(
"GetAuth", BindingFlags.Static | BindingFlags.Public, null,
new Type[] { typeof(FirebaseApp) }, null);
if (_authGetAuthMethod == null)
{
LogError("Could not find FirebaseAuth.GetAuth method via reflection.");
return;
}
// Get the CurrentUser property from FirebaseAuth instance
_authCurrentUserProperty = _authType.GetProperty("CurrentUser", BindingFlags.Instance | BindingFlags.Public);
if (_authCurrentUserProperty == null)
{
LogError("Could not find FirebaseAuth.CurrentUser property via reflection.");
return;
}
// This should be FirebaseUser type
Type userType = _authCurrentUserProperty.PropertyType;
// Get the TokenAsync(bool) method from FirebaseUser
_userTokenAsyncMethod = userType.GetMethod(
getTokenMethodName, BindingFlags.Instance | BindingFlags.Public, null,
new Type[] { typeof(bool) }, null);
if (_userTokenAsyncMethod == null)
{
LogError($"Could not find FirebaseUser.{getTokenMethodName}(bool) method via reflection.");
return;
}
// The return type is Task<string>
Type tokenTaskType = _userTokenAsyncMethod.ReturnType;
// Get the Result property from Task<string>
_userTokenTaskResultProperty = tokenTaskType.GetProperty("Result");
if (_userTokenTaskResultProperty == null)
{
LogError("Could not find Result property on Auth token Task.");
return;
}
// Check if Result property is actually a string
if (_userTokenTaskResultProperty.PropertyType != typeof(string))
{
LogError("Auth token Task's Result property is not a string, " +
$"but is {_userTokenTaskResultProperty.PropertyType}");
return;
}
_authReflectionInitialized = true;
}
catch (Exception e)
{
LogError($"Exception during static initialization of Auth reflection in FirebaseInterops: {e}");
_authReflectionInitialized = false;
}
}
// Gets the Auth Token, assuming there is one. Otherwise, returns null.
internal static async Task<string> GetAuthTokenAsync(FirebaseApp firebaseApp)
{
// If Auth reflection failed for any reason, nothing to do.
if (!_authReflectionInitialized)
{
return null;
}
try
{
// Get the FirebaseAuth instance for the given FirebaseApp.
object authInstance = _authGetAuthMethod.Invoke(null, new object[] { firebaseApp });
if (authInstance == null)
{
LogError("Failed to get FirebaseAuth instance via reflection.");
return null;
}
// Get the CurrentUser property
object currentUser = _authCurrentUserProperty.GetValue(authInstance);
if (currentUser == null)
{
// No user logged in, so no token
return null;
}
// Invoke TokenAsync(false) - returns a Task<string>
object taskObject = _userTokenAsyncMethod.Invoke(currentUser, new object[] { false });
if (taskObject is not Task tokenTask)
{
LogError("Invoking TokenAsync did not return a Task.");
return null;
}
// Await the task to get the token result
await tokenTask;
// Check for exceptions in the task
if (tokenTask.IsFaulted)
{
LogError($"Error getting Auth token: {tokenTask.Exception}");
return null;
}
// Get the Result property (which is the string token)
return _userTokenTaskResultProperty.GetValue(tokenTask) as string;
}
catch (Exception e)
{
// Log any exceptions during the reflection/invocation process
LogError($"An error occurred while trying to fetch Auth token: {e}");
}
return null;
}
// Adds the other Firebase tokens to the HttpRequest, as available.
internal static async Task AddFirebaseTokensAsync(HttpRequestMessage request, FirebaseApp firebaseApp, string authTokenPrefix = "Firebase", bool limitedUseAppCheckTokens = false)
{
string appCheckToken = await GetAppCheckTokenAsync(firebaseApp, limitedUseAppCheckTokens);
if (!string.IsNullOrEmpty(appCheckToken))
{
request.Headers.Add(appCheckHeader, appCheckToken);
}
string authToken = await GetAuthTokenAsync(firebaseApp);
if (!string.IsNullOrEmpty(authToken))
{
request.Headers.Add(authHeader, $"{authTokenPrefix} {authToken}");
}
}
// Adds the other Firebase tokens to the WebSocket, as available.
internal static async Task AddFirebaseTokensAsync(ClientWebSocket socket, FirebaseApp firebaseApp, string authTokenPrefix = "Firebase")
{
string appCheckToken = await GetAppCheckTokenAsync(firebaseApp);
if (!string.IsNullOrEmpty(appCheckToken))
{
socket.Options.SetRequestHeader(appCheckHeader, appCheckToken);
}
string authToken = await GetAuthTokenAsync(firebaseApp);
if (!string.IsNullOrEmpty(authToken))
{
socket.Options.SetRequestHeader(authHeader, $"{authTokenPrefix} {authToken}");
}
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: bc30602676ea492eab91b6ff7cd6ba3b
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/FirebaseApp/Internal/FirebaseInterops.cs
timeCreated: 1480838400
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,89 @@
/*
* Copyright 2025 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
namespace Firebase.Internal
{
// Helper functions to help handling the Http calls.
internal static class HttpHelpers
{
internal static async Task SetRequestHeaders(HttpRequestMessage request, FirebaseApp firebaseApp, string authPrefix = "Firebase", bool limitedUseAppCheckTokens = false)
{
request.Headers.Add("x-goog-api-key", firebaseApp.Options.ApiKey);
string version = FirebaseInterops.GetVersionInfoSdkVersion();
request.Headers.Add("x-goog-api-client", $"gl-csharp/8.0 fire/{version}");
if (FirebaseInterops.GetIsDataCollectionDefaultEnabled(firebaseApp))
{
request.Headers.Add("X-Firebase-AppId", firebaseApp.Options.AppId);
request.Headers.Add("X-Firebase-AppVersion", UnityEngine.Application.version);
}
// Add additional Firebase tokens to the header.
await FirebaseInterops.AddFirebaseTokensAsync(request, firebaseApp, authPrefix, limitedUseAppCheckTokens);
}
// Helper function to throw an exception if the Http Response indicates failure.
// Useful as EnsureSuccessStatusCode can leave out relevant information.
internal static async Task ValidateHttpResponse(HttpResponseMessage response)
{
if (response.IsSuccessStatusCode)
{
return;
}
// Status code indicates failure, try to read the content for more details
string errorContent = "No error content available.";
if (response.Content != null)
{
try
{
errorContent = await response.Content.ReadAsStringAsync();
}
catch (Exception readEx)
{
// Handle being unable to read the content
errorContent = $"Failed to read error content: {readEx.Message}";
}
}
// Construct the exception with as much information as possible.
var ex = new HttpRequestException(
$"HTTP request failed with status code: {(int)response.StatusCode} ({response.ReasonPhrase}).\n" +
$"Error Content: {errorContent}",
null
);
ex.Data["StatusCode"] = response.StatusCode;
throw ex;
}
}
// Extension to get the StatusCode from the exception.
internal static class HttpRequestExceptionExtensions
{
internal static HttpStatusCode? GetStatusCode(this HttpRequestException exception)
{
if (exception.Data.Contains("StatusCode"))
{
return (HttpStatusCode)exception.Data["StatusCode"];
}
return null;
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: edaf55a8a9944057852d797b4558bf8a
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/FirebaseApp/Internal/HttpHelpers.cs
timeCreated: 1480838400
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
<linker>
<assembly fullname="Firebase.Auth">
<type fullname="Firebase.Auth.FirebaseAuth" preserve="all"/>
<type fullname="Firebase.Auth.FirebaseUser" preserve="all"/>
</assembly>
<assembly fullname="Firebase.AppCheck">
<type fullname="Firebase.AppCheck.FirebaseAppCheck" preserve="all"/>
</assembly>
</linker>

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 178c4b1924574f9c95f7a7f28adfd218
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/FirebaseApp/Internal/link.xml
timeCreated: 1480838400
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bece1470ff1994d9b94d54ddfdd01fb2
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,81 @@
fileFormatVersion: 2
guid: 816270c2a2a348e59cb9b7b096a24f50
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Plugins/Firebase.Analytics.dll
timeCreated: 1480838400
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
platformData:
Android:
enabled: 1
settings:
CPU: AnyCPU
Any:
enabled: 0
settings: {}
Editor:
enabled: 1
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
Linux:
enabled: 1
settings:
CPU: x86
Linux64:
enabled: 1
settings:
CPU: x86_64
LinuxUniversal:
enabled: 1
settings:
CPU: AnyCPU
OSXIntel:
enabled: 1
settings:
CPU: x86
OSXIntel64:
enabled: 1
settings:
CPU: x86_64
OSXUniversal:
enabled: 1
settings:
CPU: AnyCPU
Web:
enabled: 0
settings: {}
WebStreamed:
enabled: 0
settings: {}
Win:
enabled: 1
settings:
CPU: x86
Win64:
enabled: 1
settings:
CPU: x86_64
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
iOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
tvOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,81 @@
fileFormatVersion: 2
guid: 7311924048bd457bac6d713576c952da
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Plugins/Firebase.App.dll
timeCreated: 1480838400
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
platformData:
Android:
enabled: 1
settings:
CPU: AnyCPU
Any:
enabled: 0
settings: {}
Editor:
enabled: 1
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
Linux:
enabled: 1
settings:
CPU: x86
Linux64:
enabled: 1
settings:
CPU: x86_64
LinuxUniversal:
enabled: 1
settings:
CPU: AnyCPU
OSXIntel:
enabled: 1
settings:
CPU: x86
OSXIntel64:
enabled: 1
settings:
CPU: x86_64
OSXUniversal:
enabled: 1
settings:
CPU: AnyCPU
Web:
enabled: 0
settings: {}
WebStreamed:
enabled: 0
settings: {}
Win:
enabled: 1
settings:
CPU: x86
Win64:
enabled: 1
settings:
CPU: x86_64
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
iOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
tvOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,81 @@
fileFormatVersion: 2
guid: 4a712f6ef12f441e9d8b053a3c30ad55
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Plugins/Firebase.Crashlytics.dll
timeCreated: 1480838400
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
platformData:
Android:
enabled: 1
settings:
CPU: AnyCPU
Any:
enabled: 0
settings: {}
Editor:
enabled: 1
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
Linux:
enabled: 1
settings:
CPU: x86
Linux64:
enabled: 1
settings:
CPU: x86_64
LinuxUniversal:
enabled: 1
settings:
CPU: AnyCPU
OSXIntel:
enabled: 1
settings:
CPU: x86
OSXIntel64:
enabled: 1
settings:
CPU: x86_64
OSXUniversal:
enabled: 1
settings:
CPU: AnyCPU
Web:
enabled: 0
settings: {}
WebStreamed:
enabled: 0
settings: {}
Win:
enabled: 1
settings:
CPU: x86
Win64:
enabled: 1
settings:
CPU: x86_64
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
iOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
tvOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,81 @@
fileFormatVersion: 2
guid: 7d3eec03d7e241a48941e038118c5e6a
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Plugins/Firebase.Platform.dll
timeCreated: 1480838400
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
platformData:
Android:
enabled: 1
settings:
CPU: AnyCPU
Any:
enabled: 0
settings: {}
Editor:
enabled: 1
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
Linux:
enabled: 1
settings:
CPU: x86
Linux64:
enabled: 1
settings:
CPU: x86_64
LinuxUniversal:
enabled: 1
settings:
CPU: AnyCPU
OSXIntel:
enabled: 1
settings:
CPU: x86
OSXIntel64:
enabled: 1
settings:
CPU: x86_64
OSXUniversal:
enabled: 1
settings:
CPU: AnyCPU
Web:
enabled: 0
settings: {}
WebStreamed:
enabled: 0
settings: {}
Win:
enabled: 1
settings:
CPU: x86
Win64:
enabled: 1
settings:
CPU: x86_64
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
iOS:
enabled: 1
settings:
CompileFlags:
FrameworkDependencies:
tvOS:
enabled: 1
settings:
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,81 @@
fileFormatVersion: 2
guid: f5d4069c578548ba9f199b46d61bf06d
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Plugins/Firebase.TaskExtension.dll
timeCreated: 1480838400
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
platformData:
Android:
enabled: 1
settings:
CPU: AnyCPU
Any:
enabled: 0
settings: {}
Editor:
enabled: 1
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
Linux:
enabled: 1
settings:
CPU: x86
Linux64:
enabled: 1
settings:
CPU: x86_64
LinuxUniversal:
enabled: 1
settings:
CPU: AnyCPU
OSXIntel:
enabled: 1
settings:
CPU: x86
OSXIntel64:
enabled: 1
settings:
CPU: x86_64
OSXUniversal:
enabled: 1
settings:
CPU: AnyCPU
Web:
enabled: 0
settings: {}
WebStreamed:
enabled: 0
settings: {}
Win:
enabled: 1
settings:
CPU: x86
Win64:
enabled: 1
settings:
CPU: x86_64
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
iOS:
enabled: 1
settings:
CompileFlags:
FrameworkDependencies:
tvOS:
enabled: 1
settings:
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,81 @@
fileFormatVersion: 2
guid: 3ebb289656f1477fa263e62d36c6e329
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Plugins/Google.MiniJson.dll
timeCreated: 1480838400
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
platformData:
Android:
enabled: 1
settings:
CPU: AnyCPU
Any:
enabled: 0
settings: {}
Editor:
enabled: 1
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
Linux:
enabled: 1
settings:
CPU: x86
Linux64:
enabled: 1
settings:
CPU: x86_64
LinuxUniversal:
enabled: 1
settings:
CPU: AnyCPU
OSXIntel:
enabled: 1
settings:
CPU: x86
OSXIntel64:
enabled: 1
settings:
CPU: x86_64
OSXUniversal:
enabled: 1
settings:
CPU: AnyCPU
Web:
enabled: 0
settings: {}
WebStreamed:
enabled: 0
settings: {}
Win:
enabled: 1
settings:
CPU: x86
Win64:
enabled: 1
settings:
CPU: x86_64
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
iOS:
enabled: 1
settings:
CompileFlags:
FrameworkDependencies:
tvOS:
enabled: 1
settings:
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 52e7568e519864d4bb5123d2dc18f0fc
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,81 @@
fileFormatVersion: 2
guid: 52718a3a80d44aacb368bcc9d62dd804
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Plugins/iOS/Firebase.Analytics.dll
timeCreated: 1480838400
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
platformData:
Android:
enabled: 0
settings:
CPU: AnyCPU
Any:
enabled: 0
settings: {}
Editor:
enabled: 0
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
Linux:
enabled: 0
settings:
CPU: None
Linux64:
enabled: 0
settings:
CPU: None
LinuxUniversal:
enabled: 0
settings:
CPU: None
OSXIntel:
enabled: 0
settings:
CPU: None
OSXIntel64:
enabled: 0
settings:
CPU: None
OSXUniversal:
enabled: 0
settings:
CPU: None
Web:
enabled: 0
settings: {}
WebStreamed:
enabled: 0
settings: {}
Win:
enabled: 0
settings:
CPU: None
Win64:
enabled: 0
settings:
CPU: None
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
iOS:
enabled: 1
settings:
CompileFlags:
FrameworkDependencies:
tvOS:
enabled: 1
settings:
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,81 @@
fileFormatVersion: 2
guid: 5f3feda1a91343759b7eb58a29b492b7
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Plugins/iOS/Firebase.App.dll
timeCreated: 1480838400
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
platformData:
Android:
enabled: 0
settings:
CPU: AnyCPU
Any:
enabled: 0
settings: {}
Editor:
enabled: 0
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
Linux:
enabled: 0
settings:
CPU: None
Linux64:
enabled: 0
settings:
CPU: None
LinuxUniversal:
enabled: 0
settings:
CPU: None
OSXIntel:
enabled: 0
settings:
CPU: None
OSXIntel64:
enabled: 0
settings:
CPU: None
OSXUniversal:
enabled: 0
settings:
CPU: None
Web:
enabled: 0
settings: {}
WebStreamed:
enabled: 0
settings: {}
Win:
enabled: 0
settings:
CPU: None
Win64:
enabled: 0
settings:
CPU: None
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
iOS:
enabled: 1
settings:
CompileFlags:
FrameworkDependencies:
tvOS:
enabled: 1
settings:
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,81 @@
fileFormatVersion: 2
guid: 3c83c9a9845245cfbbab5a52932b5045
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Plugins/iOS/Firebase.Crashlytics.dll
timeCreated: 1480838400
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
platformData:
Android:
enabled: 0
settings:
CPU: AnyCPU
Any:
enabled: 0
settings: {}
Editor:
enabled: 0
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
Linux:
enabled: 0
settings:
CPU: None
Linux64:
enabled: 0
settings:
CPU: None
LinuxUniversal:
enabled: 0
settings:
CPU: None
OSXIntel:
enabled: 0
settings:
CPU: None
OSXIntel64:
enabled: 0
settings:
CPU: None
OSXUniversal:
enabled: 0
settings:
CPU: None
Web:
enabled: 0
settings: {}
WebStreamed:
enabled: 0
settings: {}
Win:
enabled: 0
settings:
CPU: None
Win64:
enabled: 0
settings:
CPU: None
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
iOS:
enabled: 1
settings:
CompileFlags:
FrameworkDependencies:
tvOS:
enabled: 1
settings:
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 66400fe1e1b504c87aeb98f71f13eadb
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,81 @@
fileFormatVersion: 2
guid: 35bfcced25264151bd76b628a1dfa989
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Plugins/x86_64/FirebaseCppAnalytics.bundle
timeCreated: 1480838400
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
platformData:
Android:
enabled: 0
settings:
CPU: AnyCPU
Any:
enabled: 0
settings: {}
Editor:
enabled: 1
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
Linux:
enabled: 0
settings:
CPU: None
Linux64:
enabled: 0
settings:
CPU: None
LinuxUniversal:
enabled: 0
settings:
CPU: None
OSXIntel:
enabled: 0
settings:
CPU: None
OSXIntel64:
enabled: 1
settings:
CPU: x86_64
OSXUniversal:
enabled: 1
settings:
CPU: AnyCPU
Web:
enabled: 0
settings: {}
WebStreamed:
enabled: 0
settings: {}
Win:
enabled: 0
settings:
CPU: None
Win64:
enabled: 0
settings:
CPU: None
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
iOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
tvOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,81 @@
fileFormatVersion: 2
guid: c48626ae27ed478483ba85fd7c81c04b
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Plugins/x86_64/FirebaseCppAnalytics.dll
timeCreated: 1480838400
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
platformData:
Android:
enabled: 0
settings:
CPU: AnyCPU
Any:
enabled: 0
settings: {}
Editor:
enabled: 1
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
Linux:
enabled: 0
settings:
CPU: None
Linux64:
enabled: 0
settings:
CPU: None
LinuxUniversal:
enabled: 0
settings:
CPU: None
OSXIntel:
enabled: 0
settings:
CPU: None
OSXIntel64:
enabled: 0
settings:
CPU: None
OSXUniversal:
enabled: 0
settings:
CPU: None
Web:
enabled: 0
settings: {}
WebStreamed:
enabled: 0
settings: {}
Win:
enabled: 0
settings:
CPU: None
Win64:
enabled: 1
settings:
CPU: x86_64
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
iOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
tvOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,81 @@
fileFormatVersion: 2
guid: 590090df30d142acba7e7be939fd2988
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Plugins/x86_64/FirebaseCppAnalytics.so
timeCreated: 1480838400
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
platformData:
Android:
enabled: 0
settings:
CPU: AnyCPU
Any:
enabled: 0
settings: {}
Editor:
enabled: 1
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
Linux:
enabled: 0
settings:
CPU: None
Linux64:
enabled: 1
settings:
CPU: x86_64
LinuxUniversal:
enabled: 1
settings:
CPU: AnyCPU
OSXIntel:
enabled: 0
settings:
CPU: None
OSXIntel64:
enabled: 0
settings:
CPU: None
OSXUniversal:
enabled: 0
settings:
CPU: None
Web:
enabled: 0
settings: {}
WebStreamed:
enabled: 0
settings: {}
Win:
enabled: 0
settings:
CPU: None
Win64:
enabled: 0
settings:
CPU: None
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
iOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
tvOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,81 @@
fileFormatVersion: 2
guid: e28ad7b28ca9476bb48b1b3c8e16f9e0
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Plugins/x86_64/FirebaseCppApp-13_11_0.bundle
timeCreated: 1480838400
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
platformData:
Android:
enabled: 0
settings:
CPU: AnyCPU
Any:
enabled: 0
settings: {}
Editor:
enabled: 1
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
Linux:
enabled: 0
settings:
CPU: None
Linux64:
enabled: 0
settings:
CPU: None
LinuxUniversal:
enabled: 0
settings:
CPU: None
OSXIntel:
enabled: 0
settings:
CPU: None
OSXIntel64:
enabled: 1
settings:
CPU: x86_64
OSXUniversal:
enabled: 1
settings:
CPU: AnyCPU
Web:
enabled: 0
settings: {}
WebStreamed:
enabled: 0
settings: {}
Win:
enabled: 0
settings:
CPU: None
Win64:
enabled: 0
settings:
CPU: None
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
iOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
tvOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,81 @@
fileFormatVersion: 2
guid: ae2855431e47456eb96dde4d8734cbb4
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Plugins/x86_64/FirebaseCppApp-13_11_0.dll
timeCreated: 1480838400
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
platformData:
Android:
enabled: 0
settings:
CPU: AnyCPU
Any:
enabled: 0
settings: {}
Editor:
enabled: 1
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
Linux:
enabled: 0
settings:
CPU: None
Linux64:
enabled: 0
settings:
CPU: None
LinuxUniversal:
enabled: 0
settings:
CPU: None
OSXIntel:
enabled: 0
settings:
CPU: None
OSXIntel64:
enabled: 0
settings:
CPU: None
OSXUniversal:
enabled: 0
settings:
CPU: None
Web:
enabled: 0
settings: {}
WebStreamed:
enabled: 0
settings: {}
Win:
enabled: 0
settings:
CPU: None
Win64:
enabled: 1
settings:
CPU: x86_64
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
iOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
tvOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,81 @@
fileFormatVersion: 2
guid: a89a0cc40d794066acbe6012ab42e397
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/Plugins/x86_64/FirebaseCppApp-13_11_0.so
timeCreated: 1480838400
PluginImporter:
serializedVersion: 1
iconMap: {}
executionOrder: {}
isPreloaded: 0
platformData:
Android:
enabled: 0
settings:
CPU: AnyCPU
Any:
enabled: 0
settings: {}
Editor:
enabled: 1
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
Linux:
enabled: 0
settings:
CPU: None
Linux64:
enabled: 1
settings:
CPU: x86_64
LinuxUniversal:
enabled: 1
settings:
CPU: AnyCPU
OSXIntel:
enabled: 0
settings:
CPU: None
OSXIntel64:
enabled: 0
settings:
CPU: None
OSXUniversal:
enabled: 0
settings:
CPU: None
Web:
enabled: 0
settings: {}
WebStreamed:
enabled: 0
settings: {}
Win:
enabled: 0
settings:
CPU: None
Win64:
enabled: 0
settings:
CPU: None
WindowsStoreApps:
enabled: 0
settings:
CPU: AnyCPU
iOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
tvOS:
enabled: 0
settings:
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9d0ba89c4226f42b6aa792265b7be256
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3340aa5cc341a4faf9bf384c4d9570e1
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6fed131893fdf432ea1059e34d8fc67b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e7cae65d5ac724081ae3f4e61484d6d3
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3091e7d22a50b48aca10d1928e7d8eb4
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 22b671d089aca454eab5e547763ee66c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,13 @@
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 \
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-analytics-unity</artifactId>
<version>13.11.0</version>
<packaging>aar</packaging>
<dependencies>
</dependencies>
</project>

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 0d9ced3aa58945fc8070f0f6f47d70e8
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/m2repository/com/google/firebase/firebase-analytics-unity/13.11.0/firebase-analytics-unity-13.11.0.pom
timeCreated: 1480838400
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 7318e9942fbb40baa0a1b2827b4f58a6
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/m2repository/com/google/firebase/firebase-analytics-unity/13.11.0/firebase-analytics-unity-13.11.0.srcaar
timeCreated: 1480838400
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
<metadata>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-analytics-unity</artifactId>
<versioning>
<release>13.11.0</release>
<versions><version>13.11.0</version></versions>
<lastUpdated/>
</versioning>
</metadata>

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 291f81d8ae2745cf913a96d116f2e3f7
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/m2repository/com/google/firebase/firebase-analytics-unity/maven-metadata.xml
timeCreated: 1480838400
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d31ba98868fbd4d3cba7efd9d0b29d73
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5804c507f49e1477ead1dc1b3bfd5cbe
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,13 @@
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 \
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-app-unity</artifactId>
<version>13.11.0</version>
<packaging>aar</packaging>
<dependencies>
</dependencies>
</project>

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 0e51fdd3bd6d41c08f9ba308741fa971
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/m2repository/com/google/firebase/firebase-app-unity/13.11.0/firebase-app-unity-13.11.0.pom
timeCreated: 1480838400
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 0ee3164025b44a37be407e71ecde7bdd
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/m2repository/com/google/firebase/firebase-app-unity/13.11.0/firebase-app-unity-13.11.0.srcaar
timeCreated: 1480838400
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
<metadata>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-app-unity</artifactId>
<versioning>
<release>13.11.0</release>
<versions><version>13.11.0</version></versions>
<lastUpdated/>
</versioning>
</metadata>

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 96337775a7c941d88ea15f8026ad6f8e
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/m2repository/com/google/firebase/firebase-app-unity/maven-metadata.xml
timeCreated: 1480838400
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d339eb508d3da430c96c6a7819489dbc
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e47d6ba6e7117420591206d02e2159f8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,13 @@
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 \
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-crashlytics-unity</artifactId>
<version>13.11.0</version>
<packaging>aar</packaging>
<dependencies>
</dependencies>
</project>

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5759b0f36b8647f9af0b1766202cdba4
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/m2repository/com/google/firebase/firebase-crashlytics-unity/13.11.0/firebase-crashlytics-unity-13.11.0.pom
timeCreated: 1480838400
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 58682af3155341bc8e7d6cd1c8ca118e
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/m2repository/com/google/firebase/firebase-crashlytics-unity/13.11.0/firebase-crashlytics-unity-13.11.0.srcaar
timeCreated: 1480838400
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
<metadata>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-crashlytics-unity</artifactId>
<versioning>
<release>13.11.0</release>
<versions><version>13.11.0</version></versions>
<lastUpdated/>
</versioning>
</metadata>

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: eda65244fc1b407e8948b25b31c17991
labels:
- gvh
- gvh_version-13.11.0
- gvhp_exportpath-Firebase/m2repository/com/google/firebase/firebase-crashlytics-unity/maven-metadata.xml
timeCreated: 1480838400
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant: