2012-08-17 72 views
1

我正在使用Kryonet作为Android应用程序,并且完全适用于所有Android版本,但3.0版本。我收到以下例外情况:仅在Android 3.0上出现异常

E/AndroidRuntime(16861): FATAL EXCEPTION: Thread-30 
E/AndroidRuntime(16861): com.esotericsoftware.kryo.KryoException: java.lang.StringIndexOutOfBoundsException: start=0 end=5 data.length=512 index=6 length=5 
E/AndroidRuntime(16861): Serialization trace: 
E/AndroidRuntime(16861): email (com.momasoft.sudokutournament.network.Network$Login) 
E/AndroidRuntime(16861): at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:203) 

这为什么只发生在Android 3.0上?有没有办法解决它?

谢谢!

+0

字符串是什么字符?它如何设置为5个字符的字符串 – 2012-08-17 10:42:49

+0

这是一封由用户输入的字符串。问题是,它可以在任何其他版本的Android上完美运行! – 2012-08-17 10:57:31

+0

您是否对电子邮件地址进行过任何验证? – 2012-08-17 11:04:01

回答

1

我找到了一个解决方案,调试KRYO库: 我建议改变从KRYO下面的代码:

com.esotericsoftware.kryo.io.Output.java:307

/***Change this: ***/ 
value.getBytes(0, charCount, buffer, position); 
position += charCount; 

/***for this: ***/ 
byte[] valueB = value.getBytes(); 
for (int j = 0; j < valueB.length; j++) { 
    this.writeByte(valueB[j]); 
} 

弃用了getBytes(int start,int end,byte [] elem,int offset),并给出了android 3.0中的问题。