2011-11-25 80 views
3

我在这里有一个问题..它使我非常紧张。从已编译的apk中恢复丢失的代码

我正在研究这个游戏,它很棒,所以我拿着它在我的笔记本电脑上工作,做一些工作,同时远离我的电脑。

长话短说,硬盘故障+可怜的备份导致我失去了一个非常重要的课程。

有没有反编译apk的方法来检索丢失的代码位?它不是太复杂或复杂,只是它不可能在没有阅读的情况下重新编写它。单。线。的。码。在整个应用程序中,因为它初始化了很多类并以特定的方式加载了一堆东西。

通过快速谷歌搜索,我找到了apktool,它将其反编译成一堆.smali文件,我不认为这些文件是为人类阅读而设计的。

我需要恢复的是一个非常大的方法。我发现了包含它的smali文件,我想我找到了它开始的地方。像

。方法公开宣布同步负载(LCOM/X/X /游戏/ X;)我

任何人的帮助,将不胜感激,因为我将不得不放弃整个游戏没有这个方法。

+0

这就是为什么你使用源代码管理(显然是非现场)。 – Femaref

回答

5

快速谷歌导致反编译的方式(decompile apk to java source)。但是,即使它产生了java代码,也可能不会有任何变量名称(只是默认的变量名称,如param1),因为在将源代码编译为字节代码时,这些变量不可恢复地被删除,也取决于反编译器, foreach循环将是while循环,因为编译器优化,如果/ else块可能不代表您的原始控制流。

作为一般建议:使用某种源代码控制。在你自己的服务器上,使用github的付费账户并不重要,但使用源代码管理。即使你只是一个开发项目的人。它有助于这种情况,它有助于恢复到以前的版本,它有助于找到你引入的错误。当这些工具可用时,请使用它们。