Как я могу перевести google-services. json в моем проекте Unity, чтобы моя интеграция с firebase работала в buidl? - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь использовать базу данных FireBase в реальном времени в моем приложении Oculus Quest , но кажется, что google-services не инициализируется должным образом при сборке.

Все работает отлично в моем редакторе Unity, и я не получаю никаких ошибок. Когда я строю квест и использую ADB Logcat, я получаю эту ошибку:

NullReferenceException: ссылка на объект не установлена ​​на экземпляр объекта в QuestionnaireManager.GiveAnswer (ответ System.Int32) [0x00035] в < 7ee908d4e96e4aa6a0d12545247f5f0d>: 0 в UnityEngine.Events.InvokableCall 1[T1].Invoke (T1 args0) [0x00010] in <7717a69884ed4b33971896d8ee45333e>:0 at UnityEngine.Events.CachedInvokableCall 1 [T] .Invoke (аргументы System.Object []) [0x00001] в <7717a69884ed4b33971896d8NEGEINEINE] <7717a69884ed4b33971896d8ee45333e>: 0 в PhysicsButton.OnCollisionExit (UnityEngine.Collision прочее) [0x0002c] в <7ee908d4e96e4aa6a0d12545247f5f0d>: 0

101 * 101 * 1012: 101
1012 *1012* 1012 *1012* 1012 *1012* 1012 *1012* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * тут же, и это только что. * файлы не инициализируются должным образом, но у меня возникают проблемы с выполнением перечисленных шагов, так как я использую Unity и мало знаю о android -национальных командах, командах gradle или gradle.

Любая помощь очень ценится!

1 Ответ

0 голосов
/ 29 апреля 2020

Я не вижу никаких специфических c журналов, связанных с Firebase, в этом фрагменте кода, но Oculus Quest в любом случае будет интересной платформой.

Первое, что вы должны сделать когда вы интегрируете Firebase с проектом Unity, вызываете CheckAndFixDependenciesAsync. Для этого нужно проверить, есть ли у пользователя последняя версия Google Play Services на Android. На iOS и на рабочем столе этот вызов ничего не делает.

Сервисы Google Play также доступны (насколько мне известно) только в качестве лицензированной службы, но не являются частью проекта Android с открытым исходным кодом. Таким образом, обычные Android телефоны и планшеты, как правило, имеют к нему доступ, а устройства, поддерживающие Android (такие как Fire TV), не имеют к нему доступа. Насколько мне известно, в Oculus Quest работает раздвоенная версия Android без Google Play Services. Если это предположение верно, то CheckAndFixDependenciesAsync никогда не вернет DependencyStatus.Available.

Теперь ваш конкретный c вопрос касается базы данных реального времени, которая на самом деле не требует Google Play Services (хорошее практическое правило что если это с открытым исходным кодом , то для этого не требуется Play Services. Но это не обязательно является гарантией). Но если вы используете Firebase Authentication, которую вы, вероятно, делаете для эффективного использования правил базы данных в реальном времени, то , что потребует Play Services и определенно не будет работать как есть на Android. Хотя это может выполняться на уровне собственной библиотеки, помните, что CheckAndFixDependenciesAsync не удастся, если ваше устройство не поддерживает Play Services. В этой ситуации я не знаю, может ли FirebaseApp.DefaultInstance быть не null, и поэтому я не знаю, может ли Database.DefaultInstance быть не null (на самом деле, эта ошибка , кажется, не сулит ничего хорошего).

На данный момент, какие у вас варианты?

Если вы разрабатываете приложение только для себя, возможно, вы можете загрузить Play Services , Я бы вообще рекомендовал против этого, так как вы извлекаете основную часть функциональности из, возможно, сомнительного источника. Если вы сделаете это, возможно, все будет работать (на всякий случай протестируйте на телефоне, прежде чем делать это).

Вы можете просто использовать API REST. Я видел, как этот плагин появился немного, но вы упустите некоторые из работ, которые выполняет команда Firebase Games, чтобы действительно воспользоваться преимуществами собственных возможностей Android (один побочный эффект в конце концов, это вся зависимость игрового магазина).

Вы можете выставить весь свой бэкэнд с помощью Cloud Function s (или Cloud Run , если хотите остаться в C# мире ). Если вы используете обычные (по сравнению с Callable) функции, это простые вызовы отдыха.

Вы также можете использовать JNI-взаимодействие Unity , чтобы попытаться напрямую использовать нативный Android SDK. Это может быть немного болезненно (JNI никогда не бывает веселым, даже с помощниками), но вы можете даже использовать этот проект , чтобы обойти проблемы с аутентификацией!

О, и, прежде всего, подать запрос функции . Даже если ошибка заблокирована, полезно получить больше информации о том, что необходимо и почему. Укажите, на какое устройство вы хотите нацелиться, почему, для чего вам нужен Firebase, и любую другую информацию, которую вы сочтете удобным поделиться своей игрой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...