升级到Proguard 4.8后,导出应用程序失败

我刚刚将我的Android SDK,ADT和Proguard升级到了最新,最好的版本。

我的项目编译生成并在debugging模式下运行良好,但只要我尝试导出它的签名版本APK,我收到导出向导错误没有任何错误日志消息在Eclipse控制台上!*

在这里输入图像说明

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

在这里输入图像说明

我不知道该怎么做,因为无论Eclipse还是Proguard都不会给出任何有关问题的提示

我的项目导出很好,直到最近的升级。 没有build立警告。 没有皮棉警告!

我在${sdk.dir}\tools\proguard\proguard-android.txt使用Android的标准configuration文件:

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

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

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

任何人之前见过这个问题? 任何想法如何解决这个问题?

有一些进展? 自升级之后,我能够首次导出已签名的APK:

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

但令我沮丧的是,下次我再次尝试导出已签名的APK时,我收到了同样的Failed to export application没有控制台消息! 再次!

现在很明显,Android开发工具已经变得不稳定了。 我无法真正运行CCleaner,并在每次我想要导出已签名的APK时重新启动Windows。 我不在乎谁的错:Android SDK? ADT插件? Proguard的?

现在我该怎么做?

还有一些进展? 我尝试导出与Proguardclosures签名的APK。 它导出确定,但是当我启动它时,它立即崩溃无法find应用程序的活动类( ClassNotFoundException )。 这很奇怪! 它在debugging模式下运行良好,如果应用程序的活动类不在那里,它不应该编译! 这是怎么回事? 最新的和最伟大的Android开发工具是否被打破?

我尝试玩这个解决scheme (也是这个 )中描述的Order and Export选项卡,但是没有帮助。

现在我该怎么做?

你正在运行Windows XP,所以我不知道我可以帮忙(我正在运行Windows 7 64位),但是你对@ Boe-Dev有关“17个未解决的对类的引用”的评论让我想起了我最近的一次磨难升级类似于你的:

我通过在proguard.cfg放置以下行来解决它 :

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

不知道你的问题和我的问题是否一样,但可能值得一试。

编辑:注意到,即使当你closuresProguard你有问题,我可以build议以下?

  1. 从标准的Java构buildpath中删除库:右键单击项目名称>属性> Java构buildpath>选项卡库>删除除“Android XX”和“Android依赖项”之外的所有内容
  2. 将库文件夹从“lib”重命名为“libs”。 通过这样做,文件夹“libs”中的所有库都由Android插件find,并被添加到项目的“Android Dependencies”项
  3. 清理项目(总是必要的,因为Android开发工具是多么不可预测的)

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

你的错误日志怎么样? 窗口 – >显示视图 – >错误日志。 与控制台输出分开,错误代码1倾向于显示在这里。

尝试在eclipse中重新安装ADT插件

这是我工作的关键

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

应该在ADT-15中固定,解决方法是

1)对于每个X_src元素,右键单击它,然后构buildpath>从构buildpath中移除。

2)popup窗口将打开。 确保选中“也从项目中取消链接文件夹”,然后接受它。

您仍然可以debugging到库代码,但是您需要在这些项目中pipe理您的断点,然后遍历类文件选项卡中的代码。