2012-08-17 2 views
1

J'utilise Kryonet pour une application Android, et fonctionne parfaitement sur toutes les versions d'Android, mais la version 3.0. Je reçois l'exception suivante:Exception seulement sur 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) 

Pourquoi cela se produit-il uniquement sur Android 3.0? Y a-t-il un moyen de le résoudre?

Merci!

+0

Quelle est la chaîne? Comment est-il défini sur une chaîne de 5 caractères? –

+0

Il s'agit d'un e-mail en tant que chaîne entrée par l'utilisateur. Le problème est, cela fonctionne parfaitement sur toute autre version d'Android! –

+0

Avez-vous effectué une validation sur l'adresse e-mail? –

Répondre

1

J'ai trouvé une solution, la bibliothèque de débogage Kryo: Je suggère de modifier le code suivant de 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]); 
} 
Les getBytes (int start, int end, octet [] elem, int offset) sont obsolètes et posent des problèmes dans android 3.0.