Android:NoSuchMethodError:没有静态方法zzy(Ljava / lang / Object;

时间:2017-04-15 19:33:08

标签: java android firebase firebaseui

我创建了一个应用程序,我可以在其中进行两次访问:FirebaseUI Auth和Firebase SDK身份验证(我知道这非常错误,我只为某些测试做了这个)。好吧,从我添加谷歌访问权限开始,我无法通过SDK身份验证访问,应用程序总是崩溃,我不知道为什么。 这是我的代码:

public class MainActivity extends AppCompatActivity
{
DialogProgress dialogProgress;
EditText editEmail;
EditText editPassword;
String email;
String password;
FirebaseAuth firebaseAuth;
final int REQUEST_CODE_GOOGLE = 100;
static Activity activity;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    activity = this;
    editEmail = (EditText) findViewById(R.id.editEmailA);
    editPassword = (EditText) findViewById(R.id.editPasswordA);
    firebaseAuth = FirebaseAuth.getInstance();

    if(firebaseAuth.getCurrentUser()!=null)
    {
        Toast.makeText(getApplicationContext(), "Bentornato " + firebaseAuth.getCurrentUser().getEmail().toString(), Toast.LENGTH_SHORT).show();
        Intent intent = new Intent(MainActivity.this,ProfileActivity.class);
        startActivity(intent);
        finish();
    }

    findViewById(R.id.accediButton).setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            email = editEmail.getText().toString();
            password = editPassword.getText().toString();

            if(TextUtils.isEmpty(email))
            {
                Toast.makeText(getApplicationContext(),"Email vuota",Toast.LENGTH_SHORT).show();
            }

            if(TextUtils.isEmpty(password))
            {
                Toast.makeText(getApplicationContext(),"Password vuota",Toast.LENGTH_SHORT).show();
            }

            if(!(TextUtils.isEmpty(email)||TextUtils.isEmpty(password)))
            {
                DialogProgress.setLayout(0);
                dialogProgress = new DialogProgress();
                dialogProgress.setCancelable(false);
                dialogProgress.show(getSupportFragmentManager().beginTransaction(),"Dialog");

                firebaseAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(MainActivity.this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task)
                    {
                        if (task.isSuccessful())
                        {
                            dialogProgress.dismiss();
                            Toast.makeText(getApplicationContext(), "Bentornato " + firebaseAuth.getCurrentUser().getEmail().toString(), Toast.LENGTH_SHORT).show();
                            Intent intent = new Intent(MainActivity.this,ProfileActivity.class);
                            startActivity(intent);
                            finish();
                        }
                        else
                        {
                            dialogProgress.dismiss();
                            Toast.makeText(getApplicationContext(), "Login fallito " + task.getException().toString(), Toast.LENGTH_LONG).show();
                        }
                    }
                });
            }
        }
    });

    findViewById(R.id.registratiText).setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            Intent intent = new Intent(MainActivity.this,RegistrazioneActivity.class);
            startActivity(intent);
        }
    });

    findViewById(R.id.accediGoogle).setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            AuthUI authUi = AuthUI.getInstance();
            Intent intent = authUi.createSignInIntentBuilder().build();
            startActivityForResult(intent,REQUEST_CODE_GOOGLE);
        }
    });

}

@Override
public void onActivityResult(int codice, int risultato, Intent data)
{
    super.onActivityResult(codice, risultato, data);
    if(codice==REQUEST_CODE_GOOGLE && risultato==RESULT_OK && data!=null)
    {
        IdpResponse idpResponse = IdpResponse.fromResultIntent(data);
        Toast.makeText(getApplicationContext(),idpResponse + "",Toast.LENGTH_LONG).show();
    }
}
}

这是我的gradle项目:

buildscript 
{
  repositories 
  {
    jcenter()
  }
  dependencies 
  {
    classpath 'com.android.tools.build:gradle:2.2.3'
    classpath 'com.google.gms:google-services:3.0.0'
  }
}

allprojects 
{
  repositories 
  {
    jcenter()
    maven { url 'https://maven.fabric.io/public' }
  }
}

task clean(type: Delete) 
{
delete rootProject.buildDir
}

这是我的gradle应用程序:

apply plugin: 'com.android.application'

android 
{
compileSdkVersion 25
buildToolsVersion "25.0.2"
  defaultConfig 
  {
    applicationId "com.example.utente.myfirebase"
    minSdkVersion 16
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner 
    "android.support.test.runner.AndroidJUnitRunner"
  }
buildTypes 
{
  release 
  {
  minifyEnabled false
  proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-
  rules.pro'
  }
}
}

dependencies 
{
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', 
{
    exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.1.0'
compile 'com.google.firebase:firebase-auth:9.4.0'
compile 'com.google.firebase:firebase-database:9.4.0'
compile 'com.google.firebase:firebase-storage:9.4.0'
compile 'com.firebaseui:firebase-ui-auth:1.2.0'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'

}
apply plugin: 'com.google.gms.google-services'

日志:

04-15 21:34:06.318 26912-26912/com.example.utente.myfirebase A/FirebaseApp: Firebase API initialization failure.
                                                                        java.lang.reflect.InvocationTargetException
                                                                            at java.lang.reflect.Method.invoke(Native Method)
                                                                            at java.lang.reflect.Method.invoke(Method.java:372)
                                                                            at com.google.firebase.FirebaseApp.zza(Unknown Source)
                                                                            at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
                                                                            at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
                                                                            at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
                                                                            at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source)
                                                                            at android.content.ContentProvider.attachInfo(ContentProvider.java:1737)
                                                                            at android.content.ContentProvider.attachInfo(ContentProvider.java:1712)
                                                                            at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
                                                                            at android.app.ActivityThread.installProvider(ActivityThread.java:5437)
                                                                            at android.app.ActivityThread.installContentProviders(ActivityThread.java:5032)
                                                                            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4972)
                                                                            at android.app.ActivityThread.access$1600(ActivityThread.java:177)
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1491)
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                            at android.os.Looper.loop(Looper.java:135)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5910)
                                                                            at java.lang.reflect.Method.invoke(Native Method)
                                                                            at java.lang.reflect.Method.invoke(Method.java:372)
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
                                                                         Caused by: java.lang.NoSuchMethodError: No static method zzy(Ljava/lang/Object;)Ljava/lang/Object; in class Lcom/google/android/gms/common/internal/zzab; or its super classes (declaration of 'com.google.android.gms.common.internal.zzab' appears in /data/app/com.example.utente.myfirebase-2/split_lib_dependencies_apk.apk:classes33.dex)
                                                                            at com.google.android.gms.measurement.internal.zzx.zzdo(Unknown Source)
                                                                            at com.google.android.gms.measurement.AppMeasurement.getInstance(Unknown Source)
                                                                            at java.lang.reflect.Method.invoke(Native Method) 
                                                                            at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                            at com.google.firebase.FirebaseApp.zza(Unknown Source) 
                                                                            at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) 
                                                                            at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) 
                                                                            at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) 
                                                                            at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source) 
                                                                            at android.content.ContentProvider.attachInfo(ContentProvider.java:1737) 
                                                                            at android.content.ContentProvider.attachInfo(ContentProvider.java:1712) 
                                                                            at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source) 
                                                                            at android.app.ActivityThread.installProvider(ActivityThread.java:5437) 
                                                                            at android.app.ActivityThread.installContentProviders(ActivityThread.java:5032) 
                                                                            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4972) 
                                                                            at android.app.ActivityThread.access$1600(ActivityThread.java:177) 
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1491) 
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                            at android.os.Looper.loop(Looper.java:135) 
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5910) 
                                                                            at java.lang.reflect.Method.invoke(Native Method) 
                                                                            at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405) 
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200) 

4 个答案:

答案 0 :(得分:6)

您必须使用兼容版本的Firebase API库和Firebase用户界面。兼容版本表位于Firebase UI documentation。将com.google.firebase:firebase-*库的9.4.0更改为10.2.0。

compile 'com.android.support:appcompat-v7:25.1.0'
compile 'com.google.firebase:firebase-auth:10.2.0'
compile 'com.google.firebase:firebase-database:10.2.0'
compile 'com.google.firebase:firebase-storage:10.2.0'
compile 'com.firebaseui:firebase-ui-auth:1.2.0'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'

答案 1 :(得分:6)

改变这个:

compile 'com.google.firebase:firebase-auth:9.4.0'
compile 'com.google.firebase:firebase-database:9.4.0'
compile 'com.google.firebase:firebase-storage:9.4.0'

对此:

compile 'com.google.firebase:firebase-auth:10.2.0'
compile 'com.google.firebase:firebase-database:10.2.0'
compile 'com.google.firebase:firebase-storage:10.2.0'

您需要升级Firebase,您使用的是旧版本。您会看到Firebase的10.2.1版本可用,但根据FirebaseUi,它目前支持最高10.2.0的Firebase版本,因此请使用10.2.0。

答案 2 :(得分:0)

  1. 如此处所述,将所有版本更新为最新版本,所有版本应相同
  2. 清理并重建您的项目
  3. 运行项目。

答案 3 :(得分:0)

检查Firebase的可比性版本,建议使用最新版本

就我而言,我忘记添加以下依赖项

compile 'com.google.firebase:firebase-core:9.4.0'  

我的所有依赖项如下

compile 'com.google.firebase:firebase-core:9.4.0'
compile 'com.google.firebase:firebase-messaging:9.4.0'
compile 'com.firebase:firebase-client-android:2.5.1' 

全部用于向设备发送推送通知