我笔记本电脑上的硬盘刚刚崩溃,我丢失了过去两个月一直在开发的应用程序的所有源代码。我只有一个APK文件,它存储在我发给朋友的电子邮件中。

有没有办法从这个APK文件中提取我的源代码?


当前回答

apktool将工作。您甚至不需要知道提取源代码的密钥库(这有点吓人)。主要缺点是源代码以Smali格式而不是Java格式呈现。其他文件,如icon和main.xml,通过的很好,但可能值得您花时间至少恢复这些文件。最终,您很可能需要从头开始重新编写Java代码。

你可以在这里找到apktool。只需下载apktool和适当的助手(适用于Windows、Linux或Mac OS)。我建议使用7-zip之类的工具来打开它们。

其他回答

apktool将工作。您甚至不需要知道提取源代码的密钥库(这有点吓人)。主要缺点是源代码以Smali格式而不是Java格式呈现。其他文件,如icon和main.xml,通过的很好,但可能值得您花时间至少恢复这些文件。最终,您很可能需要从头开始重新编写Java代码。

你可以在这里找到apktool。只需下载apktool和适当的助手(适用于Windows、Linux或Mac OS)。我建议使用7-zip之类的工具来打开它们。

Play Store上还有一个新的应用程序,它可以反编译apk(系统应用程序),并在智能手机上查看源代码。它将文件保存到SD卡中,以便您也可以在计算机上查看。它不需要根或其他东西。

只需安装并享受乐趣。我认为这是反编译应用程序最简单的方法。

可能是最容易看到的来源:

在Android studio 2.3中,构建->分析APK->选择要反编译的APK。你会看到它的源代码。

参考链接:https://medium.com/google-developers/making-the-most-of-the-apk-analyzer-c066cb871ea2

市场上有很多应用程序和方法可以将apk文件反编译为java类,但是如果应用程序是用ProGuard规则编译的,那么你就遇到了很大的麻烦,因为这个规则会将所有的dex文件缩成一个小字符的名称,然后你就无法追溯实现。看见https://developer.android.com/studio/build/shrink-code用于模式澄清。

快乐编码。。。

对于java文件


使用此处给出的公认答案

对于XML文件


你不必使用公认答案中给出的方法,因为我觉得它很复杂。

我所做的是将APK文件转换为ZIP并解压缩。解压缩后,我得到了一个名为res的文件夹:

我刚打开它,发现了很多文件夹。对于布局,您需要找到名为layout的文件夹,而不是像layout land之类的其他文件夹。同样的事情也可以用其他资源来完成,比如绘图、菜单等。。。

注意:会有很多随机文件不是由您创建的。你可以找到自己制作的文件,然后使用它们!

希望这能帮助到其他人!