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

Android定制ROM简介

Android定制ROM简介

这篇文章是为对自定义ROM、AOSP等词汇不太熟悉的技术爱好者和好奇的人写的。我希望通过向您介绍这个世界来开始博客写作。

在我们将注意力转向定制ROM之前,让我们先了解一些基础知识。

什么是操作系统?

维基百科对此的定义简洁而准确。

操作系统(OS)是管理计算机硬件、软件资源并为计算机程序提供通用服务的系统软件。

操作系统管理数字设备,包括所有移动手机。

移动操作系统管理其硬件(例如处理器、内存、摄像头、电池、WiFi)、软件资源(例如剪贴板、屏幕键盘)并为程序(在移动世界中通常称为应用)提供通用服务(例如访问摄像头、互联网、库)。

Android和iOS是两个众所周知的移动操作系统。

Android和AOSP

Android是世界上使用最广泛的操作系统。除了iPhone外,Android几乎是全球所有智能手机中使用的操作系统。Android使它们变得智能。那么谁制作了Android?

如果你认为是Google,你几乎是正确的。 Android是由一组公司(开放手机联盟)共同努力开发的。这个联盟由Google赞助。与任何程序或应用一样,Android由大量代码组成。这些代码主要由Google编写,然后作为其开源倡议Android操作系统项目(AOSP)的一部分向公众发布。这意味着任何人都可以下载所有Android代码,进行更改并提交改进!这还意味着如果代码中存在任何漏洞,更容易发现、报告并迅速修复。就像任何代码程序一样,必须从源代码构建Android才能使用。从AOSP构建的Android通常被称为原始Android。但等等…你的手机是否运行这个确切的AOSP代码?不!

你手机自带的Android

AOSP中的Android与预装在手机中的Android之间存在两个主要区别:

  1. Google Play商店和GMS

    Google Play商店是几乎所有设备中预装的应用市场。您可以在Play商店中查找、下载和安装手机上的应用。它们可以是免费的或付费的。您可能还没有听说过另一个术语,GMS——Google移动服务。

    Google Mobile Services(GMS)是一组Google应用程序和API,帮助支持跨设备的功能。

    GMS包括Play商店,它使应用程序更新变得简单,GMS实际上在消息传递和实时聊天应用程序中非常重要。 GMS使您能够将Google帐户与手机同步,并同步联系人和其他数据。这完全是由Google开发的。我会引用Google在其网站上对此的说法:

    虽然Android开源项目(AOSP)提供了通用的设备级功能,例如电子邮件和通话,但GMS不是AOSP的一部分。 GMS仅通过与Google的许可证提供,并提供一整套流行的应用程序和基于云的服务。

    在这里需要注意的是,Google向手机制造商提供许可证,以便它们可以预装这些应用程序和服务。 Google不提供将GMS安装到手机的任何其他方法,您不能仅仅抓取’apks’(Android应用程序包),在手机上安装它们并期望它们能够正常工作。在这里还需要注意的是,其中一些服务比普通应用程序‘更有特权’,即它们被安装为系统应用程序。您无法从手机中卸载Play商店和Play服务。有趣的是:Play服务将始终尝试在后台使用移动数据将Play商店静默更新到最新版本。

    几乎所有Android手机都使用GMS。然而,由于一些国家(例如中国)已禁止Google,这些国家的手机没有预装GMS。这就是为什么在中国通常有不带GMS的手机的原因。

  2. 专有硬件代码、供应商用户界面和预装软件

    接下来,有时需要一些专有代码来运行手机上的特定硬件。专有代码是不向公众公开的代码,由制造商拥有版权,为商业而创建。它可能是相机代码,可能是调整过的Android库本身,这取决于手机制造商公司。
    一些定制化Android UI

MIUI、OneUI、ColorOS、OxygenOS、ZenUI等。所有这些都是由各自的手机制造商公司调整的Android的口味(定制用户界面),他们希望为他们的Android手机用户提供一种不同、特殊的体验。这些供应商从AOSP代码作为基础开始,然后修改代码以创建自己的Android版本。这个修改后的代码是专有和保密的。这些版本旨在在AOSP提供的功能之外提供额外的功能,一致的、有特色的外观,改进的用户体验等。

回想一下当您购买新手机时。在设置完手机后,您可能会注意到一些预装的应用程序,如Facebook、Amazon、也许是一些游戏、Netflix、一些供应商特定的应用程序(如三星和小米提供自己的应用商店)等。您可能想要其中一些,但大多数时候,它们是不需要的。这些被称为“增值应用程序”。之所以预装这些应用程序,是因为应用公司付给手机公司费用来这样做。这对于预算智能手机比旗舰智能手机更常见,因为这对盈利业务更有利。手机公司决定您是否可以卸载它们,如果您不能卸载它们,是否可以禁用它们。

我们现在对Android是什么有了基本的了解,也对我们手机上安装的Android有了了解。所以让我们开始了解定制ROM。

Android定制ROM

这些通常是Android的市场分发(通常是开源的)后期版本。开源:它们是从AOSP分叉而来,即它们的代码基础是AOSP,开发人员对该代码进行了一些更改。区别在于他们将此代码公开可用。市场分发:这些通常不预装在手机上,而是用户可以手动在其设备上安装这些定制ROM。

一些流行的定制ROM的例子包括LineageOS、DirtyUnicorns、PixelExperience ROM等。

让我们来看看在手机上使用定制ROM的利弊。

优势

我认为使用定制ROM的首要优势是自由、灵活性和选择的权力。随着我列举其他优势,这一点将会得到解释。

  1. 清洁、原始的Android体验: 定制ROM看起来与AOSP非常相似。与一开始在Android中使用的相同用户界面。它与Google在Pixel手机、Nexus手机和Android One项目中提供的界面非常相似。很少有厂商保持这种原始Android体验。其他厂商会强加一种看起来截然不同的用户界面,以突出自己,进行市场和品牌推广,以取悦一个小但声音大的“粉丝群体”。

  2. 性能和电池寿命提升: 如果您的手机具有一个非常耗资源的供应商UI版本,那么您可能无法充分发挥手机硬件的优势。像MIUI这样的重型自定义UI在运行UI本身时消耗大量资源,为您运行的应用程序,尤其是RAM,留下较少的资源。如果像我一样拥有4GB RAM或更少的预算手机,那么您的自定义UI驱动的Android可能很难进行多任务处理。

    • 如果您一次打开4-5个应用程序,那么最早打开的应用程序可能会被操作系统关闭,它简直无法负担在RAM中保留该应用程序。此外,为了弥补其繁重的UI和其他后台服务,供应商会使系统更加主动关闭后台应用程序。在定制ROM中,没有供应商端服务或额外的UI进程,系统在RAM管理方面更加胜任,并且在多任务处理方面显着更加出色。由AOSP开发人员编写的原始用户界面更加流畅,整个系统的视觉延迟较小。并且图形(游戏)性能稍有提高,因为UI使用更少的资源进行渲染。
    • 现实生活中的例子:如果我使用MIUI(预装在我的Redmi Note 7 Pro手机上),玩类似《使命召唤》的游戏,切换到Whatsapp快速回复(或接电话),然后回到《使命召唤》,游戏会重新启动。但是如果我使用定制ROM,即使在离开另一个应用程序后,游戏也不会重新启动,即使过了几分钟。
  3. 无增值软件: 大多数定制ROM都非常简化。优秀的定制ROM确保所有预装的应用程序都是开源的,并且它们对基本手机功能是必需的。尽管当今一些ROM试图遵循Pixel的路线,并用它们的Google替代品替换大多数系统应用程序。通过自定义恢复(我将在另一篇博客中介绍),您实际上可以选择要预安装的哪些Google应用程序。

  4. 隐私: 定制ROM不包含供应商在“改善用户体验”的名义下包含的数据收集和分析软件。尽管一些定制ROM具有简单的匿名统计报告,但可以轻松关闭。您可以选择通过我们称之为“GApps包”安装GMS应用程序和服务,或者您可以安装替代方案,如microG。使用microG,您可以拥有完全不含Google的、真正开源、安全且注重隐私的Android。

  5. 更快的更新: 定制ROM开发人员通常是小团队协作,会在发布之前在他们自己的手机上测试每个新的更新。因此,您将获得比供应商ROM更快的更新。在AOSP发布新的月度安全补丁后,开发人员只需几天时间就能更新他们的定制ROM。更快的更新意味着您的Android手机对系统中新发现的漏洞更加安全。

  6. 无广告: 开源软件简单无法包含广告。如果有广告,某人可以轻松地调整软件的那一部分并发布同一软件的无广告版本。与此同时,一些预装的供应商应用程序包含令人讨厌的广告。

  7. 更新的Android版本: 手机供应商通常只提供一到两个Android版本的升级。例如,我曾拥有一台华硕Zenfone 3,它配备了Android 6.0(棉花糖),并升级到了Android 8.0(奥利奥)。定制ROM开发人员能够为手机提供更近期的Android版本。对于Zenfone 3,基于Android 9.0(派)的定制ROM是可用的!另一个例子:联想ZUK Z2 Pro官方升级至Android 8.0(奥利奥),但定制ROM甚至可用于Android 11.0!
    这里有更多的优点,但让我们转向缺点。

缺点

这些大多数都可以通过一个简单的措施来避免——做好你的调查。

安装定制ROM需要解锁手机的引导加载程序。 许多供应商提供了此工具,但他们会劝阻您解锁引导加载程序。有些供应商在您的设备上安装定制ROM时会取消设备的保修。他们这样做是因为您将在手机上安装他们无法提供支持的定制软件。如果您疏忽大意并设法“硬砖”(见第3点)您的设备,公司就不应该负责。但这是非常罕见的情况,保修也会因硬件问题而失效。
注意:一些公司(如小米)将考虑如果您锁定引导加载程序并再次安装供应商的自定义UI,则会考虑保修。这因供应商而异,您将在其自己的网站上找到有关此信息的更多信息。

  • 错误: 供应商ROM经过严格测试,并得到了专业开发人员的支持。供应商还提供保修,并在一定程度上对其负责。所有这些都不适用于定制ROM。错误或软件问题主要取决于两个主要因素:
  • A.错误可能出现在ROM本身或设备端源代码中。这取决于开发人员是否能够修复。
  • B.有时在定制ROM中根本无法修复错误。这可能是由于供应商对某个组件的糟糕实现,也可能是由于其他无法避免的原因。
    最后,最“可怕”的缺点是事情可能会出错。如果您不小心并安装了一个不适用于您的设备、而是为其他设备准备的文件,可能会导致您的手机在最坏的情况下无法使用。也可能发生开发人员在代码中犯了错误,导致相同的结果,或者在大多数情况下是一些小错误。因此,重要的是确保您安装的ROM与您的设备兼容且正常工作。开发人员通常在发布ROM时附上其自己设备的定制ROM安装截图。在涉及到定制ROM时,小心并在事先进行适当的查找是至关重要的。我将在此方面定义两个常用术语:
  • A.软砖:手机处于无法使用的状态。您可以将手机恢复正常,但这需要一些时间和精力。在某些情况下,您可能需要将其带到服务中心进行修复。
  • B.硬砖:手机成为实际的砖块。如果您非常不走运或疏忽大意,可能会出现硬砖。您无法从这种状态中恢复手机。通常发生在敏感的手机分区损坏或以使手机无法启动的方式进行更改时。
    某些应用可能不起作用或可能无法使用于该设备。 需要更高安全性的应用程序,如Netflix、银行应用程序,非常少量的游戏能够检测到您正在使用已解锁引导加载程序的定制ROM。有一些解决此问题的方法,我将在相关的博客文章中讨论。

相关文章:

Android定制ROM简介

Android定制ROM简介 这篇文章是为对自定义ROM、AOSP等词汇不太熟悉的技术爱好者和好奇的人写的。我希望通过向您介绍这个世界来开始博客写作。 在我们将注意力转向定制ROM之前,让我们先了解一些基础知识。 什么是操作系统? 维基百科对此的定义简洁而…...

百模大战中的AI行业:新趋势与未来发展

文章目录 每日一句正能量前言技术进步应用拓展行业变革人才竞争后记 每日一句正能量 人生最重要的价值是心灵的幸福,而不是任何身外之物。 前言 随着科技的迅猛发展,人工智能(AI)已经成为引领技术革命的重要驱动力之一。在当前的…...

VScode安装C/C++编译器步骤

一、安装C/C插件 二、安装 MinGW-w64 工具链 使用国内源 git clone https://gitee.com/cuihongxi/ubuntu2-mac.git 下载后进入到VScode文件夹下,点击msys2-x86_64-20231026.exe进行安装 完成后,确保选中“立即运行 MSYS2”框,然后选择“完…...

【Date对象】js中的日期类型Date对象的使用详情

😁 作者简介:一名大四的学生,致力学习前端开发技术 ⭐️个人主页:夜宵饽饽的主页 ❔ 系列专栏:JavaScript小贴士 👐学习格言:成功不是终点,失败也并非末日,最重要的是继续…...

【PyTorch】代码学习

文章目录 直接定义nn.Sequential(), 然后append(),最后直接net(),少写很多forward,适合直连式网络 直接定义nn.Sequential(), 然后append(),最后直接net(),少写很多forward,适合直连式网络 代码来源:https://github.com/zshhans/MSD-Mixer/b…...

ElasticSeach--springboot中使用

目录 一.引入依赖 二.配置链接信息 三.索引库测试 1.创建索引库 2.查询索引库 3.删除索引库 四.文档测试 1.添加文档 2.修改文档 3.删除文档 4.查询具体文档 5.批量添加文档 五.查询测试 1.查询所有 2.根据属性term匹配查询 3.分页查询 4.排序 5.过滤属性 6.boo…...

(1)(1.9) MSP (version 4.2)

文章目录 前言 1 协议概述 2 配置 3 参数说明 前言 ArduPilot 支持 MSP 协议,可通过任何串行端口进行遥测、OSD 和传感器。这样,ArduPilot 就能将遥测数据发送到 MSP 兼容设备(如大疆护目镜),用于屏幕显示&#x…...

mysql 表锁 行锁

目录 表锁(Table Lock) 行锁(Row Lock) 进一步通过举例解释 update操作走的是什么锁 表锁示例: 行锁示例: MySQL 中常见的锁类型包括: 表锁(Table Lock) 是针对整个…...

Google 提示:切忌滥用 DORA 指标

谷歌的 DevOps 研究与评估团队从事指标交易,即 DevOps 指标。但其最新的相关报告也警告不要过度使用这些指标。 DevOps 研究与评估小组(DORA)建议 IT 专业人员根据四个关键指标来评估团队绩效:部署频率,变更准备时间&a…...

2023年全球架构师峰会(ArchSummit北京站2023)-核心PPT资料下载

一、峰会简介 ArchSummit聚焦业界强大的技术成果,秉承“实践第一、案例为主”的原则,展示先进技术在行业中的典型实践,以及技术在企业转型、发展中的推动作用。旨在帮助技术管理者、CTO、架构师做好技术选型、技术团队组建与管理&#xff0c…...

安全、高效的MySQL DDL解决方案

MySQL作为目前应用最广泛的开源关系型数据库,是许多网站、应用和商业产品的主要数据存储。在生产环境,线上数据库常常面临着持续的、不断变化的表结构修改(DDL),如增加、更改、删除字段和索引等等。其中一些DDL操作在M…...

100GPTS计划-AI学术AcademicRefiner

地址 https://chat.openai.com/g/g-LcMl7q6rk-academic-refiner https://poe.com/AcademicRefiner 测试 减少相似性 增加独特性 修改http://t.csdnimg.cn/jyHwo这篇文章微调 专注于人工智能、科技、金融和医学领域的学术论文改写,秉承严格的专业和学术标准。 …...

k8s 中部署Jenkins

创建namespace apiVersion: v1 kind: Namespace metadata:name: jenkins创建pv以及pvc kind: PersistentVolume apiVersion: v1 metadata:name: jenkins-pv-volumenamespace: jenkinslabels:type: localapp: jenkins spec:#storageClassName: manualcapacity:storage: 5Giacc…...

Spring Cloud和Zookeeper的集成,构建高可扩展的分布式系统

引言 构建高可扩展的分布式系统是现代应用程序开发中的重要挑战之一。在分布式系统中,负载均衡和分布式锁是两个关键问题。本文将介绍如何使用Spring Cloud和Zookeeper集成来实现高可扩展的分布式系统,并分析其负载均衡原理和分布式锁的应用。 1. 分布…...

【唐山海德教育】安全员c证怎么考

1、注册地在本市的施工单位在职“三类人员”可申请参加安全生产考核; 2、职业道德良好,身体健康,年龄不超过60周岁(法定代表人除外); 3、筑施工企业专职安全生产管理人员需有中专(含高中、中技…...

MySQL是如何保证数据不丢失的?

文章目录 前言Buffer Pool 和 DML 的关系DML操作流程加载数据页更新记录 数据持久化方案合适的时机刷盘双写机制日志先行机制日志刷盘机制Redo Log 恢复数据 总结 前言 上篇文章《InnoDB在SQL查询中的关键功能和优化策略》对InnoDB的查询操作和优化事项进行了说明。但是&#…...

CUMT--Java复习--泛型与集合

目录 一、泛型 1、概述 2、通配符 3、有界类型 二、集合 1、概述 2、迭代器接口 三、集合类 1、Collection接口 2、List接口 3、Set接口 4、Queue接口 5、Map接口 四、集合转换 五、集合工具类 一、泛型 1、概述 从JDK5.0开始,Java引入泛型类型&…...

Android 权限申请

在Android中,从Android 6.0(API级别23)开始,应用在运行时需要动态申请权限。以下是一些步骤来动态申请权限: 在应用的清单文件(AndroidManifest.xml)中声明需要的权限。例如,如果应…...

R语言【base】——invisible将控制台的输出模式调整为隐藏,只允许赋值后输出,返回对象的(临时)不可见副本

Package base version 4.3.2 invisible(x NULL) 参数【x】&#xff1a;一个任意的 R 对象&#xff0c;默认为 NULL。 如果希望函数返回的值可以赋值&#xff0c;但在未赋值时不打印&#xff0c;则可以使用该函数。 f <- function(x){if (x){return (x)} else {return (in…...

LA@线性代数学习总结@主要对象和问题@思想方法

文章目录 线性代数研究对象主要问题联系核心概念核心定理 核心操作和运算基础高级小结 性质和推导方法问题转换为线性方程组求解问题验证和推导性质定理 线性代数研究对象 线性代数的研究对象主要是行列式和矩阵(向量)矩阵这种对象可以做的操作和运算很多,特别是方阵,它们的计…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...