如果你想对APK文件进行修改,那么就不可避免的要使用到APKTool。论坛里有很多关于ROM美化的帖子都需要自己动手修改APK文件,比如修改framework-res.apk、systemUI.apk等等。

相信各位有不少人看了后都想亲自来修改一番,但是结果却是遇到了各式各样的错误却无法进行改正,甚至都不知道自己错在哪里。

一.APKTOOL使用环境配置

1.安装JAVA并设置环境变量。

下载安装都很简单,关键是安装完后还需要亲自设置环境变量以方便其他程序能够条用JAVA。

以WIN7为例,在桌面上右键点击计算机——>属性——>高级系统设置——>环境变量——>在下边的系统变量里新建一个变量,变量名为JAVA_HOME,值为JAVA的安装路径,比如我的是H:\ProgramFiles\Java\jdk1.6.0_26

二.APKTool的安装

1.其实这个谈不上安装,不过如果你愿意的话可以把下载到的APKTOOL中的三个文件(aapt.exe、apktool.bat、apktool.jar)解压缩到你的Windows安装目录下,以方便使用Dos命令.

2.可能有些人下载的APKTOOL里有个安装的bat文件,并且有另外两个方便使用的bat文件,在这里我不推荐大家使用这些bat文件,虽然使用起来很方便(其实我并不觉得方便),但是如果出现错误不方便查看。

3.apktool;下载地址:https://code.google.com/p/android-apktool/downloads/list

三.APKTool的使用

1.decode

该命令用于进行反编译apk文件,一般用法为

apktool d <file.apk> <dir>

<file.apk>代表了要反编译的apk文件的路径,最好写绝对路径,比如C:\MusicPlayer.apk

<dir>代表了反编译后的文件的存储位置,比如C:\MusicPlayer

如果你给定的<dir>已经存在,那么输入完该命令后会提示你,并且无法执行,需要你重新修改命令加入-f指令

apktool d –f <file.apk> <dir>

这样就会强行覆盖已经存在的文件

2.build

该命令用于编译修改好的文件,一般用法为

apktool b <dir>

这里的<dir>就是刚才你反编译时输入的<dir>(如C:\MusicPlayer),输入这行命令后,如果一切正常,你会发现C:\MusicPlayer内多了2个文件夹build和dist,其中分别存储着编译过程中逐个编译的文件以及最终打包的apk文件。

3.install-framework

该命令用于为APKTool安装特定的framework-res.apk文件,以方便进行反编译一些与ROM相互依赖的APK文件。具体情况请看常见问题

四.常见问题

1.关于安装和管理framework文件

以下大部分其实是翻译自http://code.google.com/p/android-apktool/wiki/FrameworkFiles

一般来说,你在使用apktool进行反编译前不需要做其他的事情,然而由于有的厂商,如HTC,三星等,他们定制了framework文件并且在他们的系统应用中使用了这些文件,这时,为了能正常的反编译这些apk文件,你就必须从你的设备中拷贝出framework文件并且安装到apktool中。

举一个例子,比如你想反编译HTCHero这款手机中的HtcContacts.apk,当你尝试反编译的时候,你会得到以下错误信息。

$ apktool d HtcContacts.apk
I: Loading resource table...
I: Decoding resources...
I: Loading resource table from file: /home/brutall/apktool/framework/1.apk
W: Could not decode attr value, using undecoded value instead: ns=android, name=drawable, value=0x02020542
...
W: Could not decode attr value, using undecoded value instead: ns=android, name=icon, value=0x02020520
Can't find framework resources for package of id: 2. You must install proper framework files, see project website for more info.

这就是在通知你必须先安装HTC定制的framework文件,事实上在修改一些三星的系统应用时也是如此。

以三星的设备来举例,你需要复制两个framework文件来进行安装,framework-res.apk和tzframework-res.apk,一般来说,这两个文件在手机中的位置应该是system\framework\

使用以下代码进行安装

apktool if C:\framework-res.apk

apktool if C:\tzframework-res.apk

这里假设2个文件都放在C盘根目录

2.直接用build编译后在dist中找到的apk文件无法使用

其实这个问题我也不是特别理解,目前知道的就是,APK文件虽然本质是个zip文件,但是事实上zip包中的文件是按照两种方式压缩的,即XML文件进行deflate压缩,其他文件不进行压缩(使用store存储),而直接编译得到的APK文件对任何的文件都进行了deflate压缩,因此你会发现编译得到的文件比原文件小好多。

同样的,当你使用build文件夹中的文件替换原apk文件中的资源时,请务必确认是使用store存储还是deflate压缩

3.其他错误

其实在编译过程中会遇到很多其他的问题,大多数是由于删除、修改、添加了资源后,没有对应的修改res\values\public.xml文件而造成的,这里我给大家说下修改的原则:

第一,public.xml文件中的资源不能重复定义。

第二,public.xml文件中的任意两个资源的ID不能一样

第三,public.xml文件中定义的资源必须能找到该文件(如果你删除了一些文件,必须要对应的删除public.xml中的该行)

第四,public.xml文件中尽可能全面(如果你添加了某资源,最好确保在public.xml中也添加)

第五,public.xml文件中的资源的ID尽可能连续(当你为添加的文件添加声明时,赋予的ID尽可能是连续的)

android-- apktool反编译工具使用详解相关推荐

  1. Java反编译工具Jad详解

    Jad(JAva Decompiler)是一个Java的反编译器,可以通过命令行把Java的class文件反编译成源代码. 如果你在使用编写代码的时候遇到找不到源代码的第三方库,而且你又需要看看这个库 ...

  2. android apk 反编译 工具下载,android APK反编译工具Apktool

    这是android APK反编译工具Apktool下载,集成 jd-gui.jad.dex2jar.apktool.使用该工具可以反编译apk文件,查看xml以及java源代码,默认使用jad反编译, ...

  3. ARM 编译工具链详解

    ARM 编译工具链详解 GNU Arm Embedded Toolchain 是用于 C/C++ 和汇编编程的即用型开源工具套件.GNU Arm 嵌入式开发工具链适用于 32 位 Arm Cortex ...

  4. apktool反编译生成java_apktool反编译工具下载|apktool反编译工具 v3.0.1 最新版-520下载站...

    apktool反编译工具是一款专业的apk编译工具,能够完美地反编译及回编译apk文件,想要使用apktool反编译工具的话就需要先安装JAVA,如果你想要修改apk文件,那么就需要先安装JAVA才可 ...

  5. Linux文本编译工具VIM详解

    Linux文本编译工具VIM详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.VIM概述 1>.vim简介 1>.vi: 全称Visual editor,即文本编 ...

  6. Android apk反编译工具介绍

    首先apk不能被代码混淆(或未经编译优化),如果混淆了,反编译出来的代号还是看不懂, 当然,在你没反编译出来之前,你也不知道有没有混淆. 网上各种反编译工具,眼花缭乱,本文是个人对这些工作做的一个简单 ...

  7. Android app反编译工具

    参考: APK反编译之APKTOOL的使用 使用android-apktool来逆向(反编译)APK包方法介绍 我是如何使用Android反编译软件的? apktool(链接是谷歌官方的) 谷歌官方提 ...

  8. Android常用反编译工具

    常用反编译工具 apktool :反编译apk,重构. dex2jar :反编译apk,解压 classes.dex 文件 JD-GUI :将class文件反编译成java源代码 AndroidKil ...

  9. android studio 反编译工具,android studio反编译工具jd-inteIIij

    Android Studio 自带了Java Bytecode Decompiler 对于第三方的jar只能反编译出其函数名 例如:andbase里的com.kfb.c.jar下的com.kfb.c下 ...

最新文章

  1. How to use nheqminer in RedHat based systems (CentOS/Fedora)
  2. python视频下载-python动态视频下载器的实现方法
  3. python里的关键字有哪些_Python中的yield关键字做了什么?
  4. html首字母样式,html标签手册
  5. Spring JSR-250 注释
  6. Java解析json出现双引号变成转义字符解决办法
  7. 一个顶级程序员要多久才能独自写完Win10代码?
  8. 演练 类的定义 java 1615134691
  9. 27.将 VMware 服务器上的虚拟机备份到 Azure(上)
  10. linux 如何连通网络
  11. 浏览器桌面通知(notifications)
  12. Linux非root用户如何使用80端口启动程序
  13. redis运维问题集锦FAQ
  14. 高等代数——大学高等代数课程创新教材(丘维声)——3.6笔记+习题
  15. 离散数学思维导图 - 集合论,命题逻辑,谓词逻辑,二元关系,特殊关系,图论,树
  16. LM7805:电压调节器的工作原理
  17. 基于labview的打地鼠游戏制作
  18. 举个例子来解释什么是特征值?什么是特征向量?
  19. oracle procmpt,oracle ebs 接口程序
  20. 2022-2028全球与中国汽车软内饰材料市场现状及未来发展趋势

热门文章

  1. 利用github协作开发步骤
  2. 智能传感器产业三年行动指南
  3. ios中蓝牙自动连接出现硬件提示框的问题
  4. TCP、UDP、IP 协议分析(转)
  5. 【第一篇】Volley的使用之json请求
  6. Docker加入裁员大军,关键时期Docker将何去何从?
  7. java面试笔试试题http://www.jobui.com/mianshiti/it/java/6827/
  8. Springboot 应用部署建议
  9. 20.10-20.15 shell:for,while循环,break,continue,exit
  10. 解决gcc version 不匹配问题。