MultiDexApplication no reconocido

Tratando de utilizar MultiDexApplication en mi aplicación, pero la clase no se reconoce cuando intento ampliar la actividad de mi aplicación con ella.

Aquí está mi archivo build.gradle:

apply plugin: 'com.android.application' android { compileSdkVersion 21 buildToolsVersion '21.0.1' defaultConfig { applicationId 'com.myapp' minSdkVersion 10 targetSdkVersion 21 versionCode 115 versionName '4.8' } buildTypes { debug { debuggable true runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } release { debuggable false runProguard true zipAlign true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } packagingOptions { exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' } lintOptions { checkReleaseBuilds false } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.google.android.gms:play-services:6.1.11' compile 'com.android.support:appcompat-v7:21.0.0' compile 'com.nineoldandroids:library:2.4.0' compile 'com.viewpagerindicator:library:2.4.1@aar' compile project(':facebook') } 

Puedes ver que estoy compilando el 21, usando las últimas herramientas de compilación y los últimos servicios de Google Play y la biblioteca de soporte.

¿Alguien ha conseguido que esto funcione?

La clase MultiDexApplication no forma parte de la biblioteca appcompat-v7. Se está enviando en un tarro separado (llamado android-support-multidex).

Busque el android-support-multidex.jar en / sdk / extras / android / support / multidex / library / libs (disponible en la revisión 21 de la biblioteca de soporte) y cópielo en la carpeta libs de su proyecto.

Actualización (11/5/2014) :
El frasco ya está disponible en el repositorio central:

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

Para más información, vea aquí .

He seguido ESTE post de blog de acuerdo a que MultiDexApplication debe ser incluido en r21 de la biblioteca de soporte.

Mi IDE tuvo problemas para resolverlo también.

Lo hice funcionar por ahora con la ayuda del proyecto MULTIDEX github añadiendo (puedes ver más detalles en la página del proyecto):

 android { dexOptions { preDexLibraries = false } } repositories { jcenter() } dependencies { compile 'com.google.android:multidex:0.1' } afterEvaluate { tasks.matching { it.name.startsWith('dex') }.each { dx -> if (dx.additionalParameters == null) { dx.additionalParameters = [] } dx.additionalParameters += '--multi-dex' // enable multidex dx.additionalParameters += "--main-dex-list=$projectDir/multidex.keep".toString() } } 

Y agregando el archivo $ project_dir / multidex.keep con los siguientes contenidos:

 android/support/multidex/BuildConfig.class android/support/multidex/MultiDex$V14.class android/support/multidex/MultiDex$V19.class android/support/multidex/MultiDex$V4.class android/support/multidex/MultiDex.class android/support/multidex/MultiDexApplication.class android/support/multidex/MultiDexExtractor$1.class android/support/multidex/MultiDexExtractor.class android/support/multidex/ZipUtil$CentralDirectory.class android/support/multidex/ZipUtil.class 

La página del proyecto github menciona también alguna consideración para el contenido de la implementación de la clase MultiDexApplication:

  • Los campos estáticos en su clase de aplicación se cargarán antes de que se instale el # installbe de MultiDex. Por lo tanto, la sugerencia es evitar los campos estáticos con tipos que se pueden colocar fuera del archivo main.dex principal.
  • Es posible que los métodos de la clase de aplicación no tengan acceso a otras clases que se cargan después de la clase de aplicación. Como workarround para esto, puede crear otra clase (cualquier clase, en el ejemplo anterior, yo uso Runnable) y ejecutar el contenido del método en su interior.

Tengo la solución 🙂

Actualice a jdk 8 y cambie la ubicación de JDK en Android Studio en

Archivo> Estructura del proyecto> Ubicación del SDK

Buscar y cambiar la ubicación de JDK y hacer clic en Aceptar

  • Multidex con Android 2.3 (API 9)
  • Android Multidex RuntimeException
  • Cómo habilitar multidexing con la nueva biblioteca de soporte de Android Multidex
  • Error en la instalación de Multidex
  • Error de ejecución para la tarea ': packageAllDebugClassesForMultiDex'
  • Error: Error de ejecución para la tarea ': app: shrinkReleaseMultiDexComponents'
  • Android gradle plugin multidex ZipException
  • Habilitar Soporte MultiDex en Android para lograr métodos de 65K + en Eclipse
  • Implementación de resultados MultiDex en la compilación durante tanto tiempo, y finalmente error de espacio de montón
  • ¿Qué paquete para MultiDexTestRunner? Android.support.multidex o com.android.test.runner
  • Cómo averiguar cuántos métodos se agregan con una biblioteca en Android Studio / Gradle
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.