the support references number method exceed compile cannot 64k android gradle multidex android-multidex

android - support - Aplicación MultiDex no reconocida



multidex gradle android (4)

Aunque esta pregunta es bastante antigua, obtuve este error en una configuración de múltiples módulos cuando intenté construir los diferentes módulos juntos como un APK para API <21. Ya lo he vuelto a marcar en AndroidX, pero los documentos de multidex no mencionan aún a AndroidX.

Si está utilizando AndroidX, asegúrese de reemplazar la antigua dependencia multidex

compile ''com.android.support:multidex:1.0.3''

con el nuevo

implementation ''androidx.multidex:multidex:2.0.0''

Intento usar MultiDexApplication en mi aplicación, pero no se reconoce la clase cuando intento extender 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?


He seguido THIS publicación de blog según la cual MultiDexApplication debería incluirse en r21 de la biblioteca de soporte.

Mi IDE también tuvo problemas para resolverlo.

Lo hice funcionar por ahora con la ayuda del proyecto MULTIDEX MULTIDEX agregando (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 el siguiente contenido:

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 también menciona algunas consideraciones sobre el contenido de su implementación de la clase MultiDexApplication:

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

La clase MultiDexApplication no forma parte de la biblioteca appcompat-v7. Se envía en un frasco aparte (llamado android-support-multidex).

Busque 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 jar ahora está disponible en el repositorio central:

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

Para más información, ver here .


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

Busque y cambie la ubicación de JDK y haga clic en Aceptar