本文介绍了在SAAgent.class Proguard的错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的深化发展与三星的附件 - v1.0.0.jar A 三星齿轮应用程序。

当我尝试创建一个签名的apk(其中preforms ProGuard的步骤),我得到堆栈图框例外未知的验证类型[10],因为三星的 SAAgent 附件 - v1.0.0.jar

我找不到任何解决方案,你有没有为这个解决方法?

Similar三星的SPEN SDK(这个问题解决了在SPEN SDK的更高版本)

问题

我试过到目前为止,这并没有帮助我:

1)添加以下ProGuard的元素:

  -keepclassmembers类com.samsung ** {*。 }
-keep类com.samsung ** {*。 }
-dontwarn com.samsung。**
-keepattributes InnerClasses

2)使用ProGuard的 4.7 4.11

3)创建一个新的Andr​​oid项目,在其libs文件夹中添加的只是辅机v1.0.0.jar,我没写任何code和试图签下的APK。同样的错误发生。

  [2014年5月22日17时13分06秒 -  SAGalleryProguardTest] Proguard的错误code返回1.见控制台
[2014年5月22日17时13分06秒 - SAGalleryProguardTest] java.io.IOException异常:无法读取[C:\\杰韦利\\工作区\\ SAGalleryProguardTest \\库\\辅机v1.0.0a.jar(无法处理类[COM /三星/安卓/ SDK /附件/ SAAgent.class](未知核查栈图帧类型[​​10]))
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.InputReader.readInput(InputReader.java:230)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.InputReader.readInput(InputReader.java:200)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.InputReader.readInput(InputReader.java:178)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.InputReader.execute(InputReader.java:78)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.ProGuard.readInput(ProGuard.java:196)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.ProGuard.execute(ProGuard.java:78)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.ProGuard.main(ProGuard.java:492)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]产生的原因:java.io.IOException异常:无法处理类[COM /三星/安卓/ SDK /附件/ SAAgent.class](未知的验证类型[10]在堆栈帧图)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.io.ClassReader.read(ClassReader.java:112)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.io.JarReader.read(JarReader.java:65)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.io.DirectoryPump.readFiles(DirectoryPump.java:65)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.java:53)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.InputReader.readInput(InputReader.java:226)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest] ... 6个
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]产生的原因:了java.lang.RuntimeException:未知的验证类型[10]在堆栈帧图
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.classfile.io.ProgramClassReader.createVerificationType(ProgramClassReader.java:890)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.classfile.io.ProgramClassReader.visitFullFrame(ProgramClassReader.java:659)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest。在proguard.classfile.attribute preverification.FullFrame.accept(FullFrame.java:114)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.classfile.io.ProgramClassReader.visitStackMapTableAttribute(ProgramClassReader.java:452)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.classfile.attribute.$p$pverification.StackMapTableAttribute.accept(StackMapTableAttribute.java:71)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.classfile.io.ProgramClassReader.visit codeAttribute(ProgramClassReader.java:422)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.classfile.attribute codeAttribute.accept(codeAttribute.java:101)。
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.classfile.io.ProgramClassReader.visitProgramMethod(ProgramClassReader.java:200)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.classfile.io.ProgramClassReader.visitProgramClass(ProgramClassReader.java:142)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.classfile.ProgramClass.accept(ProgramClass.java:346)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest]在proguard.io.ClassReader.read(ClassReader.java:91)
[2014年5月22日17时13分06秒 - SAGalleryProguardTest] ... 11更多


解决方案

我不认为这有什么,你可以把你的ProGuard配置,这将解决这个问题。它与附件 - v1.0.0.jar 三星建立了一个问题,他们将不得不解决它在SDK的更新。

我已经遵循了这里的步骤()来构建 proguard.jar 库(基于v.4.11)将忽略这个错误。导出使用ProGuard再建一个签名的apk发行成功完

我还使用这些配置设置:

  -keep类com.samsung ** {*。 }
-keep类*宽com.samsung ** {*。 }

我建的,将proguard.jar可以在这里找到:

您可以在 AndroidSDK砸\\工具\\ proguard的\\ lib中文件夹,但使原来的副本 - 你应该不会将其用于其他项目。更妙的是,修改 project.properties 你的 proguard.config 路径指向比正常progaurd库的不同路径

免责声明:这是一个临时的解决方法,而不是一个固定 - 使用您自己的风险。三星应提供在更新的SDK适当修正。话虽这么说,我还没有发现在我自己的测试任何问题。

更新:这是不再与三星配件SDK v2.0.19的问题

I'm developping a Samsung Gear application with Samsung's accessory-v1.0.0.jar.

When I try to create a signed apk (which preforms proguard steps) I get Unknown verification type [10] in stack map frame exception, because of Samsung's SAAgent class in accessory-v1.0.0.jar.

I couldn't find any solutions, do you have a workaround for this?

Same problem (not answered on Samsung's forum) here.

Similar problem on Samsung's SPen SDK (this problem was solved on a later version of SPen SDK)

What I've tried so far, which didn't help me:

1) Added below proguard elements:

-keepclassmembers class com.samsung.** { *; }
-keep class com.samsung.** { *; }
-dontwarn com.samsung.**
-keepattributes InnerClasses

2) Used proguard 4.7 and 4.11.

3) Created a new Android project, added just accessory-v1.0.0.jar at its libs folder, I didn't write any code and tried to sign the apk. Same error occured.

[2014-05-22 17:13:06 - SAGalleryProguardTest] Proguard returned with error code 1. See console
[2014-05-22 17:13:06 - SAGalleryProguardTest] java.io.IOException: Can't read [C:\Devel\Workspace\SAGalleryProguardTest\libs\accessory-v1.0.0a.jar] (Can't process class [com/samsung/android/sdk/accessory/SAAgent.class] (Unknown verification type [10] in stack map frame))
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.InputReader.readInput(InputReader.java:230)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.InputReader.readInput(InputReader.java:200)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.InputReader.readInput(InputReader.java:178)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.InputReader.execute(InputReader.java:78)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.ProGuard.readInput(ProGuard.java:196)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.ProGuard.execute(ProGuard.java:78)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.ProGuard.main(ProGuard.java:492)
[2014-05-22 17:13:06 - SAGalleryProguardTest] Caused by: java.io.IOException: Can't process class [com/samsung/android/sdk/accessory/SAAgent.class] (Unknown verification type [10] in stack map frame)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.io.ClassReader.read(ClassReader.java:112)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.io.JarReader.read(JarReader.java:65)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.io.DirectoryPump.readFiles(DirectoryPump.java:65)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.java:53)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.InputReader.readInput(InputReader.java:226)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   ... 6 more
[2014-05-22 17:13:06 - SAGalleryProguardTest] Caused by: java.lang.RuntimeException: Unknown verification type [10] in stack map frame
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.classfile.io.ProgramClassReader.createVerificationType(ProgramClassReader.java:890)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.classfile.io.ProgramClassReader.visitFullFrame(ProgramClassReader.java:659)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.classfile.attribute.preverification.FullFrame.accept(FullFrame.java:114)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.classfile.io.ProgramClassReader.visitStackMapTableAttribute(ProgramClassReader.java:452)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.classfile.attribute.preverification.StackMapTableAttribute.accept(StackMapTableAttribute.java:71)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.classfile.io.ProgramClassReader.visitCodeAttribute(ProgramClassReader.java:422)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.classfile.attribute.CodeAttribute.accept(CodeAttribute.java:101)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.classfile.io.ProgramClassReader.visitProgramMethod(ProgramClassReader.java:200)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.classfile.io.ProgramClassReader.visitProgramClass(ProgramClassReader.java:142)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.classfile.ProgramClass.accept(ProgramClass.java:346)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   at proguard.io.ClassReader.read(ClassReader.java:91)
[2014-05-22 17:13:06 - SAGalleryProguardTest]   ... 11 more
解决方案

I don't think there is anything you can put in your ProGuard config that will fix this. It is an issue with the accessory-v1.0.0.jar built by Samsung and they will have to fix it in an SDK update.

I've followed the steps set out here (http://sourceforge.net/p/proguard/bugs/420/) to build a proguard.jar library (based on v.4.11) that will ignore this error. Exporting a signed release apk built with ProGuard then finishes successfully.

I'm also using these config settings:

-keep class com.samsung.** { *; }
-keep class * extends com.samsung.** { *; }

The proguard.jar I built is available here: http://www.codingcaveman.com/download/proguard.jar

You can drop it in your AndroidSDK\tools\proguard\lib folder, but make a copy of the original - you should probably not use it for other projects. Better yet, modify your proguard.config path in project.properties to point to a different path than the normal progaurd library.

Disclaimer: This is a temporary workaround, not a fix - use at your own risk. Samsung should provide a proper fix in an updated SDK. That being said, I've not found any issues in my own testing.

UPDATE: This is no longer an issue with the Samsung Accessory SDK v2.0.19

这篇关于在SAAgent.class Proguard的错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-17 06:12
查看更多