前言:在实际的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. JS异步操作新体验之 async函数

    1.初识 async 函数   ES6中提供了两个很好的解决异步操作的方案 Promise 和 Generator,ES2017标准中引入的 async 函数就是建立在 Promise 和 Gener ...

  2. HTML阻止iframe跳转页面并使用iframe在页面内嵌微信网页版

    昨天看到这篇文章[置顶]开源组件NanUI一周年 - 使用HTML/CSS/JS来构建.Net Winform应用程序界面 就想弄一个winform结合html5的一个小东西,突有兴致,想在里面嵌套一 ...

  3. Odoo Tech World 2018(上海)互联网开源技术大会通告

    会议概述 点击进入活动报名通道 高成本的软件开发,耗时的系统安装,繁琐的操作培训… 这一系列问题都是企业数字化管理的痛点, "软件"成为发展数企业数字化转型的瓶颈, 无论是小厂家或 ...

  4. ArcGIS对SLD样式的支持

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.ArcGISWMS服务对SLD的支持 在完成用geoserver的w ...

  5. android Fragment中使用Toolbar

    在Activity中可以直接使用 setSupportActionBar(toolbar); 就可以重写 onCreateOptionsMenu 和 onOptionsItemSelected 方法: ...

  6. render与vue组件和注册

    <template> <div class="about"> <h1>This is an about page</h1> < ...

  7. 【Android Studio安装部署系列】七、真机运行项目

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 简单介绍下真机运行项目的操作步骤. 手机连接电脑 将手机通过数据线连接到电脑上,此时电脑会自动下载安装驱动程序.如果没有安装上的话, ...

  8. 【Android Studio安装部署系列】三十七、从Android Studio3.2升级到Android Studio3.4【以及创建Android Q模拟器】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 保持Android Studio开发环境的最新版本. 下载Android Studio3.4 使用Android Studio自带的 ...

  9. BaiduSpeechDemo【百度语音SDK集成】(基于v3.0.8.1)

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 上一篇集成的是V3.0.7.3版本的SDK<BaiduSpeechDemo[百度语音SDK集成](基于v3.0.7.3)> ...

  10. DotNetCore跨平台~Dapper的使用

    回到目录 Dapper作为小型ORM的代表作品被我们应用到了dotnet core的项目中,下面将把自己在项目中使用dapper进行curd操作的过程写一下,后期可能会遇到一些问题,大叔也会在这个系列 ...