android - Proguard 与 Unity3d 返回错误代码 1

标签 android unity3d proguard

我在 Unity 3d 中使用 proguard 4.11

在我的项目中,我在我的 libs 文件夹中包含了 unity-classes.jar

当我生成 apk 时,它给出了以下异常

    [2014-05-03 14:33:41 - FBUnityPlayerActivity] Proguard returned with error code 1. See console
[2014-05-03 14:33:41 - FBUnityPlayerActivity] java.io.IOException: Can't read [C:\Users\TAT\Desktop\quick\FBUnityPlayerActivity\libs\unity-classes.jar] (Can't process class [com/unity3d/player/UnityPlayer.class] (Unknown verification type [195] in stack map frame))
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.InputReader.readInput(InputReader.java:232)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.InputReader.readInput(InputReader.java:202)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.InputReader.readInput(InputReader.java:180)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.InputReader.execute(InputReader.java:78)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.ProGuard.readInput(ProGuard.java:196)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.ProGuard.execute(ProGuard.java:78)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.ProGuard.main(ProGuard.java:483)
[2014-05-03 14:33:41 - FBUnityPlayerActivity] Caused by: java.io.IOException: Can't process class [com/unity3d/player/UnityPlayer.class] (Unknown verification type [195] in stack map frame)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.io.ClassReader.read(ClassReader.java:112)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.io.JarReader.read(JarReader.java:65)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.io.DirectoryPump.readFiles(DirectoryPump.java:65)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.java:53)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.InputReader.readInput(InputReader.java:228)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   ... 6 more
[2014-05-03 14:33:41 - FBUnityPlayerActivity] Caused by: java.lang.RuntimeException: Unknown verification type [195] in stack map frame
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.classfile.io.ProgramClassReader.createVerificationType(ProgramClassReader.java:890)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.classfile.io.ProgramClassReader.visitFullFrame(ProgramClassReader.java:659)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.classfile.attribute.preverification.FullFrame.accept(FullFrame.java:114)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.classfile.io.ProgramClassReader.visitStackMapTableAttribute(ProgramClassReader.java:452)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.classfile.attribute.preverification.StackMapTableAttribute.accept(StackMapTableAttribute.java:71)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.classfile.io.ProgramClassReader.visitCodeAttribute(ProgramClassReader.java:422)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.classfile.attribute.CodeAttribute.accept(CodeAttribute.java:101)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.classfile.io.ProgramClassReader.visitProgramMethod(ProgramClassReader.java:200)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.classfile.io.ProgramClassReader.visitProgramClass(ProgramClassReader.java:142)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.classfile.ProgramClass.accept(ProgramClass.java:346)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   at proguard.io.ClassReader.read(ClassReader.java:91)
[2014-05-03 14:33:41 - FBUnityPlayerActivity]   ... 12 more

我已经尝试过使用

-libraryjars /libs/unity-classes.jar
-keep class com.unity3d.** { *; }
-dontwarn com.unity3d.**

在 proguard-project.txt 中,还是一样,如何修复?感谢您的帮助

甚至尝试过

-保持类com.** { *;

还是一样

最佳答案

请参阅之前关于 Proguard errors with unity-classes.jar 的问题.

这是 Unity 库中类的问题:一些预验证元数据已损坏。您应该检查是否有更新的版本。否则,您可以修改 ProGuard 以接受损坏的类,如其 issue tracker 中所讨论的那样.

请注意,您不应将 -libraryjars 或 -injars 添加到您的配置中。 Android 构建过程(Ant、Eclipse、Gradle)已经为您指定了这些选项。

关于android - Proguard 与 Unity3d 返回错误代码 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23441152/

相关文章:

java - 是否使用后端 Web 服务

c# - 如何从 Unity 中的函数返回多个值?

wcf - 使用 Unity 找不到命名空间 "ServiceModel"

java - ProGuard 不工作

android - xamarin 中的 shrinkresource、proguard 等不会减小我的应用程序大小

android - 无法运行 Flutter 入门。在根项目 'app' 中找不到项目 'myapp'

android - 查看Android Studio中的日志停留在Gradle:构建上

Android:按钮在不同分辨率屏幕中的位置

java - 为什么Unity3d找不到Java for Android SDK

obfuscation - 如何避免混淆器混淆用@OnStart 注释的类