1

我正在将 Kryonet 用于 Android 应用程序,并且可以在除 3.0 版本之外的所有 Android 版本上完美运行。我收到以下异常:

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 上?有没有办法解决它?

谢谢!

4

1 回答 1

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 中出现问题。

于 2012-08-20T12:12:42.860 回答