前言:在实际的ROM修改中,Recovery的修改还是会经常遇到的,这篇文章主要讲解如何修改Recovery字符串。
 
首先我们先了解下大概的流程。
1.screen_ui.cpp 中的ScreenRecoveryUI::Init() 负责加载基本资源信息。
2.Init()调用
    LoadLocalizedBitmap("installing_text", &backgroundText[INSTALLING_UPDATE]);
    LoadLocalizedBitmap("erasing_text", &backgroundText[ERASING]);
    LoadLocalizedBitmap("no_command_text", &backgroundText[NO_COMMAND]);
    LoadLocalizedBitmap("error_text", &backgroundText[ERROR]);
    分别对应recovery需要用到的四种字符串资源。
3.LoadLocalizedBitmap 调用res_create_localized_surface
4.res_create_localized_surface 在minui/resources.c中,其中
 snprintf(resPath, sizeof(resPath)-1, "/res/images/%s.png", name);
 我们可以知道是加载了res/images/目录下的图片资源。
5.对应res/images/目录即可找到对应的installing_text.png

6.函数就这样解析图片,然后得到需要的文字资源。
 
其次才是关键:即如何将文字资源放在png图片中呢?
秘密就在development\tools\recovery_l10n 这个文件夹中。
1.recovery_l10n就是谷歌提供的制作字符串图片的APK,通过源码下的mmm编译,可以得到RecoveryLocalizer.apk。
2.打开文件recovery_l10n\res\values-zh-rCN\string.xml
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <string name="recovery_installing" msgid="7864047928003865598">"正在安装系统更新… 请勿断电"</string>
    <string name="recovery_erasing" msgid="4612809744968710197">"正在清除… 请勿断电"</string>
    <string name="recovery_no_command" msgid="1915703879031023455">"无命令。"</string>
    <string name="recovery_error" msgid="4550265746256727080">"出错了!"</string>
</resources>
3.这里就可以看到需要用到的四个字符串,修改成需要的文字。
4.重新编译后,安装到对应的设备。打开apk,选择相应的字符串,执行Go。
 

5.通过adb命令既可拿到图片资源了。

6.拿到资源后,通过执行pngcrush来进行图片处理,因为读取pngcrush处理过的png比普通的png快,且内存小。
pugcrush -c 0 text_out.png output.png
至此我们就完成了字符串图片的创建。
最后,将字符串图片重新放入到bootable\recovery\res\image目录下,替换原来的图片,重新编译整个工程即可完成修改了。

如何修改Recovery的字符串资源的更多相关文章

  1. 一步步教你如何源码编译Recovery

    *1 准备Ubuntu作为您的操作系统,笔者的版本是12.04_amd64. *2 准备 Android 源码的编译环境,主要是安装一些编译用到的lib库,以及同步源码的一些工具 ,如GIT,CURL ...

  2. 杂牌机搞机之旅(二)————移植TWRP第三方Recovery并刷入

    原本想把杂牌机作为android破解和开发的测试机,破解的话肯定是安装框架的嘛,毕竟有些是要涉及到脱壳 . 但是,我尝试安装xposed的时候,手机卡在了开机界面,也就是magisk出现了错误,如果想 ...

  3. [Android][Recovery] Recovery下找不到sdcard路径

    做升级的时候,把更新包拷贝到sd卡中,然后调用接口进行重启升级 wossoneri.github.io File update_file = new File("/sdcard/update ...

  4. 记录魅族m1note编译TWRP recovery 3.1.0-0,包括mtk机型的处理方法

    1.安装64位linux系统,我用的是deepin os 15.3 2.将系统升级到最新版本 sudo apt-get update && sudo apt-get upgrade 3 ...

  5. 不懂这个别说是刷机高手!安卓Recovery你知多少

    [PConline 应用]玩过安卓刷机的朋友相信都听说过Recovery,在刷机前,第一步往往是解锁手机,第二部就是刷入Recovery了.利用Recovery读取第三方Rom并刷入系统,才能实现刷机 ...

  6. KingbaseES R3 集群修改system用户密码方案

    方案说明: 对于kingbaseES R3集群修改system密码相比单机环境有一定的复杂性,需要修改的位置如下: 1)数据库中system用户密码,可以用alter user命令修改 2)在reco ...

  7. 使用zfs进行pg的pitr恢复测试

    前段时间做了一下zfs做pg的增量恢复测试,mark一下. 服务器信息: 主机:192.168.173.43 备机:192.168.173.41 主备使用流复制搭建,在备机上面进行了zfs快照备份. ...

  8. postgres配置主从流复制

    postgres主从流复制 postgres在9.0之后引入了主从的流复制机制,所谓流复制,就是从库通过tcp流从主库中同步相应的数据.postgres的主从看过一个视频,大概效率为3w多事务qps. ...

  9. postgresql流复制配置

    一.配置环境: 示例环境 主机名 IP 角色 系统版本 数据目录 pg版本 db1 192.168.128.128 主库 RedHat5.3 /app/postgreSQL/data 9.1.7 db ...

随机推荐

  1. 5.3Role和Claims授权「深入浅出ASP.NET Core系列」

    希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢谢关注. Role授权 这是一种Asp.Net常用的传统的授权方法,当我们在 ...

  2. Java-每日编程练习题①

    1.输出打印一个九九乘法表 代码如下,很简单的一个for的嵌套循环即可实现 /** * 输出9*9口诀. * * @author ChenZX * */ public class Test01 { p ...

  3. 简单计算器 安卓 Android 作业

    Android老师布置的课程作业——简单计算器 功能要求实现四则运算,参考界面见下图: 首先给各位老铁提供apk安装包以及项目压缩包,略表诚意~ github地址:https://github.com ...

  4. windows update error 0x8024401c

    Error 0x8024401c 以管理员身份运行-命令提示符 执行以下3条命令 net stop wuauserv reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Po ...

  5. July 08th. 2018, Week 28th. Sunday

    Make each day your masterpiece. 让生命中的每一天都成为杰作. From John Wooden. Try to focus on what we are doing r ...

  6. Go语言JSON数据相互转换

    目录 结构体转json map转json int转json slice转json json反序列化为结构体 json反序列化为map 结构体转json 结构体转json示例: package main ...

  7. 浏览器F12 waterfall性能检测详解详解

    Queueing 是排队的意思 Stalled 是阻塞  请求访问该URL的主机是有并发和连接数限制的,必须要等之前的执行才能执行之后的,这段时间的耗时 DNS Lookup 是指域名解析所耗时间 I ...

  8. [翻译] EF Core 概述

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  9. JSP 状态管理 -- Session 和 Cookie

    Http 协议的无状态性 无状态是指,当浏览器发送请求给服务器的时候,服务器响应客户端请求.但是同一个浏览器再次发送请求给服务器的时候,服务器并不知道它就是刚才那个浏览器 session sessio ...

  10. 制造业物料清单BOM、智能文档阅读、科学文献影响因子、"Celebrated Italian mathematician ZepartzatT Gozinto" 与 高津托图

    意大利数学家Z.高津托 意大利伟大数学家Sire Zepartzatt Gozinto的生卒年代是一个谜[1],但是他发明的 “高筋图” 在 制造资源管理.物料清单(BOM)管理.智能阅读.科学文献影 ...