仅在Android 3.0上例外

时间:2012-08-17 10:35:27

标签: android serialization android-3.0-honeycomb kryo

我正在使用Kryonet作为Android应用程序,并且在所有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上?有办法解决吗?

谢谢!

1 个答案:

答案 0 :(得分: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中出现问题。