2016-10-21 2 views
2

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 

이 시점에서 모든 것이 완벽하게 작동하며 빌드 프로세스 중에 오류가없는 것으로 보입니다.

내가 뭘 잘못하고있어?

+0

google-services.json을 스트리밍 애셋 폴더로 이동하려고 시도 했습니까? 문제는 그 파일을 찾을 수 없다는 것일 수 있습니다. – turnipinrut

+0

android studio에서 firebase를 사용할 때 파일이 앱 모듈의 루트에 있는지 확인해야합니다. 따라서 유니티를 내보낼 때 올바른 위치에 있지 않을 수도 있습니다. – turnipinrut

+0

그 밖의 모든 것이 올바르게 보입니다. 나에게 – turnipinrut

답변

0

추가 플러그인을 만들지 않고 Firebase Push Notification을 사용할 수 있습니다. 그러나 흐름은 조금 까다 롭습니다. 빠른 단계는 다음과 같습니다 :

  1. Unity 에디터에서. 빌드 설정에서 Google Android 프로젝트 플래그를 선택하고 프로젝트를 내 보냅니다. 번들 ID 이 Firebase 콘솔의 번들 ID와 일치하는지 확인하십시오.

  2. Android Studio에서. Unity 프로젝트를 가져 오십시오. 중요 :하지 마십시오 열기, 가져 오기!

  3. .gradle 스크립트를 설정하고 here과 같은 google-services.json 파일을 추가하십시오.

  4. Android Studio에서 프로젝트를 빌드하십시오.

관련 문제