android android-studio noclassdeffounderror

NoClassDefFoundError para la biblioteca.jar en tiempo de ejecución en Android Studio



android-studio (1)

Nuevos hallazgos

Mi GS4 (Android 4.3) no puede ejecutar esta aplicación, pero HTC One M8 (Android 5.0.1) puede ejecutarlo

Causa principal

Límite de métodos de 65K Consulte este documento: https://developer.android.com/tools/building/multidex.html Básicamente, hay un límite de referencia de los métodos y la única solución es usar la configuración multidex. Sin embargo, existen implementaciones para plataformas anteriores a 5.0 y posteriores a 5.0.

Solución

La solución se describe en: https://developer.android.com/tools/building/multidex.html https://developer.android.com/reference/android/support/multidex/MultiDexApplication.html Para mi proyecto, ya que es compatible con versiones anteriores de Android, utilizo la solución "biblioteca de soporte multidex".

  1. Establezca la versión de la herramienta de compilación de todos los módulos de la biblioteca y el módulo de la aplicación a la última 21.1.2
  2. Para el módulo que tiene clase de aplicación, agregue compile ''com.android.support:multidex:1.0.0'' como dependencia
  3. Consulte este enlace para modificar su clase de aplicación. https://developer.android.com/reference/android/support/multidex/MultiDexApplication.html
  4. En el mismo script de Gradle, en Android -> bloque de configuración predeterminada, agregue "multiDexEnabled true"
  5. Si su sistema emite el error "Tamaño de pila de Java", en el script de gradle del módulo de la aplicación, agregue lo siguiente

dexOptions { incremental true javaMaxHeapSize "4g" }

Hola amigos en Stack Overflow

Recientemente me encontré con un problema al implementar Fiksu SDK en mi aplicación de Android. Una breve introducción, Fiksu SDK es una herramienta de marketing para registrar instalaciones y eventos. Todos los métodos relacionados con Fiksu están en un archivo .jar llamado "ASOTracking.jar"

El problema:

La biblioteca está configurada correctamente, Gradle no informa de ningún error cuando el proyecto se compila e incluso puedo realizar la depuración de apk. Sin embargo, lanza "java.lang.NoClassDefFoundError" en tiempo de ejecución cuando intenta inicializar el SDK.

El registro:

01-27 14:06:54.801 31166-31166/com.example.myapp I/dalvikvm﹕ Could not find method com.fiksu.asotracking.FiksuDeviceSettingsManager.getInstance, referenced from method com.fiksu.asotracking.FiksuTrackingManager.getClientId 01-27 14:06:54.801 31166-31166/com.example.myapp W/dalvikvm﹕ VFY: unable to resolve static method 13738: Lcom/fiksu/asotracking/FiksuDeviceSettingsManager;.getInstance ()Lcom/fiksu/asotracking/FiksuDeviceSettingsManager; 01-27 14:06:54.801 31166-31166/com.example.myapp D/dalvikvm﹕ VFY: replacing opcode 0x71 at 0x0000 01-27 14:06:54.806 31166-31166/com.example.myapp I/dalvikvm﹕ Could not find method com.fiksu.asotracking.FiksuConfigurationManager.getInstance, referenced from method com.fiksu.asotracking.FiksuTrackingManager.initialize 01-27 14:06:54.806 31166-31166/com.example.myapp W/dalvikvm﹕ VFY: unable to resolve static method 13733: Lcom/fiksu/asotracking/FiksuConfigurationManager;.getInstance ()Lcom/fiksu/asotracking/FiksuConfigurationManager; 01-27 14:06:54.806 31166-31166/com.example.myapp D/dalvikvm﹕ VFY: replacing opcode 0x71 at 0x000f 01-27 14:06:54.806 31166-31166/com.example.myapp I/dalvikvm﹕ Could not find method com.fiksu.asotracking.FiksuDeviceSettingsManager.getInstance, referenced from method com.fiksu.asotracking.FiksuTrackingManager.isAppTrackingEnabled 01-27 14:06:54.806 31166-31166/com.example.myapp W/dalvikvm﹕ VFY: unable to resolve static method 13738: Lcom/fiksu/asotracking/FiksuDeviceSettingsManager;.getInstance ()Lcom/fiksu/asotracking/FiksuDeviceSettingsManager; 01-27 14:06:54.806 31166-31166/com.example.myapp D/dalvikvm﹕ VFY: replacing opcode 0x71 at 0x0000 01-27 14:06:54.806 31166-31166/com.example.myapp I/dalvikvm﹕ Could not find method com.fiksu.asotracking.FiksuDeviceSettingsManager.getInstance, referenced from method com.fiksu.asotracking.FiksuTrackingManager.setAppTrackingEnabled 01-27 14:06:54.806 31166-31166/com.example.myapp W/dalvikvm﹕ VFY: unable to resolve static method 13738: Lcom/fiksu/asotracking/FiksuDeviceSettingsManager;.getInstance ()Lcom/fiksu/asotracking/FiksuDeviceSettingsManager; 01-27 14:06:54.806 31166-31166/com.example.myapp D/dalvikvm﹕ VFY: replacing opcode 0x71 at 0x0010 01-27 14:06:54.806 31166-31166/com.example.myapp I/dalvikvm﹕ Could not find method com.fiksu.asotracking.FiksuDeviceSettingsManager.getInstance, referenced from method com.fiksu.asotracking.FiksuTrackingManager.setClientId 01-27 14:06:54.806 31166-31166/com.example.myapp W/dalvikvm﹕ VFY: unable to resolve static method 13738: Lcom/fiksu/asotracking/FiksuDeviceSettingsManager;.getInstance ()Lcom/fiksu/asotracking/FiksuDeviceSettingsManager; 01-27 14:06:54.806 31166-31166/com.example.myapp D/dalvikvm﹕ VFY: replacing opcode 0x71 at 0x0010 01-27 14:06:54.806 31166-31166/com.example.myapp I/dalvikvm﹕ Could not find method com.fiksu.asotracking.FiksuConfigurationManager.getInstance, referenced from method com.fiksu.asotracking.FiksuTrackingManager.setDebugModeEnabled 01-27 14:06:54.806 31166-31166/com.example.myapp W/dalvikvm﹕ VFY: unable to resolve static method 13733: Lcom/fiksu/asotracking/FiksuConfigurationManager;.getInstance ()Lcom/fiksu/asotracking/FiksuConfigurationManager; 01-27 14:06:54.806 31166-31166/com.example.myapp D/dalvikvm﹕ VFY: replacing opcode 0x71 at 0x0001 01-27 14:06:54.806 31166-31166/com.example.myapp E/dalvikvm﹕ Could not find class ''com.fiksu.asotracking.CustomEventTracker'', referenced from method com.fiksu.asotracking.FiksuTrackingManager.uploadCustomEvent 01-27 14:06:54.806 31166-31166/com.example.myapp W/dalvikvm﹕ VFY: unable to resolve new-instance 2112 (Lcom/fiksu/asotracking/CustomEventTracker;) in Lcom/fiksu/asotracking/FiksuTrackingManager; 01-27 14:06:54.806 31166-31166/com.example.myapp D/dalvikvm﹕ VFY: replacing opcode 0x22 at 0x000f 01-27 14:06:54.806 31166-31166/com.example.myapp E/dalvikvm﹕ Could not find class ''com.fiksu.asotracking.PurchaseEventTracker'', referenced from method com.fiksu.asotracking.FiksuTrackingManager.uploadPurchase 01-27 14:06:54.806 31166-31166/com.example.myapp W/dalvikvm﹕ VFY: unable to resolve new-instance 2125 (Lcom/fiksu/asotracking/PurchaseEventTracker;) in Lcom/fiksu/asotracking/FiksuTrackingManager; 01-27 14:06:54.806 31166-31166/com.example.myapp D/dalvikvm﹕ VFY: replacing opcode 0x22 at 0x0022 01-27 14:06:54.806 31166-31166/com.example.myapp E/dalvikvm﹕ Could not find class ''com.fiksu.asotracking.PurchaseEventTracker'', referenced from method com.fiksu.asotracking.FiksuTrackingManager.uploadPurchaseEvent 01-27 14:06:54.806 31166-31166/com.example.myapp W/dalvikvm﹕ VFY: unable to resolve new-instance 2125 (Lcom/fiksu/asotracking/PurchaseEventTracker;) in Lcom/fiksu/asotracking/FiksuTrackingManager; 01-27 14:06:54.806 31166-31166/com.example.myapp D/dalvikvm﹕ VFY: replacing opcode 0x22 at 0x0014 01-27 14:06:54.806 31166-31166/com.example.myapp E/dalvikvm﹕ Could not find class ''com.fiksu.asotracking.RegistrationEventTracker'', referenced from method com.fiksu.asotracking.FiksuTrackingManager.uploadRegistration 01-27 14:06:54.806 31166-31166/com.example.myapp W/dalvikvm﹕ VFY: unable to resolve new-instance 2126 (Lcom/fiksu/asotracking/RegistrationEventTracker;) in Lcom/fiksu/asotracking/FiksuTrackingManager; 01-27 14:06:54.806 31166-31166/com.example.myapp D/dalvikvm﹕ VFY: replacing opcode 0x22 at 0x001e 01-27 14:06:54.806 31166-31166/com.example.myapp E/dalvikvm﹕ Could not find class ''com.fiksu.asotracking.RegistrationEventTracker'', referenced from method com.fiksu.asotracking.FiksuTrackingManager.uploadRegistrationEvent 01-27 14:06:54.806 31166-31166/com.example.myapp W/dalvikvm﹕ VFY: unable to resolve new-instance 2126 (Lcom/fiksu/asotracking/RegistrationEventTracker;) in Lcom/fiksu/asotracking/FiksuTrackingManager; 01-27 14:06:54.806 31166-31166/com.example.myapp D/dalvikvm﹕ VFY: replacing opcode 0x22 at 0x0010 01-27 14:06:54.806 31166-31166/com.example.myapp D/dalvikvm﹕ DexOpt: unable to opt direct call 0x35ce at 0x2b in Lcom/fiksu/asotracking/FiksuTrackingManager;.initialize 01-27 14:06:54.806 31166-31166/com.example.myapp D/dalvikvm﹕ DexOpt: unable to opt direct call 0x35c5 at 0x2e in Lcom/fiksu/asotracking/FiksuTrackingManager;.initialize 01-27 14:06:54.811 31166-31166/com.example.myapp D/dalvikvm﹕ DexOpt: unable to opt direct call 0x359b at 0x15 in Lcom/fiksu/asotracking/FiksuTrackingManager;.uploadCustomEvent 01-27 14:06:54.811 31166-31166/com.example.myapp D/dalvikvm﹕ DexOpt: unable to opt direct call 0x35cf at 0x30 in Lcom/fiksu/asotracking/FiksuTrackingManager;.uploadPurchase 01-27 14:06:54.811 31166-31166/com.example.myapp D/dalvikvm﹕ DexOpt: unable to opt direct call 0x35cf at 0x23 in Lcom/fiksu/asotracking/FiksuTrackingManager;.uploadPurchaseEvent 01-27 14:06:54.811 31166-31166/com.example.myapp D/dalvikvm﹕ DexOpt: unable to opt direct call 0x35d1 at 0x26 in Lcom/fiksu/asotracking/FiksuTrackingManager;.uploadRegistration 01-27 14:06:54.811 31166-31166/com.example.myapp I/dalvikvm﹕ DexOpt: unable to optimize static field ref 0x1507 at 0x16 in Lcom/fiksu/asotracking/FiksuTrackingManager;.uploadRegistrationEvent 01-27 14:06:54.811 31166-31166/com.example.myapp D/dalvikvm﹕ DexOpt: unable to opt direct call 0x35d1 at 0x19 in Lcom/fiksu/asotracking/FiksuTrackingManager;.uploadRegistrationEvent 01-27 14:06:54.811 31166-31166/com.example.myapp D/AndroidRuntime﹕ Shutting down VM 01-27 14:06:54.811 31166-31166/com.example.myapp W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41ecb700) 01-27 14:06:54.821 31166-31166/com.example.myapp E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.NoClassDefFoundError: com.fiksu.asotracking.FiksuConfigurationManager at com.fiksu.asotracking.FiksuTrackingManager.initialize(FiksuTrackingManager.java:83) at com.example.userinterface.MyApplication.onCreate(MyApplication.java:56) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1024) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4684) at android.app.ActivityThread.access$1400(ActivityThread.java:159) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1376) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5419) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) at dalvik.system.NativeStart.main(Native Method)

Mi entorno local:

  1. Proyecto desarrollado en Android Studio.
  2. Estoy usando Mac OS X 10.8.5 Mountain Lion
  3. compileSdkVersion 21, buildToolsVersion "21.1.2", gradleVersion = ''2.2.1'', com.android.tools.build:gradle:1.0.0
  4. Este es un proyecto multi-modulo. El módulo de aplicación llama al módulo de biblioteca "userInterface" y este SDK se encuentra en este módulo de biblioteca.

Lo que he intentado:

  1. Me aseguro de que el archivo SDK (jar) esté correctamente configurado y que no haya ningún error de compilación informado por Gradle
  2. Me aseguro de que no haya ningún error de sintaxis en los lugares donde se llama a los métodos SDK
  3. Revisé la dependencia del módulo que llama a este SDK para asegurarme de que no haya ningún problema de dependencia. Llego tan lejos que incluso recorte todo el árbol de dependencias (sé que es innecesario).
  4. Intenté eliminar el directorio "build" de todos los módulos y reconstruir todo el proyecto
  5. Realicé la operación "Invalidar caché / reiniciar" en Android Studio
  6. Realicé el comando "./gradlew clean" a través de Terminal tanto en el directorio raíz como en el directorio del módulo de la aplicación.
  7. Consulté los siguientes enlaces en STO sin éxito:

Android Studio - Importando biblioteca externa / Jar

Android Studio: ¿Añadir jar como biblioteca?

Estudio de Android Gradle No se pudo encontrar el método compilar ()

Obteniendo "Causado por: java.lang.VerifyError:"

No se pueden encontrar clases en el archivo de la biblioteca de Android

NoClassDefFoundError con bibliotecas en Android Studio

Pensamientos finales:

Necesito ayuda seria porque he intentado todo lo que sé. Este SDK funcionó bien antes de migrar este proyecto desde Eclipse. Ahora lanza una excepción rara cuando se ejecuta en Android Studio.

Hay una última cosa que es algo sospechosa: el archivo classpath en Android Studio (el archivo ***. Imi), reorganizo las entradas de classpath en él y todavía no funciona.

Gracias chicos por su ayuda!