我们正在开发一个统一的应用程序,目的是部署到android并使用firebase来方便用户登录和实时数据库。
我们使用实时数据库来存储特定对象的位置和信息,并在所有玩家之间进行同步。数据库还存储有关每个用户的个人数据。我们的实现有一个名为GenericInterface
的单个父对象,其中PlayerInterface
和BuildingInterface
之间的所有共享代码都扩展为GenericInterface
。
GenericInterface
具有我们的firebase实现的初始化代码:
Auth = FirebaseAuth.DefaultInstance;
// Set this before calling into the realtime database.
FirebaseApp.DefaultInstance.SetEditorDatabaseUrl(/*DB Url*/);
//set up restricted access.
// Set these values before calling into the realtime database.
FirebaseApp.DefaultInstance.SetEditorP12FileName(/* P12 filename */);
FirebaseApp.DefaultInstance.SetEditorServiceAccountEmail(/*AccountEmail*/);
FirebaseApp.DefaultInstance.SetEditorP12Password(/*Password*/);
// Get the root reference location of the database
Reference = FirebaseDatabase.DefaultInstance.RootReference;
然后Reference
和PlayerInterface
使用BuildingInterface
来通过侦听器加载数据,例如PlayerInterface
:
var path = string.Format("players/{0}", pid);
Reference = FirebaseDatabase.DefaultInstance.GetReference(path);
Reference.ValueChanged += HandleValueChanged;
pid是玩家的ID。
项目(除了玩家登录)在启动时运行,并在统一编辑器中运行,BuildingInterface
正在获取并正确显示建筑物。但是,在AVD或Android手机上构建和运行时,不显示任何内容,adb.exe logcat -s Unity
显示以下错误:
DBInterfaces.Abstract.GenericInterface`1:_start() (at [...]\Assets\Scripts\Firebase\Interfaces\Abstract\GenericInterface.cs:24)
DBInterfaces.Abstract.GenericInterface`1:.ctor() (at [...]\Assets\Scripts\Firebase\Interfaces\Abstract\GenericInterface.cs:18)
DBInterfaces.BuildingInterface:.ctor() (at E:\Users\Documen
InitializationException: Exception of type 'Firebase.InitializationException' was thrown.
at Firebase.Auth.FirebaseAuth+<GetAuth>c__AnonStorey1.<>m__0 () [0x00000] in <filename unknown>:0
at Firebase.FirebaseApp.TranslateDllNotFoundException (System.Action closureToExecute) [0x00000] in <filename unknown>:0
[为了清晰起见,修剪了长文件路径]
GenericInterface
的第24行对应Auth = FirebaseAuth.DefaultInstance;
我们在本周的大部分时间里一直致力于此,并且没有找到任何可能的解决方案。