`
kalogen
  • 浏览: 886753 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

APKTOOL的使用心得

 
阅读更多

APKTool是GOOGLE提供的APK编译工具,需要JAVA运行环境,推荐使用JDK1.6或者JDK1.7。

如果你想对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文件,虽然使用起来很方便(其实我并不觉得方便),但是如果出现错误不方便查看。

三.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,当你尝试反编译的时候,你会得到以下错误信息。

  1. $ apktool d HtcContacts.apk
  2. I: Loading resource table...
  3. I: Decoding resources...
  4. I: Loading resource table from file: /home/brutall/apktool/framework/1.apk
  5. W: Could not decode attr value, using undecoded value instead: ns=android, name=drawable, value=0x02020542
  6. ...
  7. W: Could not decode attr value, using undecoded value instead: ns=android, name=icon, value=0x02020520
  8. 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尽可能是连续的)

 

转自:http://bbs.gfan.com/android-2657915-1-1.html

分享到:
评论

相关推荐

    apktool2.4.0和apktool.bat

    在Android应用开发领域,反编译与调试APK文件是一项重要的技能,这通常涉及到使用工具如Apktool。本文将详细介绍Apktool 2.4.0及其使用方法,特别是如何利用apktool.bat来解包APK并获取Smali代码。 Apktool是一款由...

    MAC使用apktool进行反编译

    本文将详细介绍如何在MAC上使用Apktool进行反编译。 首先,让我们理解什么是Apktool。Apktool是由Izzy Soft开发的一款开源工具,主要用于解编译、修改和重新打包Android应用。它能解析APK文件中的资源文件(如XML...

    apktool 2.9.3 版本,包含 Apktool.jar 和 Apktool.bat

    - `apktool if &lt;framework_file&gt;` 定义或更新使用的框架文件,这对于处理依赖于特定Android版本的APK很重要。 - `apktool sign` 和 `apktool verify` 用于对APK进行签名和验证,确保其可安装和运行。 6. **注意...

    Apktool各版本下载附带使用教程

    Apktool 所有版本 Apktool 所有版本 Apktool 所有版本 Apktool 所有版本 Apktool 所有版本

    apktool最新版本使用

    【apktool最新版本使用】 Apktool是一款强大的Android应用反编译工具,它允许开发者对APK文件进行解包、反编译、修改和重新打包。这个工具的主要用途包括查看APK的资源、修改XML布局、替换图片或字符串,以及重新...

    apktool反编译工具

    在使用apktool时,通常会用到两个主要的文件:apktool.bat(Windows系统)和apktool.jar。前者是批处理文件,方便在命令行环境下执行apktool命令;后者是apktool的主要程序文件,包含所有反编译和重构的逻辑。通过这...

    apktool(2.2.4-2.9.3)打包

    4. **重新打包**:完成修改后,使用`apktool b &lt;解包后的文件夹&gt;`命令,Apktool会将修改后的资源和代码重新打包成APK。 5. **签名APK**:打包后的APK需要签名才能在设备上安装,可以使用JDK自带的`jarsigner`工具...

    apktool工具使用脚本

    apktool.py -h usage: apktool.py [-h] [-ip INPUTPATH] [-op OUTPUTPATH] [-on OUTPUTNAME] options: -h, --help show this help message and exit -ip INPUTPATH, --inputPath INPUTPATH apk路径和名称 -op ...

    apktool、apktool.jar、apktool.bat

    它简化了在Windows环境下使用Apktool的过程,用户只需要双击或者在命令提示符中运行这个脚本,就可以调用apktool.jar来执行相应任务,无需手动输入复杂的Java命令。 4. **Apktool的使用步骤** - **反编译**:使用`...

    apktool脚本 apktool.jar

    在Mac上使用apktool的步骤大致如下: 1. **下载与安装**:首先,你需要下载最新版本的apktool.jar文件,通常可以从官方网站或可靠的第三方源获取。将其放在一个方便的位置,比如`/usr/local/bin`,这个目录是macOS...

    apktool linux

    apktool是一款强大的Android应用(APK)反编译工具,主要在Linux、Windows和Mac OS X等操作系统上广泛使用。它允许开发者或研究人员解包、反编译、修改和重新打包APK文件,以便更好地理解APK的结构和内容。在Linux...

    window_apktool官方最新版(apktool2.0.1)

    3. **重新打包与签名**:在修改完成后,Apktool可以将这些修改后的资源重新打包成一个新的APK文件,并且可以使用--sign选项进行签名,使得修改后的APK能在设备上正常安装和运行。 4. **保持原始资源结构**:Apktool...

    apktool apktool

    apktool 。

    android反编译工具 apktool-2.9.3.jar

    在本文中,我们将深入探讨Apktool的工作原理、功能、使用方法以及它在Android应用开发中的作用。 1. **Apktool概述** Apktool由IzzySoft开发,主要功能是将APK文件的二进制资源转换为人类可读的格式,便于开发者...

    apktool_2.4.0.jar+包装器脚本(apktool.bat)+安装说明.zip

    `Apktool`是其中一个广泛使用的开源工具,它允许开发者对APK进行反编译、修改和重新打包。在给定的压缩包`apktool_2.4.0.jar+包装器脚本(apktool.bat)+安装说明.zip`中,包含了`Apktool`的两个主要组件:`apktool_...

    ApkTool 解包和打包

    - **本地化**:对于多语言应用,你可以使用APKTool提取并编辑字符串资源,添加或修改语言包,实现应用的本地化。 - **学习与研究**:对于开发者来说,APKTool是学习其他应用实现细节的好工具,尤其是对于开源项目,...

    apktool2.4.1.zip

    而`apktool.bat`则是一个批处理文件,专为Windows用户设计,用于调用`apktool.jar`执行命令行操作,使得在没有安装Java环境的系统上也能轻松使用ApkTool。 使用ApkTool的基本步骤如下: 1. **解包**:首先,通过`...

    APKTool apktool.jar 2.2.4

    5. **签名和优化**: 使用`apktool.jar sign`和`apktool.jar optimize`命令分别对APK进行签名和优化。 ### 注意事项 - 修改APK可能会导致应用程序崩溃或行为异常,因此需谨慎操作。 - 遵守版权法规,不要非法反编译...

    apktool解包打包apk

    **Android应用逆向工程:Apktool的使用详解** 在Android开发领域,有时我们需要对APK文件进行深入研究,比如为了学习应用的工作原理、优化性能或者进行安全分析。这时,工具如Apktool就显得尤为重要。Apktool是一款...

Global site tag (gtag.js) - Google Analytics