当前位置: 首页 > news >正文

Android历史版本与APK文件结构

前言

在移动设备日益普及的今天,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.4(KitKat)是一个过渡版本,它引入了ART(Android Runtime)虚拟机,同时保留了Dalvik虚拟机。用户和开发者可以在设置中选择使用DVM或ART,这一阶段的系统库包括libdvm.solibart.so

  • Dalvik(DVM):继续支持已有的应用程序。
  • ART:提供了更好的性能和更高效的垃圾回收机制,逐渐取代DVM。

1.3 ART虚拟机(Android 5.0及以后)

从Android 5.0(Lollipop)开始,ART虚拟机完全取代了Dalvik虚拟机,成为Android系统的默认运行时环境。ART的优势在于:

  • 提高了应用程序的启动速度和运行性能。
  • 提供了更高效的垃圾回收机制。
  • 支持32位和64位架构。

在这个阶段,Android系统开始分为32位和64位版本。例如:

  • Nexus 5:32位,运行Android 6.0
  • Nexus 6P:64位,运行Android 6.0

二、APK基本结构

APK(Android 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虚拟机编译后的可执行代码。DEX(Dalvik Executable)格式是Android特有的文件格式,用于在虚拟机上执行应用程序的代码。

相关文章:

Android历史版本与APK文件结构

前言 在移动设备日益普及的今天,Android系统已经成为全球最流行的移动操作系统。作为Android开发者或逆向工程师,了解Android系统的演进历史以及APK文件的基本结构是非常重要的。本文将详细介绍Android历史版本的演变以及APK的基本结构。 一、Android历…...

文件解析漏洞集合

IIS解析漏洞 IIS6 目录解析 在网站下建立文件夹的名字为.asp/.asa 的文件夹,其目录内的任何扩展名的文件都被IIS当作asp 文件来解析并执行。 这里显示的是 1.asp下的1.jpg,按照道理来说里面的文件是一个图片,但是访问的话,会出…...

如何利用大语言模型进行半监督医学图像分割?这篇文章给出了答案

PS:写在前面,近期感谢很多小伙伴关注到我写的论文解读,我也会持续更新吖~同时希望大家多多支持本人的公主号~ 想了解更多医学图像论文资料请移步公主👸号哦~~~后期将持续更新!! 关注我,让我们一…...

库文件的制作和makefile文件操作基础实现

库文件包括静态库和动态库: 制作动态库命令如下: gcc -fPIC -shared xxx.c xxx.c -o libxxx.so xxx表示文件名 最后会生成一个libxxx.so文件 。这个so文件就是库文件。(若是用到了自己写的.c和.h文件,需要在同一目录下哦&…...

【Linux】进程创建进程终止进程等待

目录 一、进程创建1.1 写时拷贝1.2 frok的常规用法1.3 fork调用失败的原因 二、进程终止2.1 进程退出码2.2 进程退出方式2.2.1 exit函数的使用2.2.2 _exit函数的使用2.2.3 exit函数与_exit函数的区别 2.3 进程信号 三、进程等待3.1 进程等待的必要性3.2 进程等待的方式3.2.1 wa…...

编程的进阶和并发之路

编程的进阶和并发之路 博主在这谈并发,是因为单进程的资源是全局共享,函数作为局部空间来分担分布式计算的过程,掌握并发等于熟悉流式计算和程序执行的通量快速到达结束点。在大数据初期阶段,经验开发缺乏很多模拟数据&#xff0…...

文件系统 --- 文件结构体,文件fd以及文件描述符表

序言 在编程的世界里,文件操作是不可或缺的一部分。无论是数据的持久化存储、日志记录,还是简单的文本编辑,文件都扮演着至关重要的角色。然而,当我们通过编程语言如 C、Java 等轻松地进行文件读写时,背后隐藏的复杂机…...

【第三节】python中的函数

目录 一、函数的定义 二、函数的调用 三、函数的参数 3.1 可变与不可变对象 3.2 函数参数传递 3.3 参数类型 四、匿名函数 五、函数的return语句 六、作用域 七、python的模块化 八、 main 函数 一、函数的定义 函数是经过精心组织、可重复使用的代码片段&#xff0…...

“论云原生架构及其应用”写作框架软考高级论文系统架构设计师论文

论文真题 近年来,随着数字化转型不断深入,科技创新与业务发展不断融合,各行各业正在从大工业时代的固化范式进化成面向创新型组织与灵活型业务的崭新模式。在这一背景下,以容器和微服务架构为代表的云原生技术作为云计算服务的新…...

深度剖析Google黑科技RB-Modulation:告别繁琐训练,拥抱无限创意生成和风格迁移!

给定单个参考图像,RB-Modulation提供了一个无需训练的即插即用解决方案,用于(a)风格化和(b)具有各种提示的内容样式组合,同时保持样本多样性和提示对齐。例如,给定参考样式图像(例如“熔化的黄金3d渲染样式”)和内容图像(例如(a)“狗”),RB-Modulation方法可以坚持所需的提…...

react native 和 flutter 区别

React Native 和 Flutter 都是用于构建跨平台移动应用的优秀框架,各有其优点和适用场景。 1. React Native 1.1 优点 | 基于 JavaScript 生态:对于熟悉 JavaScript 和 React 的开发者来说,学习成本相对较低,能够利用大量现有的 …...

ITSS服务经理/ITSS服务工程师,招投标需要准备吗?

信息技术服务标准(ITSS)是中国首套完整的信息技术服务标准体系,全面规定了IT服务产品及其组成要素的标准化实施,旨在提供可信赖的IT服务。 在国际竞争日益激烈的背景下,推动国内标准的国际化已成为广泛共识&#xff0…...

eleven接口、多态

能够写出接口的定义格式 public interface 接口名 { public static final 数据类型 名称 数据值; //抽象方法: 必须使用实现类对象调用 void method(); //默认方法: 必须使用实现类对象调用 public default void show() {...} …...

重磅惊喜!OpenAI突然上线GPT-4o超长输出模型!「Her」高级语音模式已开放测试

在最近的大模型战争中,OpenAI似乎很难维持霸主地位。虽然没有具体的数据统计,但Claude3.5出现后,只是看网友们的评论,就能感觉到OpenAI订阅用户的流失: Claude3.5比GPT-4o好用,为什么我们不去订阅Claude呢&…...

解决问题 CUDA error: CUBLAS_STATUS_INVALID_VALUE when calling `cublasGemmEx

遇到问题如下&#xff1a; Traceback (most recent call last):File "run_warmup_a.py", line 431, in <module>main()File "run_warmup_a.py", line 142, in mainreturn main_worker(args, logger)File "run_warmup_a.py", line 207, in…...

【Python实战因果推断】67_图因果模型2

目录 Are Consultants Worth It? Crash Course in Graphical Models Chains Are Consultants Worth It? 为了展示有向无环图(DAG)的力量&#xff0c;让我们考虑一个更有趣但处理因素并未随机化的情况。假设你是某公司的经理&#xff0c;正在考虑是否聘请顶级咨询顾问。你…...

RK3588+MIPI+GMSL+AI摄像机:自动车载4/8通道GMSL采集/边缘计算盒解决方案

RK3588作为目前市面能买到的最强国产SOC&#xff0c;有强大的硬件配置。在智能汽车飞速发展&#xff0c;对图像数据矿场要求越来越多的环境下&#xff0c;如何高效采集数据&#xff0c;或者运行AI应用&#xff0c;成为刚需。 推出的4/8通道GMSL采集/边缘计算盒产品满足这些需求…...

智云-一个抓取web流量的轻量级蜜罐

智云-一个抓取web流量的轻量级蜜罐 安装环境要求 apache php7.4 mysql8 github地址 https://github.com/xiaoxiaoranxxx/POT-ZHIYUN 系统演示...

面向对象程序设计之sort排序

目录 java 升序 降序 c# 升序 倒序 小结 敲过排序算法的都会的&#xff0c;Sort排序与compareTo的改写。 java 升序 一般自带的sort方法就是升序的。 Arrays.sort(arr);//传入要排序的数组&#xff0c;默认升序 Collections.sort(list);//传入要排序的集合类&am…...

ARM学习(29)NXP 双coreMCU MCXN94学习

笔者来介绍一下NXP 双core板子 &#xff0c;新系列的mcxn94 1、MCX 新系列介绍 恩智浦 MCU 系列产品包括 Kinetis 、LPC 系列&#xff0c;以及 i.MX RT 系列&#xff0c;现在又推出新系列产品 MCX 产品&#xff0c;包括四个系列&#xff0c;目前已经发布产品的是 MCX N 系列。…...

Wan2.2-I2V-A14B实战案例:为本地餐饮店生成15秒抖音爆款菜品视频

Wan2.2-I2V-A14B实战案例&#xff1a;为本地餐饮店生成15秒抖音爆款菜品视频 1. 项目背景与价值 对于本地餐饮商家来说&#xff0c;短视频营销已经成为吸引顾客的重要手段。然而&#xff0c;专业视频制作成本高、周期长&#xff0c;很多小店难以承担。Wan2.2-I2V-A14B文生视频…...

开源剧本AI落地实操:像素剧本圣殿+Dual-GPU并行推理完整教程

开源剧本AI落地实操&#xff1a;像素剧本圣殿Dual-GPU并行推理完整教程 1. 项目概览 像素剧本圣殿&#xff08;Pixel Script Temple&#xff09;是一款基于Qwen2.5-14B-Instruct深度微调的专业剧本创作工具。这个开源项目将先进的AI推理能力与独特的8-Bit复古美学相结合&…...

如何用QtScrcpy实现跨平台Android设备高效投屏与控制

如何用QtScrcpy实现跨平台Android设备高效投屏与控制 【免费下载链接】QtScrcpy Android实时投屏软件&#xff0c;此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: https://gitcode.com/barry-ran/QtScrcpy 在数字化…...

解锁Claude无限潜能:技能生态系统的构建艺术

解锁Claude无限潜能&#xff1a;技能生态系统的构建艺术 【免费下载链接】awesome-claude-skills A curated list of awesome Claude Skills, resources, and tools for customizing Claude AI workflows 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-claude-s…...

别再花钱买内网穿透服务了!手把手教你用frp+Linux云服务器搭建自己的专属通道

零成本打造私有内网穿透通道&#xff1a;frp与Linux云服务器实战指南 你是否曾为远程访问家中NAS、调试开发环境或搭建私有云服务而烦恼&#xff1f;市面上动辄数百元的商业内网穿透服务不仅价格高昂&#xff0c;还常受限于带宽和稳定性。本文将带你用一台基础配置的Linux云服…...

从ULN2803芯片内部拆解,聊聊三极管“黄金搭档”达林顿管到底强在哪?

ULN2803芯片拆解&#xff1a;达林顿管如何成为三极管的“黄金搭档”&#xff1f; 当我们需要用单片机的微弱IO口信号&#xff08;通常只有几毫安&#xff09;驱动继电器、电机这类“大胃王”负载时&#xff0c;就像试图用一根吸管给游泳池注水——理论可行&#xff0c;实际效率…...

重装系统后的环境快速恢复:包含BERT模型部署的自动化脚本

重装系统后的环境快速恢复&#xff1a;包含BERT模型部署的自动化脚本 重装系统&#xff0c;对开发者来说&#xff0c;就像一场“数字大扫除”。清爽是清爽了&#xff0c;但看着空空如也的终端和待部署的一长串服务列表&#xff0c;那种从头再来的疲惫感瞬间涌上心头。尤其是当…...

手把手教你用Ollama命令搭建个人AI助手:从拉取Llama 3到定制化部署

从零构建智能对话引擎&#xff1a;Ollama与Llama 3的深度实践指南 在人工智能技术日益普及的今天&#xff0c;拥有一个个性化的AI助手已成为许多开发者和技术爱好者的追求。不同于云端服务的黑箱操作&#xff0c;本地部署的AI模型能提供更高的隐私保护和定制自由度。本文将带你…...

实战应用:基于快马平台开发具备origin高级分析功能的在线工具

今天想和大家分享一个最近用InsCode(快马)平台做的实战项目——开发一个具备Origin高级分析功能的在线工具。作为一个经常需要处理实验数据的科研狗&#xff0c;Origin这类软件的分析功能确实强大&#xff0c;但每次都要安装本地软件实在麻烦。于是就想试试能不能做个在线版&am…...

比特币钱包密码与助记词恢复工具:从入门到精通

比特币钱包密码与助记词恢复工具&#xff1a;从入门到精通 【免费下载链接】btcrecover An open source Bitcoin wallet password and seed recovery tool designed for the case where you already know most of your password/seed, but need assistance in trying different…...