support safebrowsingresponse onunhandledkeyeventlistener landroid failed java android gradle

safebrowsingresponse - ¿Por qué sigo recibiendo java.lang.NoClassDefFoundError: android.support.v7.appcompat.R $ attr?



java lang noclassdeffounderror failed resolution of landroid support v7 appcompat r drawable (2)

Acabo de pasar horas con este mismo problema, y ​​pude resolverlo ...

Resultó que estaba por encima del límite dex, tuve multiDexEnabled true en mi archivo build.gradle en defaultConfig, pero parece que me faltaban algunas otras cosas para dispositivos pre 5.0.

defaultConfig { ... multiDexEnabled true ... }

Primero verifiqué mi cuenta de método con esto: https://github.com/mihaip/dex-method-count

Estaba en 67952 métodos ...

Luego actualicé mi build.gradle para agregar soporte multidex.

dependencies { ... compile ''com.android.support:multidex:1.0.0'' ... }

Luego actualicé mi Aplicación (ya tenemos la nuestra) para extender desde MultiDexApplication

package com.me.myapp ... public class Application extends MultiDexApplication {}

Aquí estaban los dos enlaces de la documentación que utilicé para implementar multidex correctamente: https://developer.android.com/tools/building/multidex.html https://developer.android.com/reference/android/support/multidex/ MultiDexApplication.html

Asegúrese de que su aplicación en el manifiesto apunte a su aplicación multidex personalizada

<application ... android:name="com.me.myapp.Application" />

Así que estoy desarrollando una aplicación cursi para hacer publicaciones para entrenarme en Android antes de trabajar en el proyecto de aplicación real de mi empresa. Me estoy encontrando con un error que me está dando un momento muy difícil.

Me dieron una lista de las dependencias de la biblioteca que iba a utilizar, y tengo mi archivo build.gradle configurado para cargarlos. Se sincroniza bien, así que supongo que se hace bien al mejor de mi conocimiento:

dependencies { compile fileTree(dir: ''libs'', include: [''*.jar'']) compile ''com.android.support:appcompat-v7:22.1.1'' compile ''com.google.android.gms:play-services:7.3.0'' compile ''com.squareup.okhttp:okhttp:2.3.0'' compile ''com.squareup.retrofit:retrofit:1.7.0'' compile ''com.google.code.gson:gson:2.3'' compile ''com.squareup.dagger:dagger:1.2.2'' compile ''com.squareup.dagger:dagger-compiler:1.2.2'' compile ''com.squareup.picasso:picasso:2.5.2'' compile ''com.android.support:recyclerview-v7:22.1.1'' compile ''com.squareup:otto:1.3.7'' compile ''com.path:android-priority-jobqueue:1.1.2'' compile ''io.realm:realm-android:0.80.1'' compile ''com.jakewharton:butterknife:6.1.0'' compile ''com.android.support:multidex:1.0.0'' compile ''com.android.support:appcompat-v7:22.1.1'' }

Y realmente he instalado la biblioteca de soporte android Y el repositorio:

Y aun así, sigo intentando y lanzando la aplicación y obtengo el siguiente seguimiento de pila:

java.lang.NoClassDefFoundError: android.support.v7.appcompat.R$attr at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:286) at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:246) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106) at com.anglersatalas.twitstagram.MainActivity.onCreate(MainActivity.java:23) at android.app.Activity.performCreate(Activity.java:5451) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392) at android.app.ActivityThread.access$900(ActivityThread.java:169) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:146) at android.app.ActivityThread.main(ActivityThread.java:5487) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) at dalvik.system.NativeStart.main(Native Method)

En todo el mundo en Stack Overflow, he visto la solución de agregar las bibliotecas de v7 de appcompat como dicen hacer en el sitio web de Android, que he demostrado que he hecho anteriormente. No puedo entender mi vida por qué esto todavía está sucediendo. Mirando el rastro de la pila, se rompe en mi MainActivity en el método setContentView ():

package com.anglersatalas.twitstagram; import android.os.Bundle; import com.anglersatalas.twitstagram.R; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; import com.anglersatalas.twitstagram.api.PostService; import com.anglersatalas.twitstagram.models.Post; import java.util.List; import retrofit.RestAdapter; public class MainActivity extends AppCompatActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(com.anglersatalas.twitstagram.R.layout.activity_main); TextView tv = (TextView)findViewById(com.anglersatalas.twitstagram.R.id.textView); RestAdapter adapter = new RestAdapter.Builder() .setEndpoint("10.0.0.248/testserver/backend/web") .build(); PostService service = adapter.create(PostService.class); List<Post> list = service.getPosts(); String str = ""; for(Post p : list){ str += String.format("%s/n", p); } tv.setText(str); } ... }

Al hacer clic hasta el archivo de clase que llama al método que arroja la excepción, se muestra que no puede encontrar ''android.support.v7.appcompat.R;'':

Mis compañeros de trabajo y yo estamos perdidos. ¿Alguna sugerencia sobre cómo remediar esto?


Solo pasé unas horas en él, y ahora lo resolvió.

Una restricción para algunas aplicaciones de Android es la cantidad total de métodos que admite el archivo .dex compilado subyacente. Está limitado por 16 bits, o 65,536 valores.

Cuando incluye bibliotecas de terceros en su aplicación, tendrá todos sus métodos en su archivo .dex. Las API más grandes, como las incluidas en los servicios de Google Play, comenzarán a comer en el límite muy rápidamente.

Para más detalles: servicios de Google Play y límites del método DEX

En mi caso, estaba usando Google Play Services para Google / Autenticación de YouTube en mi aplicación.

compilar ''com.google.android.gms: play-services: 7.3.0''

Así que lo cambié a la

compile ''com.google.android.gms: play-services-identity: 7.3.0''

como lo requería solo para propósitos de Identidad / Autenticación. De modo que puede seleccionar la biblioteca individual de acuerdo con sus requisitos.

Por ejemplo, si todo lo que quieres usar es Maps , en cambio tendrías:

compilar ''com.google.android.gms: play-services-maps: 7.3.0''

Del mismo modo para la ubicación

compilar ''com.google.android.gms: play-services-location: 7.3.0''

¡Espero que te ayude!