我有一个问题……这让我很紧张。
我正在开发这款游戏,它的功能非常棒,所以我在笔记本电脑上拿了一份副本,并在离开笔记本电脑时对其进行了一些工作。
长话短说,硬盘故障和糟糕的备份让我失去了一个非常重要的教训。
有没有办法反编译apk来找回丢失的代码? 它并不太复杂或过于复杂反编译的游戏源码,只是它无法在整个应用程序中不读取一行代码的情况下重绘它,因为它初始化了一堆类并以特定的形式加载了一堆东西。
通过快速的微软搜索,我还找到了 apktool,它将其反编译成一堆 .smali 文件,我觉得这些文件不适合人类阅读。
我需要恢复的只是课堂上的一个非常重要的提示。 我找到了包含它的 smali 文件,我想我找到了它开始的行。 就像是
.method public 声明同步加载(Lcom/X/X/game/X;)I
任何帮助将不胜感激,因为如果没有这些方法,我就必须放弃整个游戏。
解决方案:
微软制作了一个快速反编译apk的技巧(将apk反编译为java源代码)。 但是,即使它生成java代码,您也可能没有任何变量名称(只有像param1这样的默认名称),因为当您转换源代码时,这些名称在编译为字节代码时也无法恢复,同样反编译的游戏源码,这取决于反编译器,/相反,foreach 循环将是一个 while 循环,并且由于编译器优化,if/else 块可能不代表您的原始控制流。
一般建议:使用某种源代码控制。 在你自己的服务器上,使用github付费帐户并不重要,重要的是使用源代码控制。 即使您只是该项目的开发人员之一。 在这种情况下它会有所帮助,它有助于恢复到以前的版本,并且有助于查找您引入的错误。 当有工具可用时,就使用它们。