当前位置: 首页 > 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@线性代数学习总结@主要对象和问题@思想方法

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

VMware克隆虚拟机

要求&#xff1a;利用模板虚拟机hadoop100&#xff0c;克隆出hadoop101虚拟机。 1、鼠标右键点击已存在的模板虚拟机hadoop100 --> 管理 --> 克隆 2、选择克隆自虚拟机中的当前状态 3、创建完整克隆 4、修改虚拟机名称、位置 5、等待克隆完成后&#xff0c;则成功克隆出…...

C语言中常见的关键字

一、数据类型关键字&#xff08;20个&#xff09; 基本数据类型&#xff08;5个&#xff09; void&#xff1a;声明函数无返回值或无参数&#xff0c;声明无类型指针&#xff0c;显式丢弃运算结果 char&#xff1a;字符型类型数据&#xff0c;属于整型数据的一种 int&#xff…...

新型智慧视频监控系统:基于TSINGSEE青犀边缘计算AI视频识别技术的应用

边缘计算AI智能识别技术在视频监控领域的应用有很多。这项技术结合了边缘计算和人工智能技术&#xff0c;通过在摄像头或网关设备上运行AI算法&#xff0c;可以在现场实时处理和分析视频数据&#xff0c;从而实现智能识别和分析。目前来说&#xff0c;边缘计算AI视频智能技术可…...

智能优化算法应用:基于梯度算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于梯度算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于梯度算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.梯度算法4.实验参数设定5.算法结果6.参考文献7.MA…...

如何使用Docker搭建青龙面板并结合内网穿透工具发布至公网可访问

文章目录 一、前期准备本教程环境为&#xff1a;Centos7&#xff0c;可以跑Docker的系统都可以使用。本教程使用Docker部署青龙&#xff0c;如何安装Docker详见&#xff1a; 二、安装青龙面板三、映射本地部署的青龙面板至公网四、使用固定公网地址访问本地部署的青龙面板 正文…...

fastjson1.2.24 反序列化漏洞(CVE-2017-18349)分析

FastJson在< 1.2.24 版本中存在反序列化漏洞&#xff0c;主要原因FastJson支持的两个特性&#xff1a; fastjson反序列化时&#xff0c;JSON字符串中的type字段&#xff0c;用来表明指定反序列化的目标恶意对象类。fastjson反序列化时&#xff0c;字符串时会自动调用恶意对…...

Linux中history使用(过滤,显示时间,查找)

显示历史命令 history 显示最后几条执行命令 history 5 显示history记录中命令执行时间 export HISTTIMEFORMAT"%F %T " 显示命令中有某些内容的最后几条执行命令 history | grep key | tail -n 2...

issue阶段的选择电路的实现

1-of-M的仲裁电路 为什么要实现oldest-first 功能的仲裁呢&#xff1f; 这是考虑到越是旧的指令&#xff0c;和它存在相关性的指令也就越多&#xff0c;因此优先执行最旧的指令&#xff0c;则可以唤醒更多的指令&#xff0c;能够有效地提高处理器执行指令的并行度,而且最旧的指…...

BearPi Std 板从入门到放弃 - 后天篇(3)(ESP8266透传点灯)

简介 电脑搭建一个TCP Server&#xff0c; ESP8266 串口设置好透传模式, 再由TCP Server发送指令控制灯的亮灭; 开灯指令&#xff1a; led_on回车 &#xff1b; 关灯指令: led_off回车 主芯片: STM32L431RCT6 LED : PC13 \ 推挽输出即可 \ 高电平点亮 串口: Usart1 / LPUART E…...

【Linux】macOS下使用scp命令编写脚本上传文件至服务器

使用时需要输入服务器密码 #!/bin/bash# 检查传递给脚本的参数数量 if [ "$#" -ne 2 ]; thenecho "Usage: $0 <本地文件路径> <服务器文件夹路径>"exit 1 fi# 接收命令行参数 local_file"$1" remote_path"$2"# 定义远程服…...

北京师大互联网公司排名/青山seo排名公司

gitHub地址 : 响应链Demo文章有点长&#xff0c;如果只是想了解大概过程的&#xff0c;可以直接看后面的总结一.触摸、事件、响应者1. UITouch源起触摸一个手指一次触摸屏幕&#xff0c;就对应生成一个UITouch对象。多个手指同时触摸屏幕&#xff0c;生成多个UITouch对象。多个…...

抓取网站后台/广州网站建设费用

一面 自我介绍项目中的监控&#xff1a;那个监控指标常见的有哪些&#xff1f;微服务涉及到的技术以及需要注意的问题有哪些&#xff1f;注册中心你了解了哪些&#xff1f;consul 的可靠性你了解吗&#xff1f;consul 的机制你有没有具体深入过&#xff1f;有没有和其他的注册…...

泉州有什么网站是做鞋子批发的/网站推广去哪家比较好

ms類圖在網頁上看不完整。遇到這個問題的話&#xff0c;可以下載附件中的“兩個圖.wps”文檔來查看圖片。 類圖&#xff1a;交互序列圖&#xff1a; 转载于:https://blog.51cto.com/winters1224/1087138...

做网站源码/小红书seo优化

本文翻译自&#xff1a;What is [Serializable] and when should I use it?I found out that some classes use the [Serializable] attribute. 我发现有些类使用[Serializable]属性。 What is it? 它是什么&#xff1f; When should I use it? 我应该什么时候使用它&…...

南京做网站费用/济南网络推广网络营销

处理移动端click事件300毫秒延迟。FastClick 是一个简单&#xff0c;易于使用的js库用于消除在移动浏览器上触发click事件与一个物理Tap(敲击)之间的300延迟。 1、为什么会延迟&#xff1f; 从点击屏幕上的元素到触发元素的 click 事件&#xff0c;移动浏览器会有大约 300 毫秒…...

优化站诊断/腾讯第三季度营收448亿元

mouseover定义和用法 当鼠标指针位于元素上方时&#xff0c;会发生 mouseover 事件。 该事件大多数时候会与 mouseout 事件一起使用。 mouseover() 方法触发 mouseover 事件&#xff0c;或规定当发生 mouseover 事件时运行的函数。 注释&#xff1a;与 mouseenter 事件不同&…...