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

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


当前回答

apktool是最好的选择。在线apktool服务也存在:http://www.javadecompilers.com/apktool

显然,由于服务的“在线性质”,存在一些限制:您可以提取和研究资产和清单文件,但目前不可能重新编译应用程序。

尽管如此,这是一种“打开”android应用程序的简单方法。

其他回答

有一个应用程序可以实现这一点,通常只需点击几下即可完成。https://github.com/Nuvolect/DeepDive-Android

选择应用程序,在“已安装的应用程序”下选择您的应用程序。如果不是在那里你可以加载APK。选择“提取APK”选择“解压缩APK”选择“使用Jadx分解”。这可能需要几秒钟或几分钟,具体取决于取决于设备的速度

之后,您可以浏览源代码,使用elFinder将其下载到另一台计算机,或使用Lucene进行搜索。

除了Jadx,它还有CFR和Fernflower反编译器。

apktool是你能尝试的最好的方法。我用它保存了一些xml,但老实说,我不知道它如何与.java代码一起工作。

我建议您拥有一个代码库,即使您是唯一的程序员。我一直在为自己的项目使用Project Locker。它为您提供免费svn和git repo。

Android工作室为您提供分析任何apk文件的功能。

1-从构建菜单中选择分析apk选项并选择apk文件。2-这将导致classes.dex文件和其他文件。3-单击classes.dex,它将为您提供文件夹、包、库和文件的列表。4-从和android工作室设置安装一个名为“Dex to Jar”的插件5-单击提取项目的任何活动文件,然后从构建菜单中选择dex-to-jar。

这将生成java文件的实际代码。

干杯

这两篇文章描述了如何结合使用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文件中删除该类(这样就不会多次定义相同的类)运行它。

我开发了一个工具代码分析器,它在iPhone/iPad/Mac中运行,用于分析Java/Android文件,https://decompile.io