我刚刚将Android SDK,ADT和Proguard升级到最新版本。
我的项目编译构建并在调试模式下运行良好,但是一旦我尝试导出它的签名版本APK,我就会从导出向导收到错误,而Eclipse控制台上没有任何错误日志消息! *
如果我尝试通过Window->Show View->Error Log
查看错误日志,我看到的更多相同:
我不知道该怎么办,因为Eclipse和Proguard都没有给出任何提示关于问题的原因。
我的项目在最近的升级之前导出正常。没有构建警告。没有棉绒警告!
我在${sdk.dir}\tools\proguard\proguard-android.txt
中使用Android的标准配置文件:
-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:
但令我沮丧的是,下次我尝试再次导出已签名的APK时,我收到了同样的Failed to export application
没有控制台消息!再次!
现在我很清楚Android开发工具已变得不稳定。每次我想导出已签名的APK时,我都无法运行CCleaner并重新启动Windows。而我不关心它的错:Android SDK? ADT插件? Proguard的?
我现在该怎么办?
还有更多进展吗?我尝试导出已关闭Proguard的签名APK。它导出确定但是当我启动它时,它立即崩溃,因为无法找到应用程序的活动类(ClassNotFoundException
)。这很奇怪!它在调试模式下运行良好,如果应用程序的活动类不在那里,它应该没有编译!这是怎么回事?是最新的&amp;最好的Android开发工具坏了?
我尝试使用this solution(以及this one)中所述的Order and Export
标签进行播放,但它没有帮助。
我现在该怎么办?
答案 0 :(得分:9)
你正在运行Windows XP,所以我不确定我能提供帮助(我正在运行Windows 7 64位),但你对@ Boe-Dev关于“17个未解决的类引用”的评论提醒了我我最近的一次考验与你的升级相似:
我solved it将以下行放在proguard.cfg
中:
-dontwarn com.bta.myapp.MyAppActivity.R**
不知道你的问题是否与我的问题相同,但值得一试。
编辑:注意即使您关闭Proguard时遇到问题,我还可以建议以下内容吗?
让我们知道它是如何运作的。
答案 1 :(得分:2)
您的错误日志如何?窗口 - &gt;显示视图 - &gt;错误日志。与控制台输出分开,错误代码1往往会显示在此处。
答案 2 :(得分:1)
尝试在eclipse中重新安装ADT插件
答案 3 :(得分:0)
这是对我有用的钥匙
http://android.foxykeep.com/dev/fix-the-conversion-to-dalvik-format-failed-with-error-1-with-adt-14
据说已在ADT-15中修复,解决方法是
1)对于每个X_src元素,右键单击它,然后构建路径&gt;从构建路径中删除。
2)弹出窗口将打开。确保选中“同时取消文件夹与项目的链接”,然后接受它。
您仍然可以调试库代码,但需要在这些项目中管理断点,然后逐步执行类文件选项卡中的代码。