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:
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?
You're running Windows XP so I'm not sure I can help (I'm running Windows 7 64-bit) but your comment to @Boe-Dev about "17 unresolved references to classes" reminded me of my recent ordeal with an upgrade similar to yours:
I solved it by placing the following line in proguard.cfg
:
-dontwarn com.bta.myapp.MyAppActivity.R**
Don't know if your problem is the same as mine but it may be worth a try.
EDIT: Noticing that even when your turn off Proguard you are having problems, can I suggest the following?
Let us know how it worked.
How about your error log. Window->Show View->Error Log. Is separate to Console output, error code 1's tend to show up in here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With