【问题标题】:how to decompile a .apk without errors?如何反编译没有错误的.apk?
【发布时间】:2016-05-16 13:18:43
【问题描述】:

我尝试了apktool,甚至在线版本,http://www.decompileandroid.com/ 但仍然无法得到在 eclipse 中有效的东西。

我想反编译一个名为 bucket drops 的应用程序,它是作为 android 课程的一部分制作的。我想查看源代码并对其进行调整。

当我尝试反编译 .apk 文件时,它缺少 .classpath 和 .project 文件,所以我在 eclipse 中创建了一个新项目并将源代码复制到其中,但由于某种原因 eclipse 显示该应用程序有错误!

我该怎么办?

【问题讨论】:

  • 反编译的java代码不会保留类名,是吗?
  • 您也应该切换到 Android Studio,因为从 2016 年开始,Android 开发不再支持 eclipse

标签: java android eclipse decompiler apktool


【解决方案1】:

操作方法:使用 ApkTool 反编译/重新编译 apk


要求:

ApkTool Java JDK/JRE 32 位 基本 Cmd/终端知识


在此处下载 ApkTool

ApkTool.zip

首先,您需要将该 zip 文件夹解压缩到您选择的任何位置,最好在 c/drive 的根目录上,即:C:/android/apktool 将文件解压缩到“apktool”文件夹

现在将 STOCK framework-res.apk 和您想要修改的任何其他 apk 放入“apktool”文件夹中


进入 CMD 目录

打开 Cmd 提示符(终端)并进入“apktool”目录,即:

你的 cmd 可能看起来像这样..

C:\users\你的名字>

所以输入

cd..(是的,包括“..”并在键入每个命令后按 Enter)

这会让你回到后台目录,所以现在你会看到

C:\用户>

所以再输入一遍

cd..

你现在应该看到这个:

C:>

现在输入:

cd 'apktoo'l/'目录'

对我来说是这样的:

cd 安卓/apktool

现在你应该看到了:

C:/android/apktool>

你在 apktool 目录中:D

点击展开...

安装框架

现在您在目录中,我们需要将设备的框架安装到您的系统以使其正确编译,因此请输入以下内容:

apktool if framework-res.apk

这会将设备框架安装到您的系统(需要这样做)


反编译

现在反编译您要编辑的 apk.. 输入:

apktool d framework-res.apk framework1

或

apktool d music.apk 音乐

music.apk 是你反编译的apk music 是您为反编译后的 apk 创建的文件夹

现在进行编辑:D 请勿更改/编辑任何 PNG


重新编译/成品

现在要重新编译你的新 apk,输入:

apktool b 音乐 music-new.apk

或

apktool b framework1 framework-res-new.apk

framework1 是您编辑的文件所在的文件夹 framework-res-new.apk 是你的新 apk 文件:D

现在我们还没有完成...我们不能使用新的 apk...我们必须采取我们所做的并将其添加回原始 apk 文件以保持正确的签名:D

使用 7zip 之类的东西,将“resources.arcs”文件和您从“-new”apk 中编辑的任何其他 xml 文件复制到原始 apk 中

现在 apk 已准备好使用您的新更改闪烁 :D :D

希望这对你们中的一些新人有所帮助!!!

来源:AndroidForums

【讨论】:

  • 请考虑添加答案的重要部分,但不要作为链接!
  • 感谢提及
  • 这不解决将反编译代码导入 IDE 的问题
【解决方案2】:

我的一位同事编写了一个 ruby​​ Gem 来解决这个问题,它可以反编译 Apk 并在友好的 GUI 中打开它的代码。 apkToJava 是宝石名称。你应该尝试一次。

这是一个易于使用的工具,只需两到三个命令即可反编译 Apk。

gem install apkToJava
apkToJava setup
apkToJava /path/to/apk/file.apk

目前仅支持 Mac OS 和 Linux 两种操作系统。

【讨论】:

  • 这如何解决问题? Ruby 代码本质上是 dex2jar 和 jadx 的包装,两者都可以用作命令行实用程序,而不需要 ruby​​
猜你喜欢
  • 2016-05-14
  • 2014-07-28
  • 1970-01-01
  • 2014-03-28
  • 2014-01-19
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多