第4章内容提交

This commit is contained in:
dqzg12300 2023-04-22 23:18:57 +08:00
parent 9f6d849cc3
commit 48cb0a29a6

View File

@ -2,85 +2,81 @@
## 4.1 系统美化简介
AOSP的UI界面是非常简陋的其原因是由于AOSP是一个开源的项目主要面向开发人员和技术爱好者。AOSP并不是为了提供最终用户的优美外观而设计的而是用于供开发人员进行二次开发。此外AOSP还旨在提供一个实验平台以便测试新的Android功能和特性。因此AOSP界面相对简陋主要是为了加快开发和测试过程而不是提供给最终用户一个完整的Android体验。当然用户也可以使用第三方界面如各大手机厂商自家的界面或其他主题桌面等来定制自己的Android体验而这个打造UI展示的过程就是对系统进行美化了。通常情况下常见的对UI进行美化大致分为如下几项
`AOSP``UI`界面是非常简陋的,其原因是由于`AOSP`是一个开源的项目,主要面向开发人员和技术爱好者。`AOSP`并不是为了提供最终用户的优美外观而设计的,而是用于供开发人员进行二次开发。此外,`AOSP`还旨在提供一个实验平台,以便测试新的`Android`功能和特性。因此,`AOSP`界面相对简陋,主要是为了加快开发和测试过程,而不是提供给最终用户一个完整的`Android`体验。当然,用户也可以使用第三方界面,如各大手机厂商自家的界面或其他主题桌面等,来定制自己的`Android`体验,而这个打造`UI`展示的过程,就是对系统进行美化了。通常情况下,常见的对`UI`进行美化大致分为如下几项:
更换主题可以在Google Play Store中下载各种主题软件使Android的用户界面变得更加个性化。
* 更换主题:可以在`Google Play Store`中下载各种主题软件,使`Android`的用户界面变得更加个性化。
自定义图标:使用图标包来替换默认的应用图标,为应用程序打造更加独特的外观。
* 自定义图标:使用图标包来替换默认的应用图标,为应用程序打造更加独特的外观。
安装桌面主题:可以下载和安装各种桌面主题应用程序如Nova Launcher、Apex Launcher等,来定制主屏幕和菜单。
* 安装桌面主题:可以下载和安装各种桌面主题应用程序,来定制主屏幕和菜单。
动态壁纸将Android设备的背景设置为动态图片或视频,并可以使其与其他美化应用程序相互配合。
* 动态壁纸:将`Android`设备的背景设置为动态图片或视频,并可以使其与其他美化应用程序相互配合。
安装定制字体可以下载和安装自己喜欢的字体使Android系统上的应用程序和菜单更加丰富多彩。
* 安装定制字体:可以下载和安装自己喜欢的字体,使`Android`系统上的应用程序和菜单更加丰富多彩。
使用第三方启动屏幕像MIUI、华为EMUI等ROM都提供了自己的启动屏幕使用第三方启动屏幕会更有个性化并提升用户体验。
* 使用第三方启动屏幕:像`MIUI`、华为等ROM都提供了自己的启动屏幕使用第三方启动屏幕会更有个性化并提升用户体验。
自定义状态栏和导航栏root后可以使用Xposed框架来替换状态栏和导航栏。
* 自定义状态栏和导航栏:可以使用`Xposed`之类的`Hook`框架来替换状态栏和导航栏。
Android UI美化需求的目的是提高用户体验、突出品牌形象、展示产品价值和增加营销价值。设计美观、符合使用习惯、便于操作的用户界面对于Android设备的吸引力和实用性非常重要。下面简单介绍一下常见对美化系统的需求。
`Android UI`美化需求的目的是提高用户体验、突出品牌形象、展示产品价值和增加营销价值。设计美观、符合使用习惯、便于操作的用户界面对于`Android`设备的吸引力和实用性非常重要。下面简单介绍一下常见对美化系统的需求。
个性化:许多用户希望能够个性化自己的手机界面,让它看起来更加独特和有趣。这可以通过更改主题、图标、壁纸、字体等实现。
* 个性化:许多用户希望能够个性化自己的手机界面,让它看起来更加独特和有趣。这可以通过更改主题、图标、壁纸、字体等实现。
提高用户体验美化UI还有一个目的是为了提高用户体验。优秀的用户界面可以提高用户的舒适度、使用效率和满意度,从而吸引更多的用户。
* 提高用户体验:美化`UI`还有一个目的是为了提高用户体验。优秀的用户界面可以提高用户的舒适度、使用效率和满意度,从而吸引更多的用户。
提高产品价值一个好看的UI更容易吸引用户从而提高产品的价值。这对于Android应用开发商或者手机厂商来说尤为重要。
* 提高产品价值:一个好看的`UI`更容易吸引用户,从而提高产品的价值。这对于`Android`应用开发商或者手机厂商来说尤为重要。
突出品牌形象对于企业使其品牌形象在Android界面中得到突出展示也是有一定需要的通过UI美化营造品牌形象。
* 突出品牌形象:对于企业,使其品牌形象在`Android`界面中得到突出展示也是有一定需要的,通过`UI`美化营造品牌形象。
凸显功能 : 突出重要功能提高用户感知度和使用体验可以通过UI设计实现。
* 凸显功能 : 突出重要功能,提高用户感知度和使用体验,可以通过`UI`设计实现。
改善可用性: 使用条件恶劣的环境下设计UI如夜间、低光、震动等来提高系统的可用性。
* 改善可用性: 使用条件恶劣的环境下设计`UI`,如夜间、低光、震动等,来提高系统的可用性。
用户群体区分美化UI还可以通过设计不同款式的主题来适应不同群体的需求,例如儿童、青少年、年轻人、老年人等。
* 用户群体区分:美化`UI`还可以通过设计不同款式的主题来适应不同群体的需求,例如儿童、青少年、年轻人、老年人等。
下图展示的是Google官方的Android Rom桌面图以及自己编译AOSP的桌面图。
下图展示的是`Google`官方的`Android Rom`桌面图以及自己编译`AOSP`的桌面图。
![未标题-1](.\images\未标题-1.jpg)
从上图中可以看处明显差异Google官方的ROM相较于AOSP ROM多了一些功能和应用例如
从上图中可以看处明显差异,`Google`官方的`ROM`相较于`AOSP ROM`多了一些功能和应用,例如:谷歌应用套件:`Google Mobile ServicesGMS`包含了各种谷歌应用,如`Gmail、Google Maps、Play`商店等等。这些应用在`AOSP ROM`中是没有的。
谷歌应用套件Google Mobile ServicesGMS包含了各种谷歌应用如Gmail、Google Maps、Play商店等等。这些应用在AOSP ROM中是没有的。
谷歌助手Google Assistant是谷歌推出的语音助手旨在为用户提供更好的服务体验。该功能只会在谷歌官方ROM中内置。
谷歌照片该应用提供了许多强大的相册管理和编辑功能支持实时照片备份和共享。在谷歌官方ROM中预置了该应用。
谷歌相机该相机应用在图片处理方面表现出色包括HDR+、夜间拍摄等多种特效。同样只会在谷歌官方ROM中内置。
谷歌智能锁屏:谷歌智能锁屏可以学习用户的用习惯,预测用户可能要进行的操作,并以最快的速度为用户提供相关选项,比如预测下一个目的地并提供路线规划等等。
为了能够使第三方ROM能方便的搭载Google套装Google官方提供了一个应用与服务集合GApps包括谷歌商店、谷歌地图、谷歌浏览器、谷歌日历、Gmail等等如果想要的是一个界面类似官方的ROM直接从官网`https://opengapps.org/`下载GApps刷入即可。
接下来将围绕如何自己修改美化ROM进行展开。
由于许多`Android`应用程序和服务都是由`Google`提供的,并且需要授权才能使用,因此在某些情况下,如果设备没有预装`Google`应用程序和服务,则无法获得它们。因此,一些` Android`爱好者和开发者创建了`GApps`包,通过安装这些包,可以在自己的设备上获得`Google`应用程序和服务。,包括谷歌商店、谷歌地图、谷歌浏览器、谷歌日历、`Gmail`等等,如果想要的是一个界面类似官方的`ROM`,直接从官网:`https://opengapps.org/`下载`GApps`刷入即可。由于`GApps`目前暂不支持`AOSP12`,这里就不再详细展开讲诉如何将其内置了。
## 4.2 常见的系统美化方式
UI界面美化并不是一件非常难的事情随着用户的需求有着各类产品可以方便快捷的美化Android的界面展示。本节将从简易到复杂的几种方式进行逐一介绍。
`UI`界面美化并不是一件非常难的事情,随着用户的需求,有着各类产品可以方便快捷的美化`Android`的界面展示。
最简单的美化方式就是直接使用一些管理主题壁纸图标的App来管理UI界面资源这种方式无需对美化过程进行了解只需要挑选喜欢的资源进行替换就能完成对部分UI界面进行变动。缺点就是较为被动App提供的功能并不能完全满足一些人的定制需求。这种方式通常适用于普通Android用户。
最简单的美化方式,就是直接使用一些管理主题壁纸图标的`App`来管理`UI`界面资源,这种方式无需对美化过程进行了解,只需要挑选喜欢的资源进行替换就能完成对部分`UI`界面进行变动。缺点就是较为被动,`App`提供的功能并不能完全满足一些人的定制需求。这种方式通常适用于普通`Android`用户。
其次是使用ROM编辑类的工具将编译好的镜像导入然后由工具进行解析后再修改主题图标等。最后替换资源生成新的镜像这种方式同样不需要深入了解具体美化的原理但是和上一种相同的问题提供的功能有限并且类似的工具非常少见。并且还需要有一定的刷机经验。这种方式适用于一些Android发烧友。
其次是使用`ROM`编辑类的工具,将编译好的镜像导入,然后由工具进行解析后,再修改主题,图标等。最后替换资源生成新的镜像,这种方式同样不需要深入了解具体美化的原理,但是和上一种相同的问题,提供的功能有限,并且类似的工具非常少见。并且还需要有一定的刷机经验。这种方式适用于一些`Android`发烧友。
最后就是从原理层面了解资源所在位置如何修改Android源码替换资源。实现对系统UI的定制化从根本上解决美化系统的问题编译出来的镜像直接刷机后就能获得美化后的界面。这种定制方式的难度最高同时也是最根源的办法。当掌握原理后那么以上两种方式是如何做到美化的同样也会了如指掌。
最后就是从原理层面了解资源所在位置,如何修改`Android`源码替换资源。实现对系统`UI`的定制化,从根本上解决美化系统的问题,编译出来的镜像直接刷机后就能获得美化后的界面。这种定制方式的难度最高,同时也是最根源的办法。当掌握原理后,那么以上两种方式是如何做到美化的同样也会了如指掌。
接下来,将先对原理性的知识进行了解。
## 4.3 美化UI的原理
## 4.3 主题修改
`AOSP`源码中,系统资源的目录位置取决于特定的应用、部件或系统服务。以下是`AOSP`源码中一些常见的系统图标资源目录及其位置:
有多种方式可以修改主题例如通过修改Android源码中对资源的配置达到修改系统UI的目的大多数的系统UI相关的资源和配置都存放在目录`frameworks/base/core/res/res/`。找到与主题相关的资源文件,通过修改这些资源文件中的属性来实现改变 整个系统UI的外观样式而图标相关的素材一般在这个目录下的`drawable-*`的子目录中。可以直接替换图标素材来实现修改图标或者是直接替换主题apk同样可以实现切换主题
1、`Android`框架(`AOSP`源码树下的`frameworks/base/core/res/`):这些图标资源包括桌面、通知栏、设置等应用程序的图标
在源码编译刷入手机后,在手机中会有默认自带文件`./system/framework/framework-res.apk`这是存放Android系统UI界面的资源文件图片、布局、颜色、字符串等。它包含了 Android Framework 中的所有公共资源。当Android应用程序需要使用系统级的UI资源时就可以访问并使用这些资源
2、系统`UI``AOSP` 源码树下的`frameworks/base/packages/SystemUI/res/`):这些图标资源包括状态栏、快捷设置面板、锁定屏幕、任务管理器等
由此可以看的出其实前面介绍的几种方式都是相同的原理。软件进行修改系统UI实际是对`framework-res.apk`进行处理,而从源码层面处理,也是对`frameworks/base/core/res/`进行修改和替换处理
3、电话`AOSP`源码树下的`packages/apps/PhoneCommon/res/drawable/`):这些图标资源包括来电、拨号、通话记录等电话应用图标
`framework-res.apk``SystemUI.apk` 都是 Android 操作系统的应用程序包,`SystemUI.apk`同样也是系统UI相关的但是他们的主要功能不同
4、联系人`AOSP `源码树下的`packages/apps/Contacts/res/drawable/`):这些图标资源包括联系人、群组、通讯录等联系人应用图标
1、`framework-res.apk `包含了 Android 操作系统的核心 UI 组件资源文件例如系统主题、UI 图标、颜色的定义、字体、过渡动画等等。这些资源文件是 Android 操作系统的一部分,可用于在 Android 应用程序中构建 UI 或定制 Android 操作系统的 UI
有多种方式可以修改`UI`,例如通过修改`Android`源码中对资源的配置,达到修改系统`UI`的目的,大多数的系统`UI`相关的资源和配置都存放在目录`frameworks/base/core/res/`。通过修改这些资源文件来实现改变系统`UI`的外观样式,而图标相关的素材一般在这个目录下的`drawable-*`的子目录中。可以直接替换图标素材来实现修改图标,或者是替换`framework-res.apk`实现切换主题
2、`SystemUI.apk` 是 Android 操作系统的一个关键 UI 组件,它负责设备状态栏和通知管理,锁定屏幕上的日期和时间, 系统UI 中的图标、通知中心等等。当用户接收到来自应用程序或系统的通知时,负责将通知以可视化的方式展示给用户,并允许用户控制通知和设备状态栏的设置
在源码编译刷入手机后,在手机中会有默认自带文件`./system/framework/framework-res.apk`,这是存放`Android`系统`UI`界面的资源文件,图片、布局、颜色、字符串等。它包含了`Android Framework`中的所有公共资源。当`Android`应用程序需要使用系统级的`UI`资源时,就可以访问并使用这些资源
虽然两个应用程序包目的不同,但在 Android 操作系统中,它们都是极为重要的组成部分。由于 `framework-res.apk` 包含了 Android 操作系统的核心资源文件,因此它也被包括在 `SystemUI.apk` 中使用的资源文件中。这类系统应用程序包,通常不能被用户直接安装或卸载。不过,该应用程序包可以被理解为 Android 系统的一部分,针对其进行开发将有助于开发人员了解并扩展 Android 系统界面。
`framework-res.apk``SystemUI.apk` 都是`Android`操作系统的应用程序包,`SystemUI.apk`同样也是系统`UI`相关的,但是他们的主要功能不同。
* `framework-res.apk `包含了`Android`操作系统的核心`UI `组件(资源文件),例如系统主题、`UI `图标、颜色的定义、字体、过渡动画等等。。
* `SystemUI.apk` 负责设备状态栏和通知管理,锁定屏幕上的日期和时间, 系统`UI`中的图标、通知中心等等。当用户接收到来自应用程序或系统的通知时,负责将通知以可视化的方式展示给用户,并允许用户控制通知和设备状态栏的设置。
由于 `framework-res.apk` 包含了 `Android `操作系统的核心资源文件,因此它也被包括在 `SystemUI.apk` 中使用的资源文件中。这类系统应用程序包,通常不能被用户直接安装或卸载。不过,该应用程序包可以被理解为`Android`系统的一部分,针对其进行开发将有助于开发人员了解并扩展`Android`系统界面。
`AOSP`中,`framework-res.apk` 文件的源代码位于 `frameworks/base/core/res/` 目录下。这个目录包含了`Android`系统中的大量资源文件,例如布局文件、字符串、颜色、图标等等。
## 4.4 修改壁纸
@ -90,7 +86,7 @@
知道壁纸素材的路径后,可以通过对这个素材进行替换来达到目的,同样也可以通过查找设置的地方,修改默认设置选项,将壁纸切换为另一张图片来达到修改壁纸的目的,前者的好处在于简单快捷,替换素材即可。而后者在于稳妥,随时可以调整切换回原素材。替换的方式较为简单就不再细说,这里看看通过修改设置的实现。
首先,找到一个新的壁纸素材命令为`new_wallpaper.png`,然后放到目录`frameworks/base/core/res/res/drawable-nodpi/`并且在res目录下的`values/symbols.xml`中添加相应的配置。
首先,找到一个新的壁纸素材命令为`new_wallpaper.png`,然后放到目录`frameworks/base/core/res/res/drawable-nodpi/`下,并且在`res`目录下的`values/symbols.xml`中添加相应的配置。
```
...
@ -100,7 +96,7 @@
...
```
接下来,先看看源码了解一下壁纸设置的关键逻辑
接下来,修改默认壁纸设置的源码,将默认壁纸设置为新的图片
```java
public class WallpaperManager {
@ -164,19 +160,37 @@ public class WallpaperManager {
```
从源码中看到可以从三个地方获取默认壁纸同样想要修改也能从这三个方式着手比如添加一个属性设置默认壁纸路径或者修改cmfpath的路径设置默认壁纸最后就是修改资源文件名来设置默认壁纸。这里采用的是最后一种。
从源码中看到可以从三个地方获取默认壁纸同样想要修改也能从这三个方式着手比如添加一个属性设置默认壁纸路径或者修改cmfpath的路径设置默认壁纸。修改后重新编译系统刷入手机即可看到手机壁纸发生了变化。
```
source ./build/envsetup.sh
lunch aosp_blueline-userdebug
make update-api -j8
make -j$(nproc --all)
```
## 4.5 修改图标
在AOSP源码中系统图标资源的目录位置取决于特定的应用、部件或系统服务。以下是AOSP源码中一些常见的系统图标资源目录及其位置
修改图标前,首先需要对`res`的目录结构有个简单的认知。`Android`中有两种类型的资源文件:`drawable``mipmap``drawable` 主要用于存储非应用程序图标资源,例如按钮、菜单、列表等等。而 `mipmap` 则主要用于存储应用程序图标资源。
1、Android 框架AOSP 源码树下的 frameworks/base/core/res/):这些图标资源包括桌面、通知栏、设置等应用程序的图标。
`Android`中资源文件是按屏幕的密度来进行分类的,屏幕密度是指在给定空间内包含多少个像素点,通常以“每英寸像素点数(`pixels per inch, ppi`)”为单位来表示,`Android`将屏幕密度划分为以下几类:
2、系统UIAOSP 源码树下的 frameworks/base/packages/SystemUI/res/):这些图标资源包括状态栏、快捷设置面板、锁定屏幕、任务管理器等。
- `ldpi`:低密度屏幕,大约`120ppi`
- `mdpi`:中等密度屏幕,大约`160ppi`
- `hdpi`:高密度屏幕,大约`240ppi`
- `xhdpi`:超高密度屏幕,大约`320ppi`
- `xxhdpi`:极高密度屏幕,大约 `480ppi`
- `xxxhdpi`:超极高密度屏幕,大约`640ppi`
- `night`:特殊的资源目录,用于存储夜间模式下使用的图像资源。
- `nodpi`:特殊的资源目录,用于存储不针对任何屏幕密度分类的图像资源。
3、电话AOSP 源码树下的 packages/apps/PhoneCommon/res/drawable/):这些图标资源包括来电、拨号、通话记录等电话应用图标。
通常情况下,`Android`应用程序需要为不同的屏幕密度提供不同版本的图像资源,以确保在不同的设备上以最佳方式显示。例如,在 `drawable-mdpi` 目录中存储基于中等密度屏幕(`mdpi`)的图像资源,而在 `drawable-hdpi` 目录中存储基于高密度屏幕(`hdpi`)的图像资源
4、联系人AOSP 源码树下的 packages/apps/Contacts/res/drawable/):这些图标资源包括联系人、群组、通讯录等联系人应用图标。
然而,有时候应用程序需要使用固定大小的图像资源,并且不希望这些图像被缩放或扩展以适应不同的屏幕密度。在这种情况下,就可以使用 `drawable-nodpi` 目录来存储这些图像资源。这些图像将忽略设备的屏幕密度,并显示为其原始大小。
需要注意的是,使用 `drawable-nodpi` 目录要慎重考虑,并尽可能避免使用。因为它们不适用于适应不同屏幕密度的需求,可能会导致在某些设备上显示不正确。需要确保图像资源已经按照目标大小进行了生成,并且能够在所有设备上显示正确。
TODO: 第四章要花时间测试的,先跳过。