网站建设实验报告模板,群晖服务器可做网站服务器么,99微分销系统,wordpress获取帖子标签前言
在移动设备日益普及的今天#xff0c;Android系统已经成为全球最流行的移动操作系统。作为Android开发者或逆向工程师#xff0c;了解Android系统的演进历史以及APK文件的基本结构是非常重要的。本文将详细介绍Android历史版本的演变以及APK的基本结构。
一、Android历…前言
在移动设备日益普及的今天Android系统已经成为全球最流行的移动操作系统。作为Android开发者或逆向工程师了解Android系统的演进历史以及APK文件的基本结构是非常重要的。本文将详细介绍Android历史版本的演变以及APK的基本结构。
一、Android历史版本
1.1 Dalvik虚拟机Android 4.4以前
在Android 4.4以前Android系统采用的是Dalvik虚拟机Dalvik Virtual Machine简称DVM。Dalvik虚拟机是专门为Android平台设计的主要特点是
每个应用程序都运行在自己独立的虚拟机实例中。使用寄存器而不是堆栈来执行指令。通过优化的字节码和垃圾回收机制提升应用程序的性能和效率。
在这个阶段Android应用程序的运行时库主要是libdvm.so。
1.2 过渡时期Android 4.4
Android 4.4KitKat是一个过渡版本它引入了ARTAndroid Runtime虚拟机同时保留了Dalvik虚拟机。用户和开发者可以在设置中选择使用DVM或ART这一阶段的系统库包括libdvm.so和libart.so。
DalvikDVM继续支持已有的应用程序。ART提供了更好的性能和更高效的垃圾回收机制逐渐取代DVM。
1.3 ART虚拟机Android 5.0及以后
从Android 5.0Lollipop开始ART虚拟机完全取代了Dalvik虚拟机成为Android系统的默认运行时环境。ART的优势在于
提高了应用程序的启动速度和运行性能。提供了更高效的垃圾回收机制。支持32位和64位架构。
在这个阶段Android系统开始分为32位和64位版本。例如
Nexus 532位运行Android 6.0Nexus 6P64位运行Android 6.0
二、APK基本结构
APKAndroid Package文件是Android应用程序的安装文件它包含了应用程序的所有资源和代码。一个标准的APK文件通常包括以下几个部分
2.1 assets
assets目录下包含了应用程序的各种资源文件如图片、音频、数据库、网页、配置文件、动态链接库dll、共享库so等。这些资源在应用程序运行时可以通过AssetManager进行访问。
2.2 res
res目录下存放的是编译后的资源文件包括布局文件layout、程序图标drawable等。与assets不同res目录下的资源在编译时会被处理并在运行时通过资源ID进行访问。
2.3 lib
lib目录包含了应用程序在不同平台下使用的本地库so文件。通常会根据不同的CPU架构如armeabi、armeabi-v7a、arm64-v8a、x86、x86_64等放置对应的so文件以确保应用程序在各种设备上都能正常运行。
2.4 META-INF
META-INF目录包含了APK文件的签名信息用于验证应用程序的完整性和来源。通常包括MANIFEST.MF、CERT.RSA和CERT.SF文件。
2.5 resources.arsc
resources.arsc文件包含了编译后的资源索引信息和资源加密信息如语言包。它用于快速查找和加载应用程序中的资源。
2.6 AndroidManifest.xml
AndroidManifest.xml文件是应用程序的清单文件包含了应用程序的基本信息如包名、版本号、权限声明、组件声明如Activity、Service、Receiver、Provider以及代码执行入口等。
2.7 classes.dex
classes.dex文件包含了应用程序的字节码是经过Dalvik或ART虚拟机编译后的可执行代码。DEXDalvik Executable格式是Android特有的文件格式用于在虚拟机上执行应用程序的代码。