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

  • Error: Se encontró un problema con la configuración de task collectDebugMultiDexComponents
  • ¿Qué paquete para MultiDexTestRunner? Android.support.multidex o com.android.test.runner
  • Conmutación entre configuraciones de ejecución de dos módulos sin Clean cuando uno de ellos utiliza Multidex
  • Xamarin Android con multidex - error en modo de depuración
  • Android Multidex RuntimeException
  • Habilitar Soporte MultiDex en Android para lograr métodos de 65K + en Eclipse
  • Twitter Fabric + MultiDex causa NoClassDefFoundError
  • Estudio de Android java.lang.NoClassDefFoundError: android.support.v4.app.NavUtilsJB
  • La prueba de instrumentación falla al azar con multidexado activado
  • Utilizar multiDexEnabled sin Gradle pero proceso de generación de Eclipse en su lugar
  • Android Studio: ¿Por qué estoy recibiendo un error multi dex en el nuevo proyecto API de Google Maps?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.