Я новичок в 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);
}
}
Спасибо.