Android定制ROM简介

news2024/11/14 2:57:42

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。有一些解决此问题的方法,我将在相关的博客文章中讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1324938.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 常用模块time和datetime

【一】python中表示时间的三种方式 import time# 时间戳 res time.time() print(res, type(res)) # 1703055531.8492236 <class float># 格式化的时间字符串 res time.strftime(%Y-%m-%d %X) print(res, type(res)) # 2023-12-20 14:58:51 <class str># 结构化的…

《数据结构、算法与应用C++语言描述》- 最小赢者树模板的C++实现

赢者树 完整可编译运行代码见&#xff1a;Github::Data-Structures-Algorithms-and-Applications/_30winnerTree 比赛规则 假定有 n 个选手参加一次网球比赛。比赛规则是“突然死亡法”(sudden-death mode)&#xff1a;一名选手只要输掉一场球&#xff0c;就被淘汰。一对一对…

openstack-neutron服务安装

文章目录 网络服务概述概念主机网络 安装并配置控制节点先决条件完成下面的步骤以创建数据库&#xff1a;用数据库连接客户端以 root 用户连接到数据库服务器&#xff1a;创建 neutron 数据库:对neutron 数据库授予合适的访问权限&#xff0c;使用合适的密码替换NEUTRON_DBPASS…

Tomcat为什么要重写类加载器?

文章目录 一、双亲委派机制二、分析1、Tomcat需要隔离性2、Tomcat需要热替换3、打破双亲委派机制 三、Tomcat类加载器1、拓展类加载器2、工作原理 四、总结 一、双亲委派机制 首先了解下双亲委派机制&#xff0c;大致过程如下&#xff1a; 简单来说&#xff0c;就是加载class…

FIO测试参数与linux内核IO栈的关联分析-part2

二、FIO工具简介 我们在linux环境中&#xff0c;有一个常见测试SSD性能的工具叫做FIO。FIO (Flexible I/O Tester) 是一个强大的开源I/O基准测试工具&#xff0c;主要用于测试存储设备的性能&#xff0c;包括硬盘、固态硬盘 (SSD)、网络存储系统&#xff08;如NAS和SAN&#x…

VueCron使用方法

1&#xff09;什么是vueCron Vue Cron 是基于 Vue.js 的定时任务管理组件&#xff0c;它提供了一种简单易用的方式来设定和管理定时任务。Vue Cron 提供了一个类似于 Linux crontab 的界面&#xff0c;用户可以通过它来创建、编辑和删除定时任务。 2&#xff09;安装依赖及应…

urllib2 HTTP头部注入

文章目录 注入原理例题 [SWPU 2016]web7 注入原理 参考文章 应用场景是具有SSRF漏洞&#xff0c;结合CRLF注入 我们以redis数据库为例&#xff0c;当存在SSRF时我们伪造以下请求 http://127.0.0.1%0d%0aCONFIG%20SET%20dir%20%2ftmp%0d%0aCONFIG%20SET%20dbfilename%20evil%…

数字基础制度:构建数字经济的制度保障

数字经济已经成为全球经济的主要驱动力,它的快速发展不仅改变了我们的生活方式,也对社会和经济产生了深远的影响。在这个数字时代,数字基础制度的建设至关重要,它是一系列与数字经济相关的基本规则、政策和法律框架,是构建数字经济的制度保障,为数字经济的健康、可持续发…

程序员的20大Git面试问题及答案

文章目录 1.什么是Git&#xff1f;2.Git 工作流程3.在 Git 中提交的命令是什么&#xff1f;4.什么是 Git 中的“裸存储库”&#xff1f;5.Git 是用什么语言编写的&#xff1f;6.在Git中&#xff0c;你如何还原已经 push 并公开的提交&#xff1f;7.git pull 和 git fetch 有什么…

mysql:查看服务端为了处理连接而创建的线程数量

使用命令show global status like Threads_created;可以查看服务端为了处理连接而创建的线程数量。 例如&#xff1a;

【开源软件】最好的开源软件-2023-第三名 Docker

自我介绍 做一个简单介绍&#xff0c;酒架年近48 &#xff0c;有20多年IT工作经历&#xff0c;目前在一家500强做企业架构&#xff0e;因为工作需要&#xff0c;另外也因为兴趣涉猎比较广&#xff0c;为了自己学习建立了三个博客&#xff0c;分别是【全球IT瞭望】&#xff0c;【…

AOSP 源码编译android 12

目录 一、python安装 a. python2安装 b. python3安装 二、repo管理多个git a.第一步, 新建一个空白文件夹保存repo引导文件,并包含你的路径 b.下载启动器 c.将git-repo中的repo文件复制到 1 创建的.bin目录中 d.修改权限 e. 执行版本检查 三、初始化工程 a.执行创建文件…

数据结构学习 Leetcode300最长递增子序列

是我在学习动态规划时遇到的一道题。 题目&#xff1a; 一共有两种解法&#xff1a; 动态规划贪心 二分&#xff08;很难理解&#xff0c;我还没完全懂。。。&#xff09; 解法一&#xff1a;动态规划 思路&#xff1a; 状态&#xff1a;nums的前i个数的最长递增子序列。dp…

Python 正则表达式入门:轻松掌握字符串匹配的艺术

Python 正则表达式入门&#xff1a;轻松掌握字符串匹配的艺术 引言&#xff1a;什么是正则表达式&#xff1f;基础知识&#xff1a;正则表达式的语法和规则Python中的正则表达式&#xff1a;re模块的使用实战应用&#xff1a;常见的正则表达式案例最佳实践与常见错误结语&#…

uml用例图是什么?有哪些要素?

UML用例图是什么&#xff1f; UML用例图&#xff08;Unified Modeling Language Use Case Diagram&#xff09;是一种用于描述系统功能和用户之间交互的图形化建模工具。它是UML的一部分&#xff0c;主要用于识别和表示系统中的各个用例&#xff08;用户需求或功能点&#…

Axure中继器的使用实现表格的增删改查的自定义文件

目录 一.认识中继器 1.1.什么中继器 1.2. 中继器的组成 1.3.中继器的使用场景 二.中继器进行增删改查 三.十例表格增删改查 还有Axure这个东西许多东西需要我们去发现&#xff0c;我们需要去细心的研究&#xff0c;我们一起加油吧&#xff01;&#xff01;&#xff01;今…

Java如何开发PC客户端(Windows,Mac,Linux)

项目编译工具&#xff1a;Gradle开发工具&#xff1a; Idea开发语言&#xff1a; 建议java17以上ui组件&#xff1a;openjfx (org.openjfx.javafxplugin)打包工具: jpackage (org.beryx.jlink) 一、如何解决打包问题 java 14以后&#xff0c;有了jpackage工具&#xff0c;能够…

澳鹏干货解答!“关于机器学习的十大常见问题”

探索机器学习的常见问题&#xff0c;了解机器学习和人工智能的基本概念、原理、发展趋势、用途、方法和所需的数据要求从而发掘潜在的商机。 什么是机器学习&#xff1f; 机器学习即教授机器如何学习的过程&#xff0c;为机器提供指导&#xff0c;帮助它们自己开发逻辑&#…

108基于matlab的使用模拟退火 (SA) 求解并行机器调度的程序

基于matlab的使用模拟退火 &#xff08;SA&#xff09; 求解并行机器调度的程序&#xff0c;程序已调通&#xff0c;可直接运行。 108 matlab模拟退火 &#xff08;SA) (xiaohongshu.com)

Java实现限流算法

下面是一个使用Java实现的令牌桶算法的例子&#xff1a; import java.util.concurrent.atomic.AtomicLong;public class RateLimiter {private final long capacity; // 令牌桶容量private final long rate; // 令牌生成速率private AtomicLong tokens; // 当前令牌数量privat…