我在使用Google Play Savegames和Android flavors时遇到了奇怪的错误。为了测试我的游戏,我有两个不同的flavors,dev用于测试,release用于发布。
我用同一个谷歌账号同时使用了两种口味的Google Play savegames。似乎每当我将其中一个版本的savegame推到云中时,另一个版本就再也找不到它的savegame了。
如果为两个flavors启用了savegame,会不会发生某种冲突,从而导致我的savegame丢失?如果这两个游戏有不同的包名称(com.company.mygame和com.company.mygame.dev),是否应该将其保存为云中的两个不同的游戏,或者Google Play Games如何处理此问题?
发布于 2017-03-13 06:37:10
我自己解决了这个问题,这是Proguard的问题。Proguard重命名了我的枚举的名称,这些枚举是我的savegame数据的一部分,即使savegamedata本身被排除在混淆之外。排除适用于savegame数据中的所有变量名称,但不适用于枚举名称。
添加到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 *;
}https://stackoverflow.com/questions/42626621
复制相似问题