Push 알림을 수신하기 위해 Unity3d에 Firebase를 통합하려고합니다.Unity3d FirebaseApp 초기화에 실패했습니다.
나는 다음과 같은 오류를 얻을 때 응용 프로그램 발사 : 내 구글 - services.json와
I/dalvikvm(7881): Could not find method android.content.Context.isDeviceProtectedStorage, referenced from method com.google.firebase.FirebaseApp.zza
I/FirebaseInitProvider(7881): FirebaseApp initialization unsuccessful
중포 기지 메시징 샘플 잘 작동. 그래서 콘솔 구성이 맞다고 가정합니다.
1. Android Studio에서 라이브러리 프로젝트를 만들었습니다.
필자는 Android Studio에서 .jar를 빌드하는 웹 사이트와 firebase를 추가하는 공식 문서를 따랐습니다.
http://www.thegamecontriver.com/2015/04/android-plugin-unity-android-studio.html
프로젝트 Gradle을 파일 :
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.1'
classpath 'com.google.gms:google-services:3.0.0'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
응용 프로그램 Gradle을 파일하십시오 .JAR가 성공적으로 생성되는이 시점에서
apply plugin: 'com.android.library'
android {
compileSdkVersion 24
buildToolsVersion "24.0.3"
sourceSets {
main {
java {
srcDir 'src/main/java'
}
}
}
defaultConfig {
minSdkVersion 15
targetSdkVersion 24
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.google.firebase:firebase-core:9.6.1'
compile 'com.google.firebase:firebase-messaging:9.6.1'
compile files('libs/classes.jar')
}
task deleteOldJar(type: Delete) {
delete 'release/NotificationPlugin.jar'
}
task exportJar(type: Copy) {
from('build/intermediates/bundles/release/')
into('release/')
include('classes.jar')
rename('classes.jar', 'NotificationPlugin.jar')
}
exportJar.dependsOn(deleteOldJar, build)
apply plugin: 'com.google.gms.google-services'
.
2. Unity에서 JarResolver 의존성을 만들었습니다.
나는
https://github.com/googleanalytics/google-analytics-plugin-for-unity
FirebaseDependencies.cs
using Google.JarResolver;
using UnityEditor;
[InitializeOnLoad]
public static class FirebaseDependencies
{
private static readonly string PluginName = "Firebase";
static FirebaseDependencies()
{
PlayServicesSupport svcSupport = PlayServicesSupport.CreateInstance(
PluginName,
EditorPrefs.GetString("AndroidSdkRoot"),
"ProjectSettings");
svcSupport.DependOn("com.google.firebase",
"firebase-core",
PluginVersion.PlayServicesVersionConstraint);
svcSupport.DependOn("com.google.firebase",
"firebase-messaging",
PluginVersion.PlayServicesVersionConstraint);
}
}
PluginVersion (다른 플러그인을 업그레이드 exemple를위한 Google 웹 로그 분석) 다른 구글 화합 패키지로 발견 PlayServicesResolver 버전 1.1을 사용합니다. CS
public class PluginVersion
{
public const string PlayServicesVersionConstraint = "9.6+";
}
ResolveClientJars 명령 다음에 모든 종속성이 Plugins/Android 폴더에 복사됩니다.
AndroidManifest.xml
firebase-analytics-9.6.1
firebase-analytics-impl-9.6.1
firebase-common-9.6.1
firebase-core-9.6.1
firebase-iid-9.6.1
firebase-messaging-9.6.1
google-services.json
play-services-basement-9.6.1
play-services-tasks-9.6.1
support-annotations-24.0.0.jar
support-v4-24.0.0
이 시점에서 모든 것이 완벽하게 작동하며 빌드 프로세스 중에 오류가없는 것으로 보입니다.
내가 뭘 잘못하고있어?
google-services.json을 스트리밍 애셋 폴더로 이동하려고 시도 했습니까? 문제는 그 파일을 찾을 수 없다는 것일 수 있습니다. – turnipinrut
android studio에서 firebase를 사용할 때 파일이 앱 모듈의 루트에 있는지 확인해야합니다. 따라서 유니티를 내보낼 때 올바른 위치에 있지 않을 수도 있습니다. – turnipinrut
그 밖의 모든 것이 올바르게 보입니다. 나에게 – turnipinrut