1. APK文件简介

APK是Android Package的缩写,即Android application package文件或Android安装包。每个要安装到Android平台的应用都要被编译打包为一个单独的文件,扩展名为 .apk。APK文件是用专业软件eclipse编译生成的文件包,其中包含了应用的二进制代码、资源、配置文件等。通过将APK文件直接传到Android手机中执行即可安装。APK文件其实就是zip格式,但其扩展名被改为apk,在Windows下用解压软件WinRAR/WinZIP/7-Zip可以直接打开。解压后,你会看到有几个文件和文件夹。一个典型的APK文件通常有下列内容组成
   AndroidManifest.xml  程序全局配置文件
   classes.dex                Dalvik字节码
   resources.arsc           编译后的二进制资源文件
   META-INF\                 该目录下存放的是签名信息
   res\                           该目录存放资源文件
   assets\                      该目录可以存放一些配置文件

下面对这些文件和目录做些基本的注释和介绍:
• AndroidManifest.xml
   该文件是每个apk应用程序都必须包含的文件,它描述了 应用程序的名字、版本、权限、引用的库文件 等信息。
• classes.dex文件
   该文件 是java源码编译后生成的java字节码文件。dex是Dalvik VM executes的全称,即Android Dalvik执行程序。利用解析工具可以将其转换成java来加以阅读和理解。
• resources.arsc
   该文件 是编译后的二进制资源文件
• META-INF目录
   META-INF目录下存放的是 签名信息,有三个签名文件,用来保证apk包的完整性和系统的安全。在eclipse编译生成一个apk包时,会对要打包的所有文件做一个校验计算,并把计算结果放在META-INF目录下。这就保证了apk包里的文件不能被随意替换。比如拿到一个apk包后,如果想要替换里面的一幅图片,一段代码, 或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给病毒感染和恶意修改增加了难度,有助于保护系统的安全。
• res目录
   该 目录存放 资源文件。包括图片,字符串等等。res下有若干个子目录,主要为drawable,layout,xml。
解包后,几乎所有可能的修改 和 编辑工作 基本都在这里。汉化ROM的主要工作就在这里。汉化ROM实际上就是汉化所有的apk应用程序的字符文件。
• assets目录
   assets目录可以存放一些配置文件,这些文件的内容在程序运行过程中可以通过相关的API获得。

下面以“设置”应用程序Settings.apk为例。用WinRAR打开文件后,看到以上介绍的六项内容。现在,即使你已经对文件解压,你还是无法直接阅读每个文件的内容。为了读出这些文件的内容,从而进行进一步的修改和编辑,你就必须具有相应的工具了。

2. APK应用程序的解包和打包工具

这一节主要介绍在Windows系统中常用的几个工具包,用来对apk应用程序进行解包、打包、反编译、解析。所有apk工具包都要求java环境。主要有三个工具包。

1) apktool

apktool可能是当今最为流行的apk工具包,由解包、打包、签名程序组成。被称之为“apk反编译利器”。对非三星的应用程序进行操作,很好用。
打开apktool工具包,看到如下内容:

Apk程序的解包和打包软件由2个程序来完成:apktool.jar 和 aapt.exe。
另外提供一个批处理文件:apktool.bat,其内容为:
   java -jar "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9

运行apktools.jar需要java环境(1.6.0版本以上)。apktool.jar用于解包,apktool.jar和aapt.exe联合用于打包。testkey.pk8和testkey.x509.pem是签名程序。

解包命令:
   apktool d xxxxxx.apk ABC
这里“d”表示要解码。Xxxxx.apk是要解包的APK文件。ABC是子目录名。解包的文件会放在这个子目录内。

打包命令:
   apktool b ABC yyyyy.apk
这里“b”表示要打包,ABC是子目录名,是解包时产生的子目录,用来存放所有解包后的和修改后的文件。yyyyy.apk是打包后产生的新的APK文件。

在上传的apk工具包里,已经另外加了两个批处理文件:Unpack-apk.bat和Repack-apt.bat。前者用于apk的解包过程,后者用于编辑后的文件的打包和签名。把待解包的apk文件放到Unpack-apk.bat的同一个目录里,双击Unpack-apk.bat,apk文件解包开始,产生3个子文件夹,解包后的文件被放在Working_APK文件夹内。详细内容将在第二部分描述。另外,批处理文件允许同时对多个apk文件顺序进行解包和打包。

注意:将要 处理的apk文件名里 不允许有空格,不能有中文。

2) apk manager

apk manager是另一个“apk反编译利器”。它比apktool工具包还要强大些。三星的许多apk系统应用程序用了三星的闭源系统,用apktool可以解包,但是打包不成功。这时,apk manager就好用了。

打开apk manager工具包,看到如下内容。软件都放在other子目录里。运行apk manager要求adb工具包(见下图中的3个adb文件)。把待解包的apk文件放到place-apk-here-for-modding子目录里,双击脚本批处理程序Script.bat,选择选项:9,产生一个子文件夹projects,解包后的文件被放在这个子文件夹内。

在使用时,有时apktool和apk manager交替使用,一个不行就用另外一个。 所以,在编辑apk应用程序时两者都要掌握。

注意:文件名里不允许有空格,不能有中文。

3) Dex2jar和XJad

该方法不是直接对apk文件进行解包。它是首先提取apk文件内的classes.dex文件,然后使用dex2jar.jar工具包将classes.dex解包成jar文件,再通过XJad 或者其他class反编译工具进行java反编译,最后生成java源文件。
但是,使用这个工具包无法进行classes.dex的还原(当然也无法进行apk的打包)。尽管如此,这个工具包仍然很重要,因为它把classes.dex文件转换成了可以更容易阅读的java源文件。在修改apk应用程序时,必不可少,是一极强的辅助工具。相比之下,apktool和apk manager反编译后得到的是Dalvik 反编译码 (Dalvik opcodes),需要很专业的知识来阅读,很不直观。如果你读懂了java源文件,那修改相对应的Dalvik码不就容易多了吗。

4) 其它工具包简介

此外,还有许多工具包可用。这些也容易在网上找到。
a) DoAPK
    DoAPK实际上就是apktool工具包。有人把apktool写成了带窗口界面的可执行文件。
b) Google Smali
    有两个程序:baksmali.jar和smali.jar。baksmali.jar用来反解析dex和odex文件,得到Dalvik码。然后用smali.jar还原成dex文件。例如,在修改状态栏时间显示颜色时,要用的这两个解析程序。
c) AXMLPrinter2.jar
    AXMLPrinter2.jar对apk文件内的 AndroidManifest.xml和main.xml进行操作,将XML还原成文本文件,便于阅读。
d) Apkdb
    是一个集成apktool,smali,Dex2jar,签名等功能的工具。
e) 其它工具

APK文件简介 及 解包 打包 工具 介绍相关推荐

  1. system.img解包打包工具

    最近需要对system.img进行解包,修改系统属性和添加自己的APK,再打包烧录,整理俩个方法. system.img解包打包工具方法一 1.把system.img转换成ext4格式 ./simg2 ...

  2. 安卓8.X解包打包工具和教程,windows平台一键打包解包工具

    ROM制作工具在上周独家适配了安卓8.X的解包打包功能,很多朋友对这个功能翘首以盼,历经一个月的适配完善,得到了广泛认可. 软件是免费使用的哦! ROM制作工具目前已经是windows下最强大的一键解 ...

  3. linux rom打包工具,Android rom解包打包工具

    eMMC主要是针对手机和平板电脑等产品的内嵌式存储器,由于其在封装中集成了一个控制器,且提供标准接口并管理闪存等优势,越来越受到Android手机厂商的青睐,以eMMC为存储设备的android手机, ...

  4. 服务器android打包,Android rom解包打包工具

    eMMC主要是针对手机和平板电脑等产品的内嵌式存储器,由于其在封装中集成了一个控制器,且提供标准接口并管理闪存等优势,越来越受到Android手机厂商的青睐,以eMMC为存储设备的android手机, ...

  5. 安卓rom包解包linux,Android rom解包打包工具

    eMMC主要是针对手机和平板电脑等产品的内嵌式存储器,由于其在封装中集成了一个控制器,且提供标准接口并管理闪存等优势,越来越受到Android手机厂商的青睐,以eMMC为存储设备的android手机, ...

  6. 安卓超级厨房,安卓2.3~8.0/8.1/9.0全能型解包打包工具,windows专用

    windows下的安卓神器--ROM制作工具(www.rom.cn),应该是国内首款真正支持编辑安卓9.0的ROM工具. 核心功能一:通吃安卓9.0及以下刷机包 经测试支持安卓9.0及以下版本刷机包解 ...

  7. APK文件使用ApkTool解包反编译和重新打包及签名

    前段使用一直使用一个手机APK软件,不过最近软件更新,出现了一个很讨厌的语音提示,于是想通过重新编译把语音提示去掉. [准备工作] 配置JAVA环境,到http://www.java.com/下载并进 ...

  8. system.img解包打包工具_好程序员云计算学习路线分享文件打包及压缩

    好程序员云计算学习路线分享文件打包及压缩 好程序员 建议针对目录 Demo: 复制未打包的文件到远程主机 [root@yangs ~]# du -sh /etc 39M /etc [root@yang ...

  9. ipa解包打包工具_7步!教你轻松搞定ios重签ipa包

    如果你想在自己的IPhone上安装一个ipa文件,你的手机是无法正常安装的,(越狱,企业证书分发除外)但是我们可以通过以下步骤来实现,前提要有自己的开发者账号.接下来就看一下具体的步骤: 第一步:用X ...

最新文章

  1. ugui unity 取消选择_Unity暑期萌新入门:环境篇
  2. Win32汇编基本编程框架
  3. android bitmap 饱和度 demo,Android GPUImage实现多种图像滤镜效果
  4. 【Linux】一步一步学Linux——logout命令(209)
  5. 有重复数字的组合问题_带数字重复的组合和问题
  6. 容器编排技术 -- Kubernetes 设计理念
  7. 四脚轻触开关pcb封装_轻触开关的规格尺寸与型号选择
  8. 天池算法赛——广东电网智慧现场作业挑战赛 赛道三:识别高空作业及安全带佩戴
  9. JSP的基础语法和指令(源码刨析,建议收藏)
  10. [转载] 【RTTmicropython教程】玩转 Web 服务器
  11. asp.net core中的razor页面
  12. html切西瓜游戏源码,html5切水果源码(水果忍者)
  13. 在Android系统中,F2FS 文件系统问题分析步骤
  14. 流媒体有哪些播放方式?流媒体视频三种播放方式介绍
  15. 《一万小时理论》读书笔记
  16. 完工后的决算书范本_装修竣工结算书范本谁能给份
  17. 20221222 Coppeliasim的视频导出功能
  18. snippets vscode 配置_创建自己的Code Snippets在VSCode中
  19. linux(ubuntu16.04)下codeblock16.1 汉化
  20. 理解PBR:从原理到实现(上)

热门文章

  1. python执行pip install 命令的时候报错 Filexxxx,line 1 pip install 的问题
  2. C语言strcpy_s 和strncpy_s的用法,以及函数实现的方法
  3. 【毕业设计】4-基于单片机的锅炉控制系统的研究与设计(原理图+源代码+仿真工程+答辩论文+答辩PPT)
  4. PHP取整,四舍五入取整、向上取整、向下取整、小数截取
  5. 想用 AI 在《MineCraft》挖矿躺赢?660 支队伍全部失败
  6. 工具论-科学是实用工具
  7. 测试用例(功能用例)——完整demo(一千多条测试用例)
  8. Java经典面试题答案解析(1-80题)
  9. Latex引用参考文献-BibTex的使用
  10. eclipse配置python开发环境_如何在Eclipse中配置python开发环境