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

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


当前回答

几天来,我一直想让dex2jar在一台软呢帽31笔记本电脑上与一台无法工作的apk进行比较,这让我发疯了。这个python3脚本在几分钟内就完成了这个任务,安装jdgui使类文件变得可读。

http://java-decompiler.github.io/

https://github.com/Storyyeller/enjarify

具体来说,下面是我运行的:

# i installed apktool before the rest of the stuff, may not need it but here it is
$> cd /opt
$> sudo mkdir apktool
$> cd apktool/
$> sudo wget https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool
$> sudo wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.4.1.jar
$> sudo mv apktool_2.4.1.jar apktool.jar
$> sudo mv apktool* /usr/bin/
$> sudo chmod a+x /usr/bin/apktool*

# and enjarify
$> cd /opt
$> sudo git clone https://github.com/Storyyeller/enjarify.git
$> cd enjarify/
$> sudo ln -s /opt/enjarify/enjarify.sh /usr/bin/enjarify

# and finally jd-gui
$> cd /opt
$> sudo git clone https://github.com/java-decompiler/jd-gui.git
$> cd jd-gui/
$> sudo ./gradlew build

# I made an alias to kick of the jd-gui with short commandline rather than long java -jar blahblahblah :)
$> echo "jd-gui='java -jar /opt/jd-gui/build/launch4j/lib/jd-gui-1.6.6.jar'" >> ~/.bashrc

现在应该可以使用以下方法获取类文件:

$> enjarify yourapkfile.apk

要启动jd-gui:

$> jd-gui

那就打开你的课堂文件吧!

其他回答

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

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

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

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

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

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

对于java文件


使用此处给出的公认答案

对于XML文件


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

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

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

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

希望这能帮助到其他人!

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

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

步骤3':

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

So,

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

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

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

此网站https://www.apkdecompilers.com/自动完成。

我先尝试了被接受的答案中提到的网站,但这对我来说不起作用。