I just upgraded my Android SDK, ADT and Proguard to the latest and greatest.
My project compiles builds and runs fine in debug mode, but as soon as I try to export a signed release APK of it, I receive an error from the Export Wizard without any error log messages on the Eclipse console!*
If I try to view the error log via Window->Show View->Error Log
all I see is more of the same:
I have no idea what to do because neither Eclipse nor Proguard would give any hint about what the problem could be.
My project exported fine until this recent upgrade. No build warnings. No lint warnings!
I am using the standard configuration file for Android in ${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.**
And my project's proguard.cfg only contains:
-assumenosideeffects class android.util.Log {
public static *** v(...);
public static *** i(...);
public static *** d(...);
public static *** w(...);
public static *** e(...);
}
Anyone seen this problem before? Any idea how to fix this?
Some progress? I was able to export a signed APK for the first time since I upgraded by doing this:
- I ran CCleaner to clean all temp files and caches in the Windows system,
- Then I rebooted Windows.
But to my dismay, the next time I tried to export the signed APK again, I received the same Failed to export application
with no console messages! Again!
Now it's clear to me that the Android dev tools have become unstable. I can't really run CCleaner and reboot Windows every time I want to export a signed APK. And I don't care whose fault is it: Android SDK? ADT plugin? Proguard?
What do I do now?
Some more progress? I tried exporting a signed APK with Proguard turned off. It exported OK but when I launch it, it immediately crashes for being unable to find the application's activity class (ClassNotFoundException
). This is weird! It runs fine in debug mode and if the application's activity class weren't there, it shouldn't have compiled! What's going on? Are the latest & greatest Android dev tools broken?
I tried playing with the Order and Export
tab as described in this solution (and this one too) but it didn't help.
What do I do now?