我正在将 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 上?有办法解决吗?
谢谢!
最佳答案
我找到了一个解决方案,调试 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 中出现问题。
关于android - 仅在 Android 3.0 上异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12004180/