2017-04-15 286 views
3

我创造,我可以在两个波访问的应用程序:FirebaseUI验证和火力地堡SDK认证(我知道这是十分错误的,我做了这个只对一些。测试),那么,从我加入谷歌的访问,我不能SDK验证访问,应用老是死机,我不知道为什么 这里是我的代码:安卓的NoSuchMethodError:没有静态方法ZZY(Ljava /郎/对象;

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)  
+0

的可能的复制[升级至Google Play服务后8.4.0在启动我的应用程序崩溃(http://stackoverflow.com/questions/34478757/after-upgrading-to-google-play-services-8-4 -0-my-app-crashes-on-startup) –

+0

你可以发布你的堆栈跟踪吗? –

+0

@代码学徒,但是这是非常不同的 – Curio

回答

6

必须使用火力地堡API库和火力地堡UI的兼容版本。兼容版本表位于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' 
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的版本为10.2.1,但根据FirebaseUi,它目前支持的Firebase版本最高为10.2.0,因此请使用10.2.0。

相关问题