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

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


当前回答

步骤1:创建一个新文件夹并复制您要解码的.apk文件。

现在,将这个.apk文件的扩展名重命名为.zip(例如,从filename.apk重命名为filename.zip)并保存它。现在,您可以访问classes.dex文件等。在这个阶段,您可以看到可绘制文件,但不能看到xml和java文件,因此请继续。

第2步:现在在同一文件夹(或NEW folder)中提取这个.zip文件。

下载https://github.com/pxb1988/dex2jar/releases/tag/2.0:dex2jar-2.0

现在打开命令提示符并将目录更改为该文件夹(或NEW folder)。然后执行:d2j-dex2jar.bat类.dex

下载此反编译器http://java-decompiler.github.io/反编译classes-dex2jar.jar

步骤3:现在打开另一个新文件夹

放入要解码的.apk文件

下载apktool AND apktool的最新版本(https://ibotpeaches.github.io/Apktool/install/)安装窗口(两者都可以从同一链接下载),并将它们放在同一文件夹中

打开命令窗口

现在运行命令,如apktool if framework-res.apk(如果没有,请在此处获取),然后

apktool d myApp.apk(其中myApp.apk表示要解码的文件名)

现在,您在该文件夹中获得了一个文件文件夹,可以轻松地读取apk的xml文件。

将两个文件夹的内容复制到单个文件夹

完成!

其他回答

我个人建议Show Java Android App获取源代码。您可以从play商店或此处下载

我发现以下是最简单的方法:

将app.apk重命名为app.zip(将扩展名从apk更改为zip)将zip文件解压缩到文件夹中使用JADX工具读取classes.dex文件中的源代码。

是的,这是可能的。

有很多软件可以对android.apk文件进行反向工程。

最近,我在我的网站上整理了47个最好的APK反编译器的最终列表。我把它们分成4个不同的部分。

开源APK分解器在线APK分解器适用于Windows、Mac或Linux的APK解压缩程序APK分解器应用程序

我希望这本书对你有帮助。

链接:https://www.edopedia.com/blog/best-apk-decompilers/

用于反向工程第三方、封闭的二进制Android应用程序的Apktool。

它可以将资源解码为几乎原始的形式,并在进行一些修改后重建它们。

它使逐步调试smali代码成为可能。此外,它还使使用应用程序变得更容易,因为它具有类似项目的文件结构和一些重复任务的自动化,如构建apk等。

http://ibotpeaches.github.io/Apktool/

对于java文件


使用此处给出的公认答案

对于XML文件


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

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

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

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

希望这能帮助到其他人!