Ошибка Android Studio при входе через Google с использованием Firebase - PullRequest
0 голосов
/ 29 ноября 2018

Я новичок в Android Studio, я пытаюсь войти в систему с Google, чтобы получить информацию и работать с ней.Я скачал инструменты помощника Firebase для настройки приложения.

Когда я запускаю приложение, я получаю сообщение «Приложение перестало работать»

Если я смотрю на журнал, это то, что он говорит:

 2018-11-29 20:29:04.773 11219-11219/com.example.jose_antonio_martin_alvarez.agenda_de_bolsillo E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.example.jose_antonio_martin_alvarez.agenda_de_bolsillo, PID: 11219
        java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/api/Api$zzf;
            at com.google.android.gms.auth.api.Auth.<clinit>(Unknown Source:0)
            at com.example.jose_antonio_martin_alvarez.agenda_de_bolsillo.login.Login.onCreate(Login.java:40)
            at android.app.Activity.performCreate(Activity.java:6975)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
            at android.app.ActivityThread.-wrap11(Unknown Source:0)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
            at android.os.Handler.dispatchMessage(Handler.java:105)
            at android.os.Looper.loop(Looper.java:164)
            at android.app.ActivityThread.main(ActivityThread.java:6541)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
         Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.api.Api$zzf" on path: DexPathList[[zip file "/data/app/com.example.jose_antonio_martin_alvarez.agenda_de_bolsillo-VxwZdUA7dpooKHbGqfGyhw==/base.apk", zip file "/data/app/com.example.jose_antonio_martin_alvarez.agenda_de_bolsillo-VxwZdUA7dpooKHbGqfGyhw==/split_lib_dependencies_apk.apk", zip file "/data/app/com.example.jose_antonio_martin_alvarez.agenda_de_bolsillo-VxwZdUA7dpooKHbGqfGyhw==/split_lib_resources_apk.apk", zip file "/data/app/com.example.jose_antonio_martin_alvarez.agenda_de_bolsillo-VxwZdUA7dpooKHbGqfGyhw==/split_lib_slice_0_apk.apk", zip file "/data/app/com.example.jose_antonio_martin_alvarez.agenda_de_bolsillo-VxwZdUA7dpooKHbGqfGyhw==/split_lib_slice_1_apk.apk", zip file "/data/app/com.example.jose_antonio_martin_alvarez.agenda_de_bolsillo-VxwZdUA7dpooKHbGqfGyhw==/split_lib_slice_2_apk.apk", zip file "/data/app/com.example.jose_antonio_martin_alvarez.agenda_de_bolsillo-VxwZdUA7dpooKHbGqfGyhw==/split_lib_slice_3_apk.apk", zip file "/data/app/com.example.jose_antonio_martin_alvarez.agenda_de_bolsillo-VxwZdUA7dpooKHbGqfGyhw==/split_lib_slice_4_apk.apk", zip file "/data/app/com.example.jose_antonio_martin_alvarez.agenda_de_bolsillo-VxwZdUA7dpooKHbGqfGyhw==/split_lib_slice_5_apk.apk", zip file "/data/app/com.example.jose_antonio_martin_alvarez.agenda_de_bolsillo-VxwZdUA7dpooKHbGqfGyhw==/split_lib_slice_6_apk.apk", zip file "/data/app/com.example.jose_antonio_martin_alvarez.agenda_de_bolsillo-VxwZdUA7dpooKHbGqfGyhw==/split_lib_slice_7_apk.apk", zip file "/data/app/com.example.jose_antonio_martin_alvarez.agenda_de_bolsillo-VxwZdUA7dpooKHbGqfGyhw==/split_lib_slice_8_apk.apk", zip file "/data/app/com.example.jose_antonio_martin_alvarez.agenda_de_bolsillo-VxwZdUA7dpooKHbGqfGyhw==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.example.jose_antonio_martin_alvarez.agenda_de_bolsillo-VxwZdUA7dpooKHbGqfGyhw==/lib/x86, /system/lib, /vendor/lib]]
            at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
            at com.google.android.gms.auth.api.Auth.<clinit>(Unknown Source:0) 
            at com.example.jose_antonio_martin_alvarez.agenda_de_bolsillo.login.Login.onCreate(Login.java:40) 
            at android.app.Activity.performCreate(Activity.java:6975) 
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213) 
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 
            at android.app.ActivityThread.-wrap11(Unknown Source:0) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 
            at android.os.Handler.dispatchMessage(Handler.java:105) 
            at android.os.Looper.loop(Looper.java:164) 
            at android.app.ActivityThread.main(ActivityThread.java:6541) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 
            Suppressed: java.io.IOException: No original dex files found for dex location /data/app/com.example.jose_antonio_martin_alvarez.agenda_de_bolsillo-VxwZdUA7dpooKHbGqfGyhw==/split_lib_resources_apk.apk
            at dalvik.system.DexFile.openDexFileNative(Native Method)
            at dalvik.system.DexFile.openDexFile(DexFile.java:353)
            at dalvik.system.DexFile.<init>(DexFile.java:100)
            at dalvik.system.DexFile.<init>(DexFile.java:74)
            at dalvik.system.DexPathList.loadDexFile(DexPathList.java:374)
            at dalvik.system.DexPathList.makeDexElements(DexPathList.java:337)
            at dalvik.system.DexPathList.<init>(DexPathList.java:157)
    2018-11-29 20:29:04.773 11219-11219/com.example.jose_antonio_martin_alvarez.agenda_de_bolsillo E/AndroidRuntime:     at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:65)
            at dalvik.system.PathClassLoader.<init>(PathClassLoader.java:64)
            at com.android.internal.os.PathClassLoaderFactory.createClassLoader(PathClassLoaderFactory.java:43)
            at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:69)
            at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:36)
            at android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:676)
            at android.app.LoadedApk.getClassLoader(LoadedApk.java:709)
            at android.app.LoadedApk.getResources(LoadedApk.java:936)
            at android.app.ContextImpl.createAppContext(ContextImpl.java:2242)
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5672)
            at android.app.ActivityThread.-wrap1(Unknown Source:0)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1661)
                    ... 6 more

Используемый мной эмулятор - API 26. Версия Служб Google Play, которую установил эмулятор, - 14.5.74.

В Gradle (Project) у меня есть:

 buildscript {

        repositories {
            google()
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.2.1'

            //Dependences
            classpath 'com.google.gms:google-services:4.0.1'
        }
    }

    allprojects {
        repositories {
            google()
            jcenter()
        }
    }

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

В Gradle (Модуль):

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.example.jose_antonio_martin_alvarez.agenda_de_bolsillo"
        minSdkVersion 23
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'de.hdodenhof:circleimageview:2.2.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:design:27.1.1'

    //Dependences
    implementation 'com.google.firebase:firebase-core:16.0.1'
    implementation 'com.google.firebase:firebase-auth:16.0.3'
    implementation 'com.google.android.gms:play-services-auth:12.0.1'
}

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

Класс, который управляет событиями этой кнопки входа, - Login.java:

public class Login extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener {

    private GoogleApiClient clienteGoogle;
    private SignInButton botonInicio;
    public static final int CDGO_INI_SESION = 444;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login_activity);

        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN)
                .requestEmail()
                .build();

        clienteGoogle = new GoogleApiClient.Builder(this)
                .enableAutoManage(this, this)
                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .build();

        botonInicio = (SignInButton) findViewById(R.id.botonInicio);
        botonInicio.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = Auth.GoogleSignInApi.getSignInIntent(clienteGoogle);
                startActivityForResult(intent, CDGO_INI_SESION);

            }
        });
    }

    @Override
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == CDGO_INI_SESION) {
            GoogleSignInResult resultado = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            handleSignInResult(resultado);
        }
    }

    private void handleSignInResult(GoogleSignInResult resultado) {
        if(resultado.isSuccess()){
            goMainScreen();
        }else{
            Toast.makeText(this, R.string.error_loggin, Toast.LENGTH_SHORT).show();
        }
    }

    private void goMainScreen(){
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    }
}

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...