没有serialVersionUID的Android应用已经有很多用户。如何添加一个更改serialVersionUID

时间:2019-01-24 10:18:42

标签: java android serialization serializable serialversionuid

我有一个拥有数千名用户的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时在计算机上生成的一样吗?还是根据安装的每台设备而不同?

1 个答案:

答案 0 :(得分:-1)

如果您不想仅通过changind UID破坏用户的应用程序,那就不要这样做。如果没有UID,则不同版本的序列化类将始终不兼容(您将收到相同的“本地类不兼容”错误)。因此,您只能在类中的下一个更改之后添加UID,并且至少不会破坏应用程序的最新版本。