Google 游戏:使用另一种风格删除云保存游戏

Google Games: Cloud save game gets deleted by using another flavor

我在使用 Google Play Savegames 和 Android flavors 时遇到奇怪的错误。 为了测试我的游戏,我有两个不同的 flavorsdev 用于测试,release 用于发布。

我使用相同的 google 帐户对两种口味使用 Google Play savegames。似乎每当我将其中一个版本的游戏存档推送到云端时,另一个版本就找不到它的游戏存档了。

为两个 flavors 启用保存游戏是否会产生某种冲突,这可能会导致我的保存游戏丢失?如果它们具有不同的包名称(com.company.mygame 和 com.company.mygame.dev),难道不应该在云中将其保存为两个不同的游戏,或者 Google Play Games 如何处理这个问题?

我自己解决了这个问题,这是 Proguard 的问题。 Proguard 重命名了我的枚举的名称,它们是我的游戏存档数据的一部分,即使游戏存档数据本身被排除在混淆之外。排除对保存游戏数据中的所有变量名称都有效,但对枚举名称无效。

添加到 Proguard 规则的这些行解决了问题:

# Application classes that will be serialized/deserialized over JSON, keepclassmembers
-keepclassmembers class com.mycompany.mygame.Utility.SaveGameData** { *; }

# all my enums that were renamed
-keep public enum com.mycompany.mygame.Entities.Player$** {
    **[] $VALUES;
    public *;
}

-keep public enum com.mycompany.mygame.Entities.Enemy$** {
    **[] $VALUES;
    public *;
}

-keep public enum com.mycompany.mygame.Entities.Quest$** {
    **[] $VALUES;
    public *;
}

-keep public enum com.mycompany.mygame.Entities.Room$** {
    **[] $VALUES;
    public *;
}