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

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


当前回答

在线工具下方:

http://www.javadecompilers.com/apk

它只需单击一下即可完成所有操作:反编译的.java文件+资源+xml(在一个.zip文件中)和非常好的反编译器(jadx在其他编译位置/函数中返回java代码,其他编译返回函数内的注释,如“无法反编译”或某些android汇编程序/机器代码)

其他回答

这两篇文章描述了如何结合使用apktool和dex2jar来获取APK文件并创建一个可以构建和运行它的Eclipse项目。

http://blog.inyourbits.com/2012/11/extending-existing-android-applications.htmlhttp://blog.inyourbits.com/2012/12/extending-existing-android-applications.html

基本上你:

使用apktool从apk中获取资源文件使用dex2jar获取一个jar文件,其中包含Eclipse喜欢的格式的类。创建一个Eclipse项目,指向资源文件和新的jar文件使用zip实用程序打开jar文件并删除现有资源使用JDGui打开jar文件以查看源代码从JDGui中获取所需的任何源代码,将其粘贴到Eclipse中的一个类中并进行修改从jar文件中删除该类(这样就不会多次定义相同的类)运行它。

最简单的方法:使用在线工具Decompiler,上传apk并获取源代码。


解码.apk文件的过程,分步方法:

步骤1:

创建一个新文件夹并复制您要解码的.apk文件。现在将.apk文件的扩展名重命名为.zip(从filename.apk重命名为filename.zip)并保存。现在您可以访问classes.dex文件。在这个阶段,您可以看到可绘制文件,但不能看到.xml和.java文件。

第2步:

现在在同一文件夹或新文件夹中提取这个.zip文件。下载dex2jar(不要下载代码,单击右侧的releases按钮,然后下载名为dex2jar-X.X.zip的文件)并将其解压缩到同一文件夹或新文件夹。将classes.dex文件移动到dex2jar文件夹中。现在打开命令提示符并将目录更改为该文件夹。然后编写d2j-dex2jar classes.dex(适用于Mac或Ubuntu write./d2j-dex2-jar.sh classes.dex)并按enter键。现在,classes.dex.dex2jar文件位于同一文件夹中。下载java反编译程序,右键单击jdgui,单击Open File,然后从该文件夹中打开classes.dex.dex2jar文件:现在您得到了类文件。按src名称保存所有这些类文件(在jdgui中,单击File->SaveAllSources)。在这个阶段,您得到了Java代码,但.xml文件仍然无法读取。

步骤3:

现在打开另一个新文件夹

放入要解码的.apk文件下载apktool和apktool安装窗口的最新版本(两者都可以从同一链接下载),并将它们放在同一文件夹中打开命令提示符现在,运行命令apktool if framework-res.apk(如果没有,请在此处获取),然后apktool d myApp.apk(myApp.apk表示要解码的文件名)

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

步骤4:

这不是任何步骤,只需将两个文件夹(两个新文件夹)的内容复制到单个文件夹

享受源代码!

为了反编译APK并从中获取代码,您有多个在线工具&我通常更喜欢使用在线APK反编译程序。

它非常容易使用,几分钟内您就可以从中下载源代码。

如果你想从playstore下载APK并反编译。你也可以很容易地从它下载。

我将向您展示反编译.apk文件的其他方法。

你可以按照“恶作剧漱口”的前两步来做。所以你还有另外一个机会:

步骤3':

下载“JD-GUI”,很容易找到这个。在“jd-gui.exe”中打开.jar文件。(文件>打开文件>找到.jar文件)。完成此过程后,您可以将所有资源保存在.zip文件中。

So,

第一个-必须将.apk文件重命名为.zip

第二步-必须解码.dex文件(如果需要,可以将.apk文件解码为dex2jar)

第三-您必须使用JD-GUI解码.jar文件

对于java文件


使用此处给出的公认答案

对于XML文件


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

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

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

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

希望这能帮助到其他人!