1

私はAndroidアプリにKryonetを使用しており、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)

なぜこれはAndroid3.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 に答える