升级到Proguard 4.8后无法导出应用程序

an0*_*00b 7 eclipse android proguard adt android-library

我刚刚将Android SDK,ADT和Proguard升级到最新版本.

我的项目编译构建并在调试模式下运行良好,但是一旦我尝试导出它的签名版本APK,我就会从Eclipse控制台上的导出向导收到错误而没有任何错误日志消息!*

在此输入图像描述

如果我尝试通过Window->Show View->Error Log所有查看错误日志,我看到更多相同:

在此输入图像描述

我不知道该怎么办,因为Eclipse和Proguard都不会暗示问题是什么.

我的项目在最近的升级之前一直很好.没有构建警告.没有棉绒警告!

我正在使用Android的标准配置文件${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.**
Run Code Online (Sandbox Code Playgroud)

我的项目的proguard.cfg只包含:

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

以前有人见过这个问题吗?知道如何解决这个问题吗?

一些进展?自从我通过这样做升级后,我第一次能够导出已签名的APK:

  1. 我运行CCleaner来清理Windows系统中的所有临时文件和缓存,
  2. 然后我重新启动了Windows.

但我失望的是,下一次我试图再次导出签署APK,我收到了同样的Failed to export application任何控制台消息!再次!

现在我很清楚Android开发工具已变得不稳定.每次我想导出已签名的APK时,我都无法运行CCleaner并重新启动Windows.而我不关心它的错:Android SDK?ADT插件?Proguard的?

现在我该怎么做?

还有一些进展吗?我尝试导出一个签名的APK与Proguard关闭.它导出确定但是当我启动它时,它立即崩溃,因为无法找到应用程序的活动类(ClassNotFoundException).这很奇怪!它在调试模式下运行良好,如果应用程序的活动类不在那里,它应该没有编译!这是怎么回事?最新最好的Android开发工具是否已损坏?

我尝试使用此解决方案中Order and Export描述的选项卡(也是这个),但它没有帮助.

现在我该怎么做?

Reg*_*kie 9

你正在运行Windows XP所以我不确定我能帮忙(我正在运行Windows 7 64位)但是你对@ Boe-Dev关于"17个未解决的类引用"的评论让我想起了我最近的一次考验升级类似于你的:

通过将以下行放入proguard.cfg:

-dontwarn com.bta.myapp.MyAppActivity.R**
Run Code Online (Sandbox Code Playgroud)

不知道你的问题是否与我的问题相同,但值得一试.

编辑:注意即使你关闭Proguard你有问题,我可以建议如下吗?

  1. 从标准Ja​​va构建路径中删除库:右键单击项目名称>属性> Java构建路径>选项卡库>删除除"Android XX"和"Android依赖项"之外的所有内容
  2. 将libraries文件夹从"lib"重命名为"libs".通过这样做,Android插件找到文件夹"libs"中的所有库,并将其添加到项目的"Android依赖项"项中
  3. 清理项目(鉴于Android开发工具的不可预测性,总是必要的)

让我们知道它是如何工作的.