-optimizationpasses 大于 2 时的 Proguard 错误
Proguard error when -optimizationpasses is above 2
编辑:
这是由旧的 Proguard 版本 (4.7) 引起的。 5.2
不再发生
我使用 Proguard(在 eclipse 中)来优化和混淆我的 Android 项目,但是发生了一些奇怪的事情。当我设置-optimizationpasses为1或2时,没问题,但是当我设置为3或以上时,我得到这个错误:
Conversion to Dalvik Format failed with error 1
在 Eclipse 的错误日志视图中,我找到了条目 'Conversion to Dalvik Format failed with error 1':它包含此堆栈跟踪
org.eclipse.core.runtime.CoreException: Conversion to Dalvik format failed with error 1
at com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(ExportHelper.java:317)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.doExport(ExportWizard.java:313)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.access[=10=](ExportWizard.java:238)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.run(ExportWizard.java:223)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)
Caused by: com.android.ide.eclipse.adt.internal.build.DexException: Conversion to Dalvik format failed with error 1
at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:825)
at com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(ExportHelper.java:274)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.doExport(ExportWizard.java:313)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.access[=10=](ExportWizard.java:238)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.run(ExportWizard.java:223)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)
以下是关于优化的 Proguard 配置摘录:
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
#-optimizationpasses 3 or above -> exception
-optimizationpasses 2
#-allowaccessmodification
-dontpreverify
问题:
- 为什么当 -optimizationpasses 高于此值时 Proguard 会导致错误
2? (特别是因为 android 默认设置为 5(在 sdk 23 / M 中)
- 如何/在哪里可以找到有关此问题根本原因的更多详细信息
问题,并可能向 Proguard 团队报告错误?
感谢您的帮助
请更新到 Proguard 的最新版本,即从 4.7 到 5.2
这应该可以解决问题。
编辑:
这是由旧的 Proguard 版本 (4.7) 引起的。 5.2
不再发生我使用 Proguard(在 eclipse 中)来优化和混淆我的 Android 项目,但是发生了一些奇怪的事情。当我设置-optimizationpasses为1或2时,没问题,但是当我设置为3或以上时,我得到这个错误:
Conversion to Dalvik Format failed with error 1
在 Eclipse 的错误日志视图中,我找到了条目 'Conversion to Dalvik Format failed with error 1':它包含此堆栈跟踪
org.eclipse.core.runtime.CoreException: Conversion to Dalvik format failed with error 1
at com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(ExportHelper.java:317)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.doExport(ExportWizard.java:313)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.access[=10=](ExportWizard.java:238)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.run(ExportWizard.java:223)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)
Caused by: com.android.ide.eclipse.adt.internal.build.DexException: Conversion to Dalvik format failed with error 1
at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:825)
at com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(ExportHelper.java:274)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.doExport(ExportWizard.java:313)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.access[=10=](ExportWizard.java:238)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.run(ExportWizard.java:223)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)
以下是关于优化的 Proguard 配置摘录:
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
#-optimizationpasses 3 or above -> exception
-optimizationpasses 2
#-allowaccessmodification
-dontpreverify
问题:
- 为什么当 -optimizationpasses 高于此值时 Proguard 会导致错误 2? (特别是因为 android 默认设置为 5(在 sdk 23 / M 中)
- 如何/在哪里可以找到有关此问题根本原因的更多详细信息 问题,并可能向 Proguard 团队报告错误?
感谢您的帮助
请更新到 Proguard 的最新版本,即从 4.7 到 5.2
这应该可以解决问题。