0

我有一个没有任何来源的现有 .APK 文件。我想在 Bluestacks(或其他)模拟器上使用 Eclipse 对其进行调试。最后,我想设置一个断点,但现在,我只想让它在模拟器上运行。我不是在谈论仅使用 adb 将其安装在模拟器上然后在那里运行。我没有成功让 Eclipse 构建的生成的 .apk 在模拟器上运行。

以下是我已完成的步骤:

  1. 我将 .apk 重命名为 .zip 并解压缩到一个文件夹中。
  2. 在 Eclipse 中,我从现有代码创建了一个新的“Android 项目”。在下一个屏幕“导入项目”中,我浏览到解压缩 apk 的文件夹。

但是这个项目在 Eclipse 中有错误!所以我尝试了接下来的步骤:

  1. 我在 .apk 上执行了 apktool,它创建了一个文件夹,用于在步骤 2 中提到的相同导入。现在项目不再有错误。
  2. 在 Eclipse 中,我将此项目作为 Android 应用程序“运行”或“调试”,它在模拟器上启动。

不好!logcat 显示诸如“dalvikv - 线程退出但未捕获异常”之类的错误。还有其他关于无法实例化应用程序和 java.lang.ClassNotFoundException 的 logcat 消息。

问题 1:有人能告诉我还需要哪些其他步骤才能将其变成“好”项目吗?关于课程,我有什么明显的遗漏吗?

一旦我可以让它成功地“运行为”或“调试为”,然后我会想通过设置一个断点来调试它。但我似乎无法正确获取源文件夹。由于步骤 3 中提到的 apktool 步骤,我有 .smali 文件。此外,我尝试了各种工具,例如 dex2jar 和 jd-gui,因此我有 .java 文件。但是,每当我告诉 Eclipse 这些源所在的文件夹(并且我检查了“搜索子文件夹”)时,Eclipse 都会说“找不到源”。和“编辑源查找路径”。我还尝试将源代码放在工作区的 /src 文件夹中。

问题 2:我可以将源代码放在哪里以便 Eclipse 找到它们?这些源文件可以是 .smali 还是 .java?

4

2 回答 2

3

所以基本上你要做的是从打包的 APK 文件中提取源代码。你所取得的成就是我也能做到的最大值。由于在打包 APK 文件时进行了混淆,因此无法获得准确和真实的源代码。所以你达到的就是你能达到的最大值。我使用了这些工具,但从未像作者所写的那样提取真正的 .java 文件。它将包含一些 Eclipse 无法理解的编译器添加和优化。

于 2012-10-08T04:16:30.610 回答
0

问题 1:您将有很多步骤从 .apk 文件中获取 android 项目。这项工作被命名为倒车、解码...

  • 您可以使用 apktool 将 apk 反编译为 .smali 文件
  • 然后使用 javaDecompiler 将 .smali 文件反转为 .java 文件
  • 创建项目并将 .java 文件导入其中

问题2:试试问题1,你可以做到。

注意:如果编写该 apk 的开发人员使用 proguard,您只会看到代码的后续。

于 2013-12-18T02:08:00.463 回答