`

Android:apk文件结构及打包技巧

阅读更多

转载自 : http://www.theiter.com/2010/04/androidapk文件结构及打包技巧.html

apk文件,即Android application package文件。 

每个要安装到Android平台的应用都要被编译打包为一个单独的文件,后缀名为.apk,其中包含了应用的二进制代码、资源、配置文件等。APK文件其实是zip格式,但后缀名被修改为apk, 
在Android 系统安装时,APK 程序会被存放在系统默认的APP 目录中。

既然是一个Zip压缩包,那我们就不妨先解压出来看看其目录结构和内容,在我这我以NDK中的two-libs为例,以NDK为例,主要是要在本文中介绍SDK和NDK结合打包的方法。先看图:

2

 

其实这个目录结构与源代码的目录结构类似,接下来我们对比看看源代码(我用的是eclipse):

1

看见没有,几乎就是一样的!接下来挨个介绍下apk中个文件及目录的内容和作用吧,一下资料来源于网络和官方文档当然还有个人理解。

  • AndroidManifest.xml
  • 该文件是每个应用都必须定义和包含的,它描述了应用的名字、版本、权限、引用的库文件等等信息[ , ],如要把apk上传到Google Market上,也要对这个xml做一些配置。在apk中的AndroidManifest.xml是经过压缩的,可以通过AXMLPrinter2工具[ , ]解开,具体命令为:java -jar AXMLPrinter2.jar AndroidManifest.xml

  • META-INF目录 
    META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。在eclipse编译生成一个apk包时,会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。这就保证了apk包里的文件不能被随意替换。比如拿到一个apk包后,如果想要替换里面的一幅图片,一段代码, 或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给病毒感染和恶意修改增加了难度,有助于保护系统的安全。
  • res目录 
          res目录存放资源文件。包括图片,字符串等等。
  • lib目录
  • lib目录下的子目录armeabi存放的是一些so文件。这个地方多讲几句,都是在开发过程中摸索出来的。eclipse在打包的时候会根据文件名的命名规则(lib****.so)去打包so文件,开头和结尾必须分别为“lib”和“.so”,否则是不会打包到apk文件中的。其他非eclipse开发环境没有测试过。如果你是用SDK和NDK开发的话,这部分很重要,甚至可以通过把一些不是so文件的文件通过改名打包到apk中,具体能干些什么那就看你想干什么了,呵呵呵!

  • assets目录
  • assets目录可以存放一些配置文件,这些文件的内容在程序运行过程中可以通过相关的API获得。具体的方法可以参考SDK中的例子:在sdk的 \SDK\1.6\android-sdk-windows-1.6_r1\platforms\android-1.6\samples\ApiDemos 例子中,有个com.example..android.apis.content 的例子,在这个例子中他把一个text文件放到工程的asset目录下,然后把这个txt当作普通文件处理。处理的过程在ReadAsset.java中。同理,asset也可以放置其他文件。

  • classes.dex文件 
          classes.dex是java源码编译后生成的java字节码文件。但由于Android使用的dalvik虚拟机与标准的java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。目前常见的java反编译工具都不能处理dex文件。Android模拟器中提供了一个dex文件的反编译工具,dexdump。用法为首先启动Android模拟器,把要查看的dex文件用adb push上传的模拟器中,然后通过adb shell登录,找到要查看的dex文件,执行dexdump xxx.dex。另,有人介绍到Dedexer是目前在网上能找到的唯一一个反编译dex文件的开源工具,需要自己编译源代码。
  • resources.arsc 
          编译后的二进制资源文件

分享到:
评论

相关推荐

    android中apk包中的xml文件解密

    由于APK文件通常是二进制格式并进行了加密处理,直接查看其内部的XML文件并不容易。本篇文章将详细介绍如何在Android中对APK包中的XML文件进行解密,以及这一过程涉及的相关技术。 首先,我们需要理解APK的结构。...

    Android-世界上最小的AndroidAPK

    "Android-世界上最小的Android APK"项目非常独特,它挑战了APK文件大小的极限,将一个完整的可运行应用压缩到了仅仅820字节。这样的成果在技术层面上具有极高的研究价值,因为它揭示了如何通过极致优化来减小应用...

    APK文件下载

    #### 一、APK文件结构概览 APK文件本质上是一个压缩文件,通常使用.zip格式。解压后,我们可以看到以下主要组成部分: 1. **AndroidManifest.xml**:这是应用程序的核心配置文件,包含了应用的基本信息、权限请求...

    【android】apk汉化

    2. 解包APK:打开终端或命令提示符,输入`apktool d <apk文件路径>`,这将解压APK到一个目录结构中,你可以看到XML文件和资源文件。 3. 汉化资源:在解包后的目录中,找到`res/values/strings.xml`文件,这是应用的...

    android Apk 反解码

    1. **APK文件结构**:APK文件本质上是一个ZIP压缩包,包含以下主要部分: - `AndroidManifest.xml`:应用的元数据,如包名、活动、服务、权限等。 - `res/`:应用资源,如图片、字符串、布局等。 - `classes.dex`...

    android apk反编译

    1. **提取APK**:使用`unzip`命令或者专门的工具(如7-Zip)解压APK文件,得到包含`classes.dex`(Dalvik字节码)、`resources.arsc`(资源文件)和`AndroidManifest.xml`(应用清单)在内的文件结构。 2. ** Dex到...

    android APK 反编译工具

    Android APK 反编译工具是开发者和安全研究人员用于探索APK文件内部结构和代码的实用程序。这些工具允许用户查看、分析甚至修改APK的原始源代码,这对于调试、逆向工程、安全评估以及学习Android应用程序开发有极大...

    android apk 反编译工具

    在Android开发领域,APK文件是应用程序的二进制包,包含了应用的代码、资源、配置等所有内容。为了深入理解和学习他人的编程技巧或进行逆向工程分析,开发者有时需要对APK进行反编译。本文将详细介绍如何使用Android...

    Android apk package decompilation tool (for learning only)

    1. APK文件结构:APK是Android应用的打包格式,包含Java字节码、资源文件(如XML布局、图片等)、库文件和manifest.xml文件。这个工具可以帮助我们解包这些内容,以便分析和理解。 2. 反编译过程:APK中的Dalvik ...

    Android开发APK反编译工具

    在Android开发过程中,为了学习和研究他人的代码逻辑或者排查问题,开发者有时会需要对APK文件进行反编译。本文将详细介绍如何使用常见的Android APK反编译工具,包括apktool、dex2jar以及Androidfby,来解析APK结构...

    Android apk反编译

    一、APK 文件结构 APK 文件是Android应用的打包格式,它包含了应用的所有组件,如Java字节码(Dalvik Executable,DEX)、资源文件(XML、图片等)、库文件(.so)以及清单文件(AndroidManifest.xml)。这些文件在...

    安卓apk文件反编译工具

    在Android开发领域,APK文件是应用程序的二进制包,包含了所有运行应用所需的资源、代码和元数据。有时候,开发者或安全研究人员需要查看APK的内部结构,了解其工作原理,或者进行二次开发,这就需要用到安卓APK文件...

    Android反编译软件 安卓反编译 Android APK反编译详解

    在Android开发领域,有时我们需要对APK文件进行反编译以了解其内部结构、源代码逻辑或进行二次开发。本文将深入探讨Android反编译的相关知识,包括为什么要进行反编译,常用工具介绍,以及反编译过程的详细步骤。 ...

    android apk反编译工具

    当开发者构建一个Android应用并签名后,会生成一个APK文件,该文件可以在Android设备上安装和运行。 Android APK反编译过程通常包括以下几个步骤: 1. **提取APK内容**:使用像`unzip`这样的命令行工具或专门的APK...

    Androidfby[编译apk资源文件]

    - **签名与对齐**:APK文件必须签名,以确保其来源的可信性,然后进行ZIP对齐,提高加载速度。 3. **实用工具** - **Android Studio**:官方集成开发环境,集成了编译、调试、打包等功能,极大地简化了开发流程。...

    Android APK反编译详解

    在进行Android应用开发的过程中,理解如何反编译APK文件获取其内部的Java源代码是一项非常实用的技能,尤其对于研究应用程序架构、学习编程技巧或进行合法的安全分析时尤为关键。以下是详细的步骤和涉及的工具介绍。...

    android shell批量打包

    6. **打包APK**:使用`apkbuilder`或`apksigner`命令将编译好的类文件、资源文件和AndroidManifest.xml打包成APK。如果需要签名,这一步会包含签名过程。 7. **循环处理**:如果你有多个应用版本或不同配置,可以在...

Global site tag (gtag.js) - Google Analytics