尝试使用Eclipse执行/调试现有的APK文件

时间:2012-10-08 03:37:40

标签: android eclipse debugging apk

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

以下是我完成的步骤:

  1. 我将.apk重命名为.zip并解压缩到一个文件夹中。
  2. 在Eclipse中,我使用现有代码创建了一个新的“Android项目”。在下一个屏幕“导入项目”中,我浏览了解压缩apk的文件夹。
  3. 但是这个项目在Eclipse中有错误!所以我尝试了接下来的步骤:

    1. 我在.apk上执行了apktool,它创建了一个我用于同一导入的文件夹 在步骤2中提到。现在项目不再有错误。
    2. 在Eclipse中,我将此项目作为Android应用程序“运行”或“调试为”,并在模拟器上启动。
    3. 不好! logcat显示错误,例如“dalvikv - 线程退出未捕获的异常”。还有其他一些关于无法实例化应用程序和java.lang.ClassNotFoundException的logcat消息。

      问题1: 有人能告诉我还有什么其他步骤可以把它变成一个“好”的项目吗?有没有明显的东西我缺少类?

      一旦我能够成功地“运行”或“调试为”,我就会想通过设置断点来调试它。但我似乎无法获得正确的源文件夹。我有.smali文件作为步骤3中提到的apktool步骤的结果。此外,我尝试了各种工具,如dex2jar和jd-gui,以便我有.java文件。但每当我指出Eclipse这些源所在的文件夹(并且我检查了“搜索子文件夹”)时,Eclipse会说“找不到源”。和“编辑源查找路径”。我也试过把 工作区的/ src文件夹中的源。

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

2 个答案:

答案 0 :(得分:3)

所以基本上你要做的就是从打包的APK文件中提取源代码。你所取得的成就是我能做的最大努力。在打包APK文件时,由于混淆,无法获得准确和真实的源代码。所以你所达到的是你能达到的最大值。我使用这些工具,但从未提取过一个真正的.java文件,正如作者可能写的那样。它将包含一些不被eclipse理解的编译器地址和优化。

答案 1 :(得分:0)

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

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

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

注意:如果编写该apk的开发人员使用proguard,则只能看到代码的跟随。