从.apk文件中反编译Kotlin源代码

7

几天前,我的硬盘损坏了,导致我失去了整个项目文件。我有该项目的.apk文件。

但问题是,.apk文件包含100%的Kotlin语言。我找到了一种反编译代码的方法,但不幸的是它不能将代码反编译回Kotlin代码。在反编译后,我得到了一些奇怪的、写错类型的.java类。

请帮助我如何反编译我的.apk文件,这对我来说非常重要。

如果有任何方法,请建议:)


1
有将dex转换成Java的反编译器,但我没听说过有将Kotlin转换成Java的。不过你可以使用Android Studio将Java转换为Kotlin。反编译后的代码看起来永远不会像原始源代码那么漂亮。反编译器无法知道字节码编译器优化你的代码之前它是什么样子的。另外,在没有版本控制和备份的情况下不要开发任何东西。BitBucket和GitHub都允许你免费备份私人项目。 - Tenfour04
确实,发生的事情很遗憾,但如果您没有备份或者没有推送到远程版本控制,那么恢复整个项目到原始状态的可能性不大。您可以将 .class 文件反编译为 Java(我从未见过 KT 反编译器),但是您无法恢复格式、注释、项目结构等等。:/ 希望这能提醒所有用户,在互联网上有很多免费的 git(和其他)托管地方;不仅仅是 githubgitlabbitbucket(假设您不在被封锁的国家)。:/ - Martin Marconcini
谢谢回复...实际上我已经找回了我的项目...我只是反编译了我的apk,但是我没有在kotlin中找到我的项目,而是在java中找到了它...我只是用相同的包名创建了一个新项目,并开始复制我的.kt文件,幸运的是,我的java代码通过SMART IDE - ANDROID STUDIO自动转换为kotlin :) 但是我仍然对这些文件进行了一些更改,因为它们包含了许多冗余文件...那些都是自动生成的。 - Kaunain
@Kaunain 你好,能否详细说明一下你是如何解决这个问题的?我在将.class反编译为.java时遇到了很多错误,无法继续进行... - ch271828n
@ch271828n 如我在上面的评论中所提到的,您只需执行相同操作。反编译您的apk文件,然后您将获得 .java类,然后只需创建一个新项目并将代码复制粘贴到 新的 .kt类 中,IDE 将自动将您的 .java转换为 .kt ,但是会有一些错误需要您分析和解决。如果这个项目只由您自己完成,则可以轻松解决这些错误。我知道您需要付出一些努力,因为没有其他方法可以将apk反编译为源代码。在我的情况下,花了一周时间才找回我的项目。 - Kaunain
@Kaunain 谢谢!当我得到一个 .java 类时,它非常丑陋,包含大量奇怪的符号和变量,甚至会出现编译错误... - ch271828n
1个回答

1

从APK文件反编译Kotlin代码,可以使用一些可用的工具。

FernFlower:可以使用Java反编译器FernFlower来反编译Kotlin代码。可以使用FernFlower反编译APK文件以生成Java代码,然后使用像IntelliJ IDEA这样的工具将其转换回Kotlin代码。

还有一些在线网站可以在Google上搜索,并且还可以使用Windows上的apk easy tool来反编译源代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接