`
bolutes
  • 浏览: 870555 次
文章分类
社区版块
存档分类
最新评论

APK文件夹结构

阅读更多

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字节码文件(首先是java文件通过jdk编译成字节码文件然后经过dex编译成classes.dex)。但由于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
    编译后的二进制资源文件的索引(apk文件的资源表(索引))
上面这些资源最后通过aapt这个工具打包成apk,其实当生成apk的时候就会调用这个命令
分享到:
评论

相关推荐

    apk的结构解析

    apk的结构解析,主要包括目录及各文件、文件夹的作用和内容

    Android系统文件夹结构解析

    这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件。在这个文件夹下的程序为系统默认的组件,自己安装的软件将不会出现在这里,而是\\data\\文件夹中。下面是详细的介绍:爱电子书吧 ...

    X-Plore File Manager Pro 4.14.01.apk

    X-plore在树状视图中显示文件夹层次结构,以便清晰定位并快速切换到其他位置。 您可以浏览设备的内部,如果您是高级用户并且设备已植根,则可以更改系统数据 - 备份文件,删除不需要的应用程序等。 如果您是标准...

    AquaMail_Pro-v1.23.0-1556_build_102300002.apk

    使用现有的文件夹结构,可以同步草稿,已发送和已删除的邮件。 改进了Gmail和Hotmail的安全性(OAUTH2)。 小部件(消息计数,消息列表)。 在消息列表(动作)中以及消息之间滑动。 可以将附件另存为文件。...

    X-plore File Manager.apk

    和X-PLORE显示在树视图清晰的定位和快速切换到其它位置的文件夹层次结构。 你可以探索设备的内部,如果你是高级用户,让您的设备根深蒂固,您可以更改系统数据 - 备份文件,删除不需要的应用程序等。 如果你是标准...

    Android中asset文件夹与raw文件夹的区别深入解析

    *res/raw和assets的相同...2.res/raw不可以有目录结构,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹 *读取文件资源:1.读取res/raw下的文件资源,通过以下方式获取输入流来进行写操作· InputStrea

    X-Plore_File_Manager_Donate_v4.18.12.apk

    并且X-plore以树状视图显示文件夹层次结构,以提供清晰的方向并快速切换到其他位置。 您可以浏览设备的内部结构,如果您是高级用户并且已扎根设备,则可以更改系统数据-备份文件,删除不需要的应用程序等。 ...

    Overlay-Wrapper:用于将覆盖发布为嵌入式 zipfile 的 Wrapper Apk

    zipfile 应包含以下类别文件夹结构:根据需要包含文件夹) IE /SykoPath-覆盖| /3rd Party Apps Teaking Overlays | /颜色变化叠加| /其他叠加| /UI 调整覆盖 这个包装模板应用程序可以通过strings.xml、colors....

    安卓开发与分析者的利器--安卓右键工具1.2

    对反编译后的APK文件夹进行回编译得到APK文件。任务完成时会在当前目录下生成编译后的APK文件。执行结果将在右下角冒泡提示。 18、提取so 提取被选中APK中lib目录下的所有后缀为so的文件。任务完成时会在当前...

    TesiMagistrale

    在层次结构的开头,有两个文件夹和一个文件: 日志分析,.jar文件,是日志文件分析所必需的(如下所示); Safari Animal AR; 点AR。 这两个文件夹与同名应用程序相关(在和链接处,它们用作案例研究。在Safari ...

    Android 中raw和assets文件夹的区别

    Android 中raw和assets文件夹的区别 以下是我通过整理网上与自己的经验所得。 raw 和 assets 的相同点 它们会被原封不动的拷贝到APK中,而不会像其它资源文件那样被编译成二进制的形式。 raw 和 assets 的不同点 1....

    Android代码-Android-Plugin-Framework

    项目结构 文件夹 说明 FairyPlugin 插件框架包 Samples 示例代码,包含宿主APP、各种Demo插件、各种场景测试 名词解释 名词 说明 宿主 正常安装在设备上的apk 容器 宿主中由框架创建的插件运行...

    RSA-DHIS2-Trackercapture

    dhis2-android-trackercapture ... 工作区文件夹结构如下所示: 。 .. dhis2-android-sdk dhis2-android-trackercapture 然后打开Android Studio,选择“打开现有的Android Studio项目”,然后在dhis2-android-tra

    android音乐播放器

    这个android音乐播放器由本人自主开发,实现了音乐播放器的功能,下载解压之后,含有一个项目源码文件夹和apk安装包,项目源码文件夹直接导入eclipse在1.6模拟器中运行即可,apk直接安装到手机或是模拟器中即可运行...

    android-dynamical-loading::electric_plug:Android插件开发库(Frontia)和技术介绍,这意味着您可以升级Android APP或修复紧急错误,以及减少Apk的文件大小而无需重新安装

    项目介绍在Android开发中采用基于ClassLoader的动态加载技术,可以达到不安装新APK...项目结构文件夹说明 Android插件化开发框架FrontiaAndroid动态加载技术文章以及相关项目其中,Android的frontia是基于类加载器的插

    解包打包android内核system.img文件所需工具

    工具: unyaffs,mkyaffs2image ...其中unyaffs有windows版本和linux版本,mkyaffs2image只有linux版本。...按照原system目录的文件结构组织好后,目录复制到linux环境下使用mkyaffs2image重新打包成system.img。

    Tiger 安装包制作

    在安装对象管理界面上这些安装对象采用面向对象的树状结构组织,这个树状结构由可选包组成,每个可选包都可以包含上面除了系统信息以外的所有对象。用户可以非常直观的像在Windows中的资源管理器中一样地管理这些...

    kodi-18.4-Leia-x64.exe

    修复AVD3D11VAContext结构的初始化(视频,Windows) 修复与PR16314相关的TS恢复点(视频) 固定内存泄漏,固定段错误(视频,Linux) 修复PAPlayer以处理TrueHD(音频)的直通 PVR 修复组件依赖性 ...

    android-emacs-toolkit:自动从code.google.compandroid-emacs-toolkit导出

    android-emacs-toolkit的自述文件WHATE是ANDROID-EMACS-TOOLKIT Android-emacs-toolkit有助于在emacs上...文件夹结构文件夹名称描述ndkscript 工具箱的Shell脚本– \ _adbt.sh 用于模拟器上的文本可执行程序的Shell脚本

    olandroid:用于构建和可视化飞机特技飞行的 Android 应用程序

    安卓 一种对特技飞机飞行进行可视化建模的工具。 查看和 。 运行应用程序 ...文件夹结构 dev - 设备截图。 doc - 文档。 play - Play 商店特定资源。 rel - 发布。 res - 一般资源。 src - 源代码。

Global site tag (gtag.js) - Google Analytics