dex archivo no contiene la clase MainActivity

Abby:

Cuando se ejecuta mi aplicación me sale el siguiente error:

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.name.app/com.name.app.MainActivity}: 
java.lang.ClassNotFoundException: Didn't find class "com.name.app.MainActivity" on path: 
    DexPathList[[zip file "/data/app/com.name.app-2/base.apk"],
        nativeLibraryDirectories=[/vendor/lib, /system/lib]]

He utilizado el analizador apk Android Studio (Build> Analizar APK) para analizar mi apk (app / build / salidas / APK / debug / app-debug.apk) y la estructura de la classes.dexes

java/
    lang/*
    util/*
    io/*
com/google/devtools/build/...

Me di cuenta de que mis propias clases, y por lo tanto la MainActivity, se echa en falta. Para la medida de lo entiendo archivos DEX (a partir de esta pregunta SO) mis propias clases deberían estar allí, también. Ya que no hay, no veo razón por la que sale el error de que no se encuentra mi clase.

Me sale este error en mi propio dispositivo: Samsung, Piruleta 5.0.2, API 21, y en un dispositivo virtual: Google píxeles, Oreo 8.0.0, API 26.

Lo que he tratado

He buscado en Google y encontró múltiples sugerencias, pero ninguno de ellos trabajó para mí. Estas sugerencias fueron:

  • Desactivar ejecución instantánea. Archivo> Configuración> Generar, ejecución, implantación> instantáneo Ejecutar> Ejecutar instantánea desmarque.

  • Limpiar el proyecto. Construir> Limpio. Luego reconstruir el proyecto, construcción> Reconstruir.

  • Invalidar Caches / Reiniciar.

  • Desinstalar la aplicación desde el dispositivo y vuelve a intentarlo.

  • Utilizar diferentes nombres de ruta en el Manifest. Cambiar android:name=".MainActivity"en android:name="com.name.app.MainActivity"la activityetiqueta.

  • Desactivar pre-Dexing, como en esta respuesta.

Añadido a la siguiente build.gradle

dexOptions {
    preDexLibraries false
}
  • Habilitar multidex, seguido este enlace. En primer lugar habilitado en multidex build.gradle, y después se añadió el MultiDexApplicationde mi manifiesto. Mi MainActivityextiende AppCompatActivity(y por lo tanto no se extiende Application).

Habilitación multidex da un error similar:

java.lang.RuntimeException: Unable to instantiate application android.support.multidex.MultiDexApplication: 
java.lang.ClassNotFoundException: Didn't find class "android.support.multidex.MultiDexApplication" on path: 
    DexPathList[...]

A continuación se presentan las adiciones que permitan multidex.

build.gradle

android {
    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 26
        multiDexEnabled true
    }
    ...
}

dependencies {
  implementation 'com.android.support:multidex:1.0.3'
}

manifiesta (sólo la parte pertinente)

<application
        android:name="android.support.multidex.MultiDexApplication" >
        ...
</application>

Observen Hubo otra sugerencia relacionada con las bibliotecas, ver esta respuesta. Sin embargo, esto fue dirigido a Eclipse y no estoy seguro de si podría ser una solución a mi problema. Gradle debe hacer frente a todas las dependencias, ¿verdad? Por si acaso, aquí es cómo hice una lista de todas las dependencias en mis Gradle (Kotlin versión 1.2.51):

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    testImplementation 'junit:junit:4.12'
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support:design:26.1.0'
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
    implementation 'com.squareup.retrofit2:converter-simplexml:2.3.0'
    implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"

    testImplementation 'org.junit.platform:junit-platform-engine:1.2.0'
    testImplementation 'org.jetbrains.spek:spek-api:1.1.5'
    testImplementation 'org.jetbrains.spek:spek-junit-platform-engine:1.1.5'
}

Actualizar

Estoy usando Android Studio 3.1.3. He tratado de ejecutar mi aplicación con otro ordenador portátil (mediante el control de versiones, el uso de Android Studio 3.1.3) y no parece el error. Como los archivos son exactamente los mismos, sospecho que hay algo malo en mi configuración de Android Studio.

Extracción de Android Studio y todas sus configuraciones, y luego descargar e instalar Android Studio desde aquí no resolvió el problema.

Abby:

La estructura de carpetas de mi era

.gradle/
.idea/
app/
    build/
    src/main
        gen/
        java/
        res/
build/
gradle/

La gencarpeta no debería estar aquí. Esta carpeta contenía archivos generados, al igual que R.java. Estos archivos fueron también (sin embargo correctamente) en app/build/generated/source/*. Con solo borrar la gencarpeta y la limpieza del proyecto resolvió el problema.

No tengo ni idea de lo que genpuso fin a la carpeta allá arriba, como se me quita el proyecto de mi disco y se clona el repositorio git (que no tiene esta carpeta) varias veces. Tan pronto como me entero de cómo llegó hasta allí, voy a actualizar esta respuesta.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=195823&siteId=1
Recomendado
Clasificación