个人笔记本电脑上的硬盘驱动器刚刚崩溃,而且丢失了过去两个月来我一直在使用的应用程序的全部源代码。 我所拥有的就是APK文件,该文件存储在我发送给朋友时的电子邮件中。 html
有什么办法能够从这个APK文件中提取个人源代码? java
这两篇文章描述了如何结合使用apktool
和dex2jar
来获取APK
文件,并建立一个能够构建和运行它的Eclipse项目。 linux
http://blog.inyourbits.com/2012/11/extending-existing-android-applications.html android
http://blog.inyourbits.com/2012/12/extending-existing-android-applications.html git
基本上,您: github
apktool
将资源文件移出apk dex2jar
得到一个jar文件,其中包含Eclipse所需格式的类。 JDGui
打开jar文件以查看源代码 JDGui
所需的任何源代码,将其粘贴到Eclipse中的类中并对其进行修改 我将向您展现其余反编译.apk文件的方法。 windows
您能够按照“ prankul garg ”的前两个步骤进行操做 。 所以,您还有另外一个机会: app
步骤3': 函数
下载“ JD-GUI” ,就很容易找到这个。 在“ jd-gui.exe”中打开您的.jar文件。 (文件>打开文件>'找到您的.jar文件')。 完成此过程后,您能够将全部资源保存为.zip文件。 学习
因此,
1st-您必须将.apk文件重命名为.zip
2-您必须解码.dex文件(若是须要,能够将.apk文件解码为dex2jar )
3-您必须使用JD-GUI解码.jar文件
这是一个替代性说明-以防万一有人卡在上面的说明中。 按照步骤:
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文件中恢复我的源代码; 最后,最终的代码极可能会被混淆
Play商店上还有一个新应用程序,能够经过它反编译apk(也为系统应用程序)并在智能手机上查看源代码。 它将文件保存到SD卡,所以您也能够在计算机上查看文件。 它不须要root或其余东西。
只需安装并享受乐趣。 我认为这是反编译应用程序的最简单方法。
虽然您能够反编译APK
文件,但您可能会遇到一个大问题:
它不会返回您编写的代码。 相反,它将返回编译器内联的全部内容,其中变量具备随机名称,而函数具备随机名称。 与从新开始相比,尝试反编译并将其还原到您拥有的代码中可能要花费更多的时间。
可悲的是,像这样的事情已经杀死了许多项目。
对于将来,我强烈建议学习版本控制系统,例如CVS , SVN和git等。
以及如何备份。