我刚刚将我的 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.**
而我项目的 proguard.cfg 只包含:
-assumenosideeffects class android.util.Log {
public static *** v(...);
public static *** i(...);
public static *** d(...);
public static *** w(...);
public static *** e(...);
}
以前有人见过这个问题吗?知道如何解决这个问题吗?
一些进展?自从我通过这样做升级以来,我第一次能够导出签名的 APK:
- 我运行 CCleaner 来清理 Windows 系统中的所有临时文件和缓存,
- 然后我重新启动了 Windows。
但令我沮丧的是,下次我再次尝试导出已签名的 APK 时,我收到了同样Failed to export application
的消息,但没有控制台消息!再次!
现在我很清楚,Android 开发工具已经变得不稳定。每次我想导出签名的 APK 时,我都无法真正运行 CCleaner 并重新启动 Windows。而且我不在乎是谁的错:Android SDK?ADT 插件?前卫?
现在我该怎么做?
再进步一点?我尝试在关闭 Proguard 的情况下导出签名的 APK。它导出正常,但是当我启动它时,它会因为找不到应用程序的活动类 ( ClassNotFoundException
) 而立即崩溃。这很奇怪!它在调试模式下运行良好,如果应用程序的活动类不存在,它不应该编译!这是怎么回事?最新最好的 Android 开发工具是否损坏?
我尝试按照此解决方案(以及此Order and Export
解决方案)中的描述使用选项卡,但没有帮助。
现在我该怎么做?