0

Android 导出向导引发由重复条目 .DS_STORE 引起的 ZipException。有没有办法告诉 Proguard 和/或 Android 导出向导忽略 .DS_STORE 文件并解决这个问题?

这是详细的长篇故事:

我想为我的 Android 项目启用 Proguard。我从 Android 项目的 project.properties 中取消注释以下行

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

现在,当我尝试从 Eclipse 导出签名的 apk 时(右键单击项目 -> Android 工具 -> 导出签名的应用程序包),导出向导失败,返回无法导出应用程序。

从 Eclipse 的错误日志视图中,它确实出现了一个错误。通过双击它,这是堆栈跟踪:

org.eclipse.core.runtime.CoreException: Failed to export application
    at com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(ExportHelper.java:318)
    at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.doExport(ExportWizard.java:296)
    at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.access$0(ExportWizard.java:233)
    at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard$1.run(ExportWizard.java:218)
    at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Caused by: java.util.zip.ZipException: duplicate entry: .DS_Store
    at java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:215)
    at java.util.jar.JarOutputStream.putNextEntry(JarOutputStream.java:109)
    at com.android.ide.eclipse.adt.internal.project.ExportHelper.addFileToJar(ExportHelper.java:407)
    at com.android.ide.eclipse.adt.internal.project.ExportHelper.addFileToJar(ExportHelper.java:394)
    at com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(ExportHelper.java:242)
    ... 4 more

所以看起来像 ZipException 被抛出,因为有多个 .DS_STORE 文件(它们是 MAC OS X 的隐藏系统文件)。

4

2 回答 2

0

使用 Ant,您可以将文件过滤-injarsproguard添加到<android-sdk>/tools/ant/build.xml. 例如:

-injars ${project.all.classes.value}(!**.DS_STORE)

这告诉 ProGuard 在读取输入时忽略任何 .DS_STORE 文件。

使用 Eclipse,配置是硬编码的,所以这是不可能的。

MacOS X 上的其他开发者可能知道更多...

于 2013-07-19T23:01:30.390 回答
0

一种解决方法:

于 2015-06-03T20:32:20.600 回答