Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Failed to export application after upgrade to Proguard 4.8

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!*

enter image description here

If I try to view the error log via Window->Show View->Error Log all I see is more of the same:

enter image description here

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:

  1. I ran CCleaner to clean all temp files and caches in the Windows system,
  2. 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?

like image 415
an00b Avatar asked Jun 14 '12 16:06

an00b


2 Answers

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?

  1. Remove the libraries from the standard Java build path: Right click on the project name > Properties > Java Build Path > tab Libraries > remove everything except the “Android X.X” and the “Android Dependencies”
  2. Rename the libraries folder from “lib” to “libs”. By doing that, all the libraries in the folder “libs” are found by the Android plugin and are added to the “Android Dependencies” item of the project
  3. Clean the project (always necessary given how unpredictable the Android dev tools are)

Let us know how it worked.

like image 114
Regex Rookie Avatar answered Nov 10 '22 03:11

Regex Rookie


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.

like image 27
weston Avatar answered Nov 10 '22 02:11

weston