Android,串行版本ID一次又一次不匹配

Android,串行版本ID一次又一次不匹配,android,serialization,Android,Serialization,我有一个可穿戴的移动应用程序。设置存储在序列化的Java对象中。这在电话上很好用。但当我把它们送到手表上时,我一次又一次地发现它们不匹配 我在手表上卸载了应用程序,但仍然出现相同的错误: adb -s 0390918d02a26f16 uninstall org.wordzoo.uhr.germanclock java.io.InvalidClassException: org.wordzoo.uhr.germanclock.file.WordArrays; Incompatible c

我有一个可穿戴的移动应用程序。设置存储在序列化的Java对象中。这在电话上很好用。但当我把它们送到手表上时,我一次又一次地发现它们不匹配

我在手表上卸载了应用程序,但仍然出现相同的错误:

adb -s 0390918d02a26f16  uninstall org.wordzoo.uhr.germanclock



java.io.InvalidClassException: org.wordzoo.uhr.germanclock.file.WordArrays; Incompatible class (SUID): org.wordzoo.uhr.germanclock.file.WordArrays: static final long serialVersionUID =4458778969075636174L; but expected org.wordzoo.uhr.germanclock.file.WordArrays: static final long serialVersionUID =2670788032868766877L;
06-13 13:44:01.906 17469-17469/org.wordzoo.uhr.germanclock W/System.err:     at java.io.ObjectInputStream.verifyAndInit(ObjectInputStream.java:2336)
06-13 13:44:01.906 17469-17469/org.wordzoo.uhr.germanclock W/System.err:     at java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1643)

有趣的是,错误出现在WordArrays类中,该类是相关设置类的一个成员。。。。如果这对其他人有帮助,上次我遇到这个错误时,我需要进入“构建配置”的“杂项”选项卡,并取消选中“如果未检测到任何更改则不部署APK”)参数。。。但这一次没有帮助…

argh,这是“杂项”构建配置,“如果apk没有更改,则跳过安装”。我知道我取消了它(一周前),并没有检查它再次自己和没有人使用这个作为安装

您自己设置ID吗?因此将
serialVersionUID
设置为错误消息中预期的内容;重新编译;重新部署,谢谢,明白了。我宁愿依赖java规范/ART来选择类何时兼容,何时不兼容。@tom这在99%的情况下都是多余的。大多数情况下,您的类都是序列化兼容的,即使在数量惊人的更改下也是如此。请参阅对象序列化规范的对象版本控制一章。