2017-02-22 20 views
1

Я хочу использовать Firebase Remote Config в своем приложении. Я создаю новый проект в Android Studio и запускаю Tools - помощник Firebase, как предлагает документация. В создает приложение на console.firebase.google.com и добавьте следующие настройки в мой корень build.gralde: classpath 'com.google.gms:google-services:3.0.0' и приложение build.gralde:Firebase show NoSuchMethodError после добавления его с помощью помощника

apply plugin: 'com.google.gms.google-services' 
… 
compile 'com.google.firebase:firebase-config:10.2.0' 

Чем я добавить к моему MainActivity:

mFirebaseRemoteConfig.activateFetched(); 
mFirebaseRemoteConfig.fetch(); 

Когда я запускаю приложение он падает с журналом на fetch() команды:

E/AndroidRuntime: FATAL EXCEPTION: GoogleApiHandler 
java.lang.NoSuchMethodError: No static method zzz(Ljava/lang/Object;)Ljava/lang/Object; 
    in class Lcom/google/android/gms/common/internal/zzaa; 
    or its super classes (declaration of 'com.google.android.gms.common.internal.zzaa' 
    appears in /data/app/my.packagename-1/base.apk) 
at com.google.android.gms.measurement.internal.zzx.zzbd(Unknown Source) 

Я попытался отключить ти Мгновенный запуск и градация четкие, но все еще есть эта проблема. Как это исправить?

UPD: Я полагаю, что если я перееду линию apply plugin: 'com.google.gms.google-services' от второй до последней строки в приложении build.gralde это устраняет проблему, но почему?

+1

Да, перемещая линию «применить» к последней строке, проблема решена и для меня. :-) – Marlon

ответ

1

Я действительно не знаю. Поэтому вы не указали полный код. Я вижу это так: Сначала вы создаете экземпляр, как этот

mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); 

Затем вы устанавливаете конфиги для развития

FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() 
      .setDeveloperModeEnabled(BuildConfig.DEBUG) 
      .build(); 
    mFirebaseRemoteConfig.setConfigSettings(configSettings); 

Затем вы установите значения по умолчанию mFirebaseRemoteConfig.setDefaults (R.xml.remote_config_defaults) ;

Файл XML должен быть расположен в Рез/XML

Вы делаете выборку данных и в приемнике вы activateFetched()

mFirebaseRemoteConfig.fetch(cacheExpiration) 
      .addOnCompleteListener(this, new OnCompleteListener<Void>() { 
       @Override 
       public void onComplete(@NonNull Task<Void> task) { 
        if (task.isSuccessful()) { 
         Toast.makeText(MainActivity.this, "Fetch Succeeded", 
           Toast.LENGTH_SHORT).show(); 

         // After config data is successfully fetched, it must be activated before newly fetched 
         // values are returned. 
         mFirebaseRemoteConfig.activateFetched(); 
        } else { 
         Toast.makeText(MainActivity.this, "Fetch Failed", 
           Toast.LENGTH_SHORT).show(); 
        } 
        displayWelcomeMessage(); 
       } 
      }); 

Вы получаете значения внутри displayWelcomeMessage(), который должен быть в приемнике, он будет получать значения затем закончить выборки в противном случае (вы собираетесь быть облажался на асинхронном)

Я надеюсь, что я ответил и правильно ответил

Кстати, код всего здесь https://github.com/firebase/quickstart-android/blob/master/config/app/src/main/java/com/google/samples/quickstart/config/MainActivity.java

+0

Спасибо за ответ, но я уже решил проблему, см. Последнее предложение в моем вопросе. – anber

+0

о. ok lol. не видел, что –