我有一个拥有数千名用户的Android应用。
我有一个“ People”类,其中没有serialVersionUID。
现在我需要向此类添加一个字段,这会导致serialVersionUID错误:
local class incompatible: stream classdesc serialVersionUID = 7218824082595439088, local class serialVersionUID = 4788147862213096843
现在,我只需声明
就可以解决这个问题。 private static final long serialVersionUID = 7218824082595439088L;
这将解决我的应用程序上的问题,但我猜这将无法解决问题,因为当用户安装我的更新时,他们手机上的serialVersionUID会有所不同(我读到它取决于编译器)?还是他们所有的应用程序都将具有与我相同的serialVersionUID?
如何在不破坏所有用户应用程序的情况下推出更新?
编辑:我的主要问题是-我的android应用程序用户(已从Play商店下载了)的Person类的serialVersionUID是否相同?就像我在构建和签署apk时在计算机上生成的一样吗?还是根据安装的每台设备而不同?
答案 0 :(得分:-1)
如果您不想仅通过changind UID破坏用户的应用程序,那就不要这样做。如果没有UID,则不同版本的序列化类将始终不兼容(您将收到相同的“本地类不兼容”错误)。因此,您只能在类中的下一个更改之后添加UID,并且至少不会破坏应用程序的最新版本。