2017-04-15 292 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。

相關問題