tag studio example android admob proguard classnotfoundexception

android - studio - ClassNotFoundException: no se encontró la clase en la ruta: DexPathList



tag android studio (11)

Actualizar

Después de mucho tiempo, resultó que debía tener algo que ver con proguard. Realmente no puedo decir exactamente qué causa el error, pero lo intenté un poco y eso es lo que noté (eso es en mi caso con Eclipse IDE):

  • Tengo que cerrar todas las pestañas del proyecto que quiero firmar.
  • Tengo que limpiar el proyecto y después de limpiar, no hago nada más que exportar el apk
  • hacer un pequeño cambio en el manifiesto, guardarlo y deshacer el cambio (y guardar)
  • Si hay alguna clase en el manifiesto con el nombre "YourClass" o ".YourClass", cámbielo a "com.yourpackage.yourClass"

Esos son los cuatro puntos que he hecho y luego funcionó. Esto parece sospechoso, pero creo que hay un problema con ofuscación. Porque sin hacer estos puntos, simplemente puedo compilar mi apk e instalarlo desde eclipse. Para mí, no hay una razón obvia para este comportamiento. También el nombre del paquete funciona sin cambios si solo lo instalo desde eclipse. Espero que estos puntos puedan ayudar a alguien.

Tengo un problema desde que actualicé mi aplicación en playstore. Desde esta actualización, se lanza la excepción, pero no he cambiado nada relacionado con esta excepción.

Stacktrace:

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{de.opiatefuchs.onthejobtimerlight/de.opiatefuchs.onthejobtimerlight.OnTheJobTimerActivity}: java.lang.ClassNotFoundException: Didn''t find class "de.opiatefuchs.onthejobtimerlight.OnTheJobTimerActivity" on path: DexPathList[[zip file "/data/app/de.opiatefuchs.onthejobtimerlight-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2236) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) Caused by: java.lang.ClassNotFoundException: Didn''t find class "de.opiatefuchs.onthejobtimerlight.OnTheJobTimerActivity" on path: DexPathList[[zip file "/data/app/de.opiatefuchs.onthejobtimerlight-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469) at android.app.Instrumentation.newActivity(Instrumentation.java:1066) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2226) ... 10 more Suppressed: java.lang.ClassNotFoundException: de.opiatefuchs.onthejobtimerlight.OnTheJobTimerActivity at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:781) at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 13 more Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

La cuestión es que mi versión de la aplicación se ejecuta sin problemas y no he cambiado nada relacionado con esta actividad. Acabo de agregar un nuevo cuadro de diálogo de información que no tiene nada que ver con esta actividad. Esta aplicación es una versión gratuita de Lite, he hecho exactamente los mismos cambios en la versión Pro y no se lanza nada. Esto funciona como se esperaba. La única diferencia entre pro y lite es que he integrado Admob (en la nueva forma) en la versión lite y la licencia de Google Play en la versión pro. Pero esto lo he integrado desde el principio y no he hecho cambios en esto. Tampoco he hecho ningún cambio en el manifiesto, leí muchas publicaciones aquí, pero nada ayuda.

Parece que acaba de suceder en las versiones de Android desde 5.0. ¿Alguien tiene una idea de lo que este problema podría causar o alguien tiene las mismas experiencias? ¿Es posible que el programa simplemente destruya algo por ofuscación (también aquí, sin cambios)?

No publiqué ningún código, porque no es importante para este problema, ya que dije que no he realizado cambios relacionados con esta excepción.

Esta pregunta está marcada como duplicada pero no lo está. El comentario con el enlace no soluciona mi problema, todas las bibliotecas se verifican y se integran de la manera correcta. Además, no uso NDK.


A veces, cuando generamos un archivo apk firmado, si tenemos algún problema de biblioteca de dependencias (biblioteca jar duplicada), se puede producir este error. Verifique la ruta de compilación y elimine la biblioteca duplicada, y verifique si alguna biblioteca no está marcada en la pestaña de pedido y exportación.


Acabo de cambiar mi gradle de com.android.tools.build:gradle:2.2.2 a com.android.tools.build:gradle:2.2.0, y el problema está bien!


Creo que tiene algo que ver con multidex y múltiples nombres de paquetes si tiene varios módulos. Limpie el proyecto y elimine todas las compilaciones / carpetas.


La razón es que Android no puede encontrar la actividad específica en el dexpath.

Por lo tanto, deberíamos proporcionar la ruta completa de las actividades en "Archivo de manifiesto".

por ejemplo, su nombre de actividad es "SplashActivity" y está en "com.packagename.package". Por lo tanto, debemos proporcionar el nombre completo del paquete de esa actividad.

com.packagename.package.SplashActivity


Para mí, sucedió cuando se cambió el nombre del paquete (nombre del directorio).

Me di cuenta de que la carpeta "construir" mantiene mágicamente los archivos intermedios para la construcción del proyecto. He eliminado la carpeta "build" en la carpeta "app" . Ahora el gradle tenía que volver a hacer todos los archivos con el nuevo nombre del paquete. Ahora está funcionando correctamente.


Recibí un error similar después de cambiar el nombre de mi directorio simplemente cambiando el nombre del directorio e importándolo. No puedo instalar más. Ni volver a habilitar la depuración USB ni reconstruir el trabajo del proyecto.

Lo resuelvo creando un nuevo proyecto y copio manualmente todo el contenido relevante al nuevo proyecto.


Si manifiesta que el nombre del paquete es correcto, si cerró el proyecto y dentro del explorador de archivos cambió el nombre de su proyecto, pero después de importar uno, nuevamente se encuentra este problema, la única manera aquí es

ELIMINAR LA CARPETA .gradle .

Este se puede encontrar en la carpeta del proyecto usando el explorador de archivos. Tiene archivos de artefactos que contienen el nombre de ese proyecto anterior. Después de volver a abrir el proyecto en Android Studio, la carpeta se volverá a crear automáticamente.


Tuve un problema similar, aquí está mi solución:

  1. Cambia el nombre de la aplicación en AndroidManifest a la ruta completa
  2. Proyecto limpio
  3. Proyecto de reconstrucción
  4. Construir APK

yo añadí

compile "com.android.support:support-core-utils:25.3.1" compile ''com.android.support:support-v4:25.3.1''


tl; dr: esto parece deberse a la combinación de la declaración relativa y absoluta en el AndroidManifest.xml . Creo que la mejor solución es usar la notación relativa al declarar <application .../> , <activity .../> , <receiver .../> y <service .../> en su AndroidManifest.xml .

Explicación completa:

Tuve este problema por DEMASIADO LARGO, era porque estaba usando tanto <application .../> absoluto, <activity .../> , <receiver .../> y <service .../> Declaraciones en mi AndroidManifest.xml . Esto es lo que hice para arreglarlo:

En tu AndroidManifest.xml asegúrate de que la sección <manifest .../> tenga su package: propiedad especificada correctamente, tendrá que ser la ruta absoluta absoluta, así:

<manifest package="com.my.absolute.package.path" xmlns:android="http://schemas.android.com/apk/res/android">...</manifest>

Ahora que tiene la ruta absoluta correcta especificada en su sección <manifest .../> , deberá usar una ruta relativa para todos <application .../> , <activity .../> , <receiver .../> y <service .../> definidos en su AndroidManifest.xml .

Ejemplos:

<application android:name=".BaseApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".activity.SomeActivity" android:configChanges="orientation" android:label="@string/app_name" android:parentActivityName=".activity.ParentActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".activity.ParentActivity"/> </activity> <activity android:name=".activity.MyActivity" android:configChanges="orientation" android:label="@string/app_name" android:parentActivityName=".activity.ParentActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme" /> <receiver android:name=".receivers.MyReceiver" android:enabled="true" android:exported="false"> </receiver> <service android:name=".services.MyService" android:enabled="true" android:exported="false" /> </application>

Por supuesto, también asegúrese de limpiar su proyecto.