有没有办法从APK文件中获取源代码?
我笔记本电脑上的硬盘驱动器刚刚崩溃,我丢失了过去两个月来一直在使用的应用程序的所有源代码。 我所拥有的是从我发送给朋友的邮件中存储的APK文件。
有没有什么办法从这个APK文件中提取我的源代码?
简单的方法:使用在线工具http://www.javadecompilers.com/apk,上传apk并获取源代码。
解密.apk文件的步骤,分步方法:
步骤1:
制作一个新文件夹并复制您想要解码的.apk文件。
现在将这个.apk文件的扩展名重命名为.zip(例如,从filename.apk重命名为filename.zip)并保存。 现在你可以访问classes.dex文件等等。在这个阶段,你可以看到drawable,但不能看到xml和java文件,所以继续。
第2步:
现在将这个.zip文件解压到相同的文件夹(或NEW FOLDER)中。
下载dex2jar并将其解压缩到相同的文件夹(或NEW FOLDER)。
将classes.dex文件移动到dex2jar文件夹中。
现在打开命令提示符并将目录更改为该文件夹(或新文件夹)。 然后编写d2j-dex2jar classes.dex
(用于mac终端或ubuntu编写./d2j-dex2jar.sh classes.dex
)并按回车。 您现在已将classes.dex.dex2jar文件放在同一个文件夹中。
下载java反编译器,双击jd-gui,点击打开的文件,然后从该文件夹打开classes.dex.dex2jar文件:现在你得到类文件。
保存所有这些类文件(在jd-gui中,单击文件 - >保存所有源)src名称。 在这个阶段你会得到java源代码,但是.xml文件仍然是不可读的,所以继续。
第3步:
现在打开另一个新文件夹
放入你想解码的.apk文件
下载最新版本的apktool AND apktool安装窗口(两者均可从同一链接下载)并将它们放在同一文件夹中
打开一个命令窗口
现在运行命令如apktool if framework-res.apk
和next
apktool d myApp.apk
(其中myApp.apk表示要解码的文件名)
现在你在该文件夹中获得一个文件夹,并可以轻松读取apk的xml文件。
步骤4:
这不是任何步骤只是将两个文件夹(在这种情况下,这两个新文件夹)的内容复制到单个文件夹
并享受源代码...
这是一个替代描述 - 以防万一有人被困在上面的描述中。 按照步骤:
apktool.bat
(或适用于Linux的apktool
)和apktool_<version>.jar
。 apktool.jar
,并将这两个文件放在同一个文件夹中 cmd.exe
)并切换到该文件夹; 验证是否安装了Java环境(对于Linux,请检查有关所需库的注释) apktool decode [apk file]
中间结果:资源文件, AndroidManifest.xml
中级结果: classes.dex
dex2jar-0.0.9.15.zip
classes.dex
拖放到dex2jar.bat
(或在DOS框中输入<path_to>dex2jar.bat classes.dex
;对于Linux,请使用dex2jar.sh
) 中间结果: classes_dex2jar.jar
classes_dex2jar.jar
(根据使用的反编译器可能是可选的) 结果:源代码
注意:不允许反编译第三方包; 本指南旨在仅从APK文件恢复个人源代码; 最后,生成的代码很可能会被混淆
虽然您可能能够反编译APK
文件,但您可能会碰到一个大问题:
它不会返回你写的代码。 相反,它将返回任何内联编译器,变量赋予随机名称,以及赋予随机名称的函数。 尝试反编译并将其恢复到您的代码中可能需要很长时间,而不是重新开始。
可悲的是,像这样的事情导致许多项目死亡。
在未来,我强烈建议学习一个版本控制系统,如CVS , SVN和git等。
以及如何备份它。
链接地址: http://www.djcxy.com/p/5485.html上一篇: Is there a way to get the source code from an APK file?
下一篇: Android database recreates every time application is launched