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