2012-06-14 8 views
7

Acabo de actualizar mi Android SDK, ADT y Proguard a lo último y mejor.Error al exportar la aplicación después de la actualización a Proguard 4.8

Mi proyecto compila y ejecuta bien en modo de depuración, pero tan pronto como trato de exportar una versión firmada APK, recibo un error del Asistente de exportación sin ningún mensaje de registro de errores en la consola de Eclipse! *

enter image description here

Si trato de ver el registro de errores a través de Window->Show View->Error Log todo lo que veo es más de lo mismo:

enter image description here

No tengo idea de qué hacer porque ni Eclipse ni Proguard darían a ninguna pista sobre acerca de cuál podría ser el problema.

Mi proyecto se exportó bien hasta esta actualización reciente. Sin advertencias de construcción ¡Sin advertencias de pelusas!

Estoy utilizando el archivo de configuración estándar para Android en ${sdk.dir}\tools\proguard\proguard-android.txt:

-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-verbose 

-dontoptimize 
-dontpreverify 

-keepattributes *Annotation* 
-keep public class * extends android.app.Activity 
-keep public class * extends android.app.Application 
-keep public class * extends android.app.Service 
-keep public class * extends android.content.BroadcastReceiver 
-keep public class * extends android.content.ContentProvider 
-keep public class * extends android.app.backup.BackupAgent 
-keep public class * extends android.app.backup.BackupAgentHelper 
-keep public class * extends android.preference.Preference 
-keep public class * extends android.support.v4.app.Fragment 
-keep public class * extends android.app.Fragment 
-keep public class com.android.vending.licensing.ILicensingService 

-keepclasseswithmembernames class * { 
    native <methods>; 
} 

-keep public class * extends android.view.View { 
    public <init>(android.content.Context); 
    public <init>(android.content.Context, android.util.AttributeSet); 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
    public void set*(...); 
} 

-keepclasseswithmembers class * { 
    public <init>(android.content.Context, android.util.AttributeSet); 
} 

-keepclasseswithmembers class * { 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
} 

-keepclassmembers class * extends android.app.Activity { 
    public void *(android.view.View); 
} 

-keepclassmembers enum * { 
    public static **[] values(); 
    public static ** valueOf(java.lang.String); 
} 

-keep class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator *; 
} 

-keepclassmembers class **.R$* { 
    public static <fields>; 
} 

-dontwarn android.support.** 

Y proguard.cfg de mi proyecto sólo contiene:

-assumenosideeffects class android.util.Log { 
    public static *** v(...); 
    public static *** i(...); 
    public static *** d(...); 
    public static *** w(...); 
    public static *** e(...); 
} 

Alguien ha visto este problema antes? ¿Alguna idea de cómo solucionar esto?

¿Algún avance? yo era capaz de exportar un archivo APK firmado por primera vez desde que he actualizado al hacer esto:

  1. me corrieron CCleaner para limpiar todos los archivos temporales y cachés en el sistema Windows,
  2. Entonces reinicié de Windows.

Pero a mi pesar, la próxima vez que trataba de exportar el archivo APK firmado de nuevo, recibieron la misma Failed to export application con no hay mensajes de la consola! ¡Otra vez!

Ahora es claro para mí que las herramientas de desarrollo de Android se han vuelto inestables. Realmente no puedo ejecutar CCleaner y reiniciar Windows cada vez que quiero exportar un APK firmado. Y no me importa de quién es la culpa: Android SDK? ¿Plugin ADT? Proguard?

¿Qué hago ahora?

¿Algún otro avance? Intenté exportar un APK firmado con Proguard desactivado. Se exportó bien, pero cuando lo ejecuto, se bloquea inmediatamente por no poder encontrar la clase de actividad de la aplicación (ClassNotFoundException). ¡Esto es extraño! Funciona bien en modo de depuración y si la clase de actividad de la aplicación no estuviera allí, ¡no debería haberse compilado! ¿Que esta pasando? ¿Están rotas las últimas herramientas de desarrollo de Android &?

He intentado jugar con la pestaña Order and Export como se describe en this solution (y this one también) pero no sirvió.

¿Qué hago ahora?

Respuesta

9

Estás ejecutando Windows XP, así que no estoy seguro de poder ayudarte (estoy ejecutando Windows 7 de 64 bits) pero tu comentario a @ Boe-Dev sobre "17 referencias no resueltas a clases" me recordó mi reciente prueba con una actualización similares a la suya:

I solved it colocando la siguiente línea en proguard.cfg:

-dontwarn com.bta.myapp.MyAppActivity.R** 

no sabe si su problema es el mismo que el mío, pero puede valer la pena probar .

EDIT: Observando que incluso cuando apaga Proguard tiene problemas, ¿puedo sugerir lo siguiente?

  1. Retire las bibliotecas de la trayectoria de la estructura estándar de Java: Haga clic derecho sobre el nombre del proyecto> Propiedades> Java Build Path> pestaña Bibliotecas> eliminar todo excepto el “Android XX” y las “Dependencias Android”
  2. Cambiar nombre la carpeta de bibliotecas de "lib" a "libs". Al hacerlo, todas las bibliotecas de la carpeta "libs" se encuentran en el complemento Android y se agregan a la opción "Dependencias de Android" del proyecto
  3. Limpiar el proyecto (siempre necesario dado lo impredecibles que son las herramientas de desarrollo de Android)

Háganos saber cómo funcionó.

+0

Gracias +1 por la esperanza que me dieron por unos momentos. Su solución no ayudó en mi caso, pero lo que hice después me permitió exportar una APK firmada por primera vez desde que actualicé. Esto es lo que hice: (1) Ejecuté CCleaner para limpiar todos los archivos temporales y las memorias caché en el sistema Windows, (2) luego reinicié Windows. ¡Y funcionó! pero para mi sorpresa, la próxima vez que intenté exportar recibí la misma 'Falló al exportar la aplicación' con ** ¡Sin mensajes de la consola! **. Ahora está claro para mí que las herramientas de desarrollo de Android se han vuelto inestables. ¿Qué hago ahora? – an00b

+1

¡Funcionó! ** Sin ** el '-dontwarn' que es. Resultó que tenía que hacer los pasos # 1 y # 2 en su EDIT para ** todos y cada uno de los proyectos de la biblioteca ** de los que depende mi proyecto de aplicación. Eso hizo la magia. ¡Gracias! ¡Rock! – an00b

1

intenta volver a instalar el ADT Plugin de Eclipse

+3

LOL. Parece que [vudú] (http://stackoverflow.com/a/8749008/1124861). ¿Quizás el OP debería actualizar su Eclipse también? Él no proporcionó ninguna información sobre su versión de Eclipse. –

+2

@BillTheApe No vudú. Proguard hell: http://stackoverflow.com/questions/6974231/proguard-hell-cant-find-referenced-class –

+0

@BillTheApe My Eclipse es 3.6.2. ¿Es esto un problema? ¿Cómo reinstalo mi plugin ADT? Encendí Android SDK Manager y muestra que 'Android SDK Tools' Rev 19 y' Android SDK Platrform-tools' Rev 11 están instalados y actualizados. ¿Cómo los hago volver a instalar? – an00b

2

¿Qué hay de su registro de errores. Ventana-> Mostrar vista-> Registro de errores. Está separado de la salida de la consola, el código de error 1 aparece aquí.

+0

Gracias +1 por la esperanza que me diste por unos momentos. El registro de errores no proporciona más información (consulte la actualización de la captura de pantalla en la publicación original). – an00b

+1

¿Se exporta bien con proguard apagado? – weston

+0

Sí, exporta OK con Proguard desactivado. Pero cuando lo ejecuto, se bloquea inmediatamente por no poder encontrar la clase de actividad de la aplicación ('ClassNotFoundException'). ¡Esto es extraño! Funciona bien en modo de depuración y si la clase de actividad de la aplicación no estuviera allí, ¡no debería haberse compilado! ¿Que esta pasando? ¿Están rotas las últimas y mejores herramientas de desarrollo de Android? – an00b

0

Aquí fue la clave que trabajó para mí

http://android.foxykeep.com/dev/fix-the-conversion-to-dalvik-format-failed-with-error-1-with-adt-14

Supuestamente fija en ADT-15, la solución es

1) Para cada elemento X_src, haga clic derecho sobre él y luego Build Path > Eliminar de la ruta de compilación.

2) Se abrirá una ventana emergente. Asegúrese de que "Desenlazar también la carpeta del proyecto" esté marcado y luego acéptelo.

Aún puede depurar en el código de la biblioteca pero necesita administrar sus puntos de interrupción en esos proyectos y luego recorrer el código en las pestañas de archivos de la clase.

Cuestiones relacionadas