[转]Android Recovery汉化
2014-04-01 10:42
459 查看
http://www.manong.net/forum.php?mod=viewthread&tid=61
[align=left]1、简介[/align]
[align=left]由于部分用户对洋文recovery会产生头痛症状的bug, 决定汉化recovery。[/align]
[align=left]2、基础知识[/align]
[align=left]1)编码[/align]
[align=left]ASCII、GB2312、Unicode、UTF8[/align]
[align=left]ASCII[/align]
ASCII(美国信息互换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。
ASCII 码使用指定的7
位或8
位二进制数组合来表示128
或256
种可能的字符。标准ASCII
码也叫基础ASCII码,使用7
位二进制数来表示所有的大写和小写字母,数字0
到9、标点符号, 以及在美式英语中使用的特殊控制字符。其中:
0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为8、9、10
和13
分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。
[align=left]32~126(共95个)是字符(32sp是空格),其中48~57为0到9十个阿拉伯数字[/align]
[align=left]65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。[/align]
[align=left]同时还要注意,在标准ASCII中,其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。 [/align]
后128个称为扩展ASCII码,目前许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII
码允许将每个字符的第8
位用于确定附加的128
个特殊符号字符、外来语字母和图形符号。
[align=left]file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps_clip_image-16626.png[/align]
[align=center]图 1 ASCII表[/align]
[align=left]GB2312[/align]
GB2312码是中华人民共和国国家汉字信息交换用编码,全称《信息交换用汉字编码字符集——基本集》,由国家标准总局发布,1981年5月1日实施,通行于大陆。新加坡等地也使用此编码。
[align=left]它是计算机可以识别的编码,适用于汉字处理、汉字通信等系统之间的信息交换。基本集共收入汉字6763个和非汉字图形字符682个。整个字符集分成94个区,每区有94个位。每个区位上只有一个字符,因此可用所在的区和位来对汉字进行编码,称为区位码。[/align]
每个汉字也都有在GB2312中的区位码,用两个字节表示。
[align=left]汉字编码范围,区码:B0 ~ F7,位码:A1 ~ FE[/align]
[align=left]汉字编码后续标准如,GB18030, 对GB2312完全兼容。[/align]
[align=left]code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F[/align]
[align=left]B0A0 啊 阿 埃 挨 哎 唉 哀 皑 癌 蔼 矮 艾 碍 爱 隘[/align]
[align=left]B0B0 鞍 氨 安 俺 按 暗 岸 胺 案 肮 昂 盎 凹 敖 熬 翱[/align]
[align=left]B0C0 袄 傲 奥 懊 澳 芭 捌 扒 叭 吧 笆 八 疤 巴 拔 跋[/align]
[align=left]B0D0 靶 把 耙 坝 霸 罢 爸 白 柏 百 摆 佰 败 拜 稗 斑[/align]
[align=left]B0E0 班 搬 扳 般 颁 板 版 扮 拌 伴 瓣 半 办 绊 邦 帮[/align]
[align=left]B0F0 梆 榜 膀 绑 棒 磅 蚌 镑 傍 谤 苞 胞 包 褒 剥 [/align]
[align=left]...[/align]
[align=left]...[/align]
[align=left]...[/align]
[align=left]code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F[/align]
[align=left]F7A0 鳌 鳍 鳎 鳏 鳐 鳓 鳔 鳕 鳗 鳘 鳙 鳜 鳝 鳟 鳢[/align]
[align=left]F7B0 靼 鞅 鞑 鞒 鞔 鞯 鞫 鞣 鞲 鞴 骱 骰 骷 鹘 骶 骺[/align]
[align=left]F7C0 骼 髁 髀 髅 髂 髋 髌 髑 魅 魃 魇 魉 魈 魍 魑 飨[/align]
[align=left]F7D0 餍 餮 饕 饔 髟 髡 髦 髯 髫 髻 髭 髹 鬈 鬏 鬓 鬟[/align]
[align=left]F7E0 鬣 麽 麾 縻 麂 麇 麈 麋 麒 鏖 麝 麟 黛 黜 黝 黠[/align]
[align=left]F7F0 黟 黢 黩 黧 黥 黪 黯 鼢 鼬 鼯 鼹 鼷 鼽 鼾 齄 [/align]
[align=left]unicode[/align]
[align=left]通用字符集[/align]
[align=left]UTF8[/align]
[align=left]可变长编码,汉字3字节表示。具体可参考RFC3629。[/align]
[align=left]D2BB 4E00 E4 B8 80 一[/align]
[align=left]B6A1 4E01 E4 B8 81 丁[/align]
[align=left]C6DF 4E03 E4 B8 83 七[/align]
[align=left]CDF2 4E07 E4 B8 87 万[/align]
[align=left]D5C9 4E08 E4 B8 88 丈[/align]
[align=left]C8FD 4E09 E4 B8 89 三[/align]
[align=left]C9CF 4E0A E4 B8 8A 上[/align]
[align=left]CFC2 4E0B E4 B8 8B 下[/align]
[align=left]D8A2 4E0C E4 B8 8C 丌[/align]
[align=left]...[/align]
[align=left]...[/align]
[align=left]...[/align]
[align=left]F6B8 9F88 E9 BE 88 龈[/align]
[align=left]F6B9 9F89 E9 BE 89 龉[/align]
[align=left]F6BA 9F8A E9 BE 8A 龊[/align]
[align=left]C8A3 9F8B E9 BE 8B 龋[/align]
[align=left]F6BB 9F8C E9 BE 8C 龌[/align]
[align=left]C1FA 9F99 E9 BE 99 龙[/align]
[align=left]B9A8 9F9A E9 BE 9A 龚[/align]
[align=left]EDE8 9F9B E9 BE 9B 龛[/align]
[align=left]B9EA 9F9F E9 BE 9F 龟[/align]
[align=left]D9DF 9FA0 E9 BE A0 龠[/align]
[align=left]2)OpenGL[/align]
OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。
[align=left]file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps_clip_image-23313.png[/align]
[align=center]图2 OpenGL渲染管线[/align]
[align=left]file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps_clip_image-7388.png[/align]
[align=center]图3 像素数据处理流程简图[/align]
[align=left]1、像素操作[/align]
[align=left]对数组像素进行操作[/align]
[align=left]2、纹理装配[/align]
[align=left]生成纹理[/align]
[align=left]3、光栅化[/align]
[align=left]截取字符纹理片段,生成纹理单元[/align]
[align=left]4、片段操作[/align]
[align=left]对纹理单元进行操作,(着色,各种测试(alpha..),雾化)[/align]
[align=left]3)Pixelflinger[/align]
Pixelflinger是Android系统中为OpenGL ES引擎提供的一套软件渲染器(renderer)。OpenGL
ES引擎提供了一系列基础绘图功能。这些功能包括定义各种颜色格式像素位置、画点画线、绘制矩形及三角形、填充纹理等等。由于OpenGL ES相当于一个状态机,配置OpenGL
Es状态的函数也均由Pixelflinger提供。
[align=left]Pixelflinger涉及到的代码路径:[/align]
?
[align=left]Pixelflinger有两个主要结构体[/align]
?
其中context_t是pixelflinger里最主要的结构体,GGLContext
提供了外部操作引用接口。
?
这些接口的真正实现在/system/core/libpixelflinger/pixelflinger.cpp里面。
在我们下面的程序里面,主要用到一些结构体。
当然在使用pixelflinger前,需要对其进行初始化gglInit(),初始化GGLContext结构体。
?
[align=left]其实这个函数主要就是使用ggl_init_context()初始化context_t结构体,ggl_init_context()用于初始化context_t结构体中的环境、参数等。然后在GGLContext中引用context_t以对外提供接口。[/align]
[align=left]GGLContext中对外接口初始化主要在ggl_init_context()->ggl_init_procs()完成。[/align]
?
[align=left]Pixelflinger中的屏幕刷新机制,[/align]
[align=left]定义了两个帧缓冲区,gr_framebuffer[2][/align]
[align=left]获取缓冲区设备,get_framebuffer()[/align]
[align=left]3、recovery基本流程[/align]
[align=left]int main(int argc, char **argv)[/align]
[align=left] --->ui_init()[/align]
[align=left] --->ui_set_background(BACKGROUND_ICON_INSTALLING)[/align]
[align=left] --->load_volume_table()[/align]
[align=left] --->get_args(&argc, &argv)[/align]
[align=left]在/recovery/minui/grapics.c内进行[/align]
[align=left]字库初始化[/align]
[align=left]字库索引[/align]
[align=left]4、汉化流程[/align]
[align=left]1)总流程[/align]
[align=left]file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps_clip_image-28211.png[/align]
[align=left]2)字库制作[/align]
[align=left]通过GIMP_IMAGE 将字库图片转换生成字库图片源码C文件,/minui/mkfont.c将源码C文件压缩成字库头文件。[/align]
[align=left]注意:生成的头文件,注意修改结构体名以及相应cwidth和cheight(字符长宽)[/align]
[align=left]字库将在代码内初始化[/align]
[align=left]file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps_clip_image-8312.png[/align]
[align=left]3)代码修改[/align]
[align=left]字库初始化[/align]
?
[align=left]字库索引[/align]
?
[align=left]5、其他问题与移植性[/align]
[align=left]/**[/align]
注:
1、以上是基于GB的汉化标准,所以保存文件时要注意保存为GB编码类型,保存为UTF8编码可能导致显示乱码问题
2、汉化后的recovery 只支持中文,无法进行中英文或其他语言切换。
[align=left]1、简介[/align]
[align=left]由于部分用户对洋文recovery会产生头痛症状的bug, 决定汉化recovery。[/align]
[align=left]2、基础知识[/align]
[align=left]1)编码[/align]
[align=left]ASCII、GB2312、Unicode、UTF8[/align]
[align=left]ASCII[/align]
ASCII(美国信息互换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。
ASCII 码使用指定的7
位或8
位二进制数组合来表示128
或256
种可能的字符。标准ASCII
码也叫基础ASCII码,使用7
位二进制数来表示所有的大写和小写字母,数字0
到9、标点符号, 以及在美式英语中使用的特殊控制字符。其中:
0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为8、9、10
和13
分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。
[align=left]32~126(共95个)是字符(32sp是空格),其中48~57为0到9十个阿拉伯数字[/align]
[align=left]65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。[/align]
[align=left]同时还要注意,在标准ASCII中,其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。 [/align]
后128个称为扩展ASCII码,目前许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII
码允许将每个字符的第8
位用于确定附加的128
个特殊符号字符、外来语字母和图形符号。
[align=left]file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps_clip_image-16626.png[/align]
[align=center]图 1 ASCII表[/align]
[align=left]GB2312[/align]
GB2312码是中华人民共和国国家汉字信息交换用编码,全称《信息交换用汉字编码字符集——基本集》,由国家标准总局发布,1981年5月1日实施,通行于大陆。新加坡等地也使用此编码。
[align=left]它是计算机可以识别的编码,适用于汉字处理、汉字通信等系统之间的信息交换。基本集共收入汉字6763个和非汉字图形字符682个。整个字符集分成94个区,每区有94个位。每个区位上只有一个字符,因此可用所在的区和位来对汉字进行编码,称为区位码。[/align]
每个汉字也都有在GB2312中的区位码,用两个字节表示。
[align=left]汉字编码范围,区码:B0 ~ F7,位码:A1 ~ FE[/align]
[align=left]汉字编码后续标准如,GB18030, 对GB2312完全兼容。[/align]
[align=left]code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F[/align]
[align=left]B0A0 啊 阿 埃 挨 哎 唉 哀 皑 癌 蔼 矮 艾 碍 爱 隘[/align]
[align=left]B0B0 鞍 氨 安 俺 按 暗 岸 胺 案 肮 昂 盎 凹 敖 熬 翱[/align]
[align=left]B0C0 袄 傲 奥 懊 澳 芭 捌 扒 叭 吧 笆 八 疤 巴 拔 跋[/align]
[align=left]B0D0 靶 把 耙 坝 霸 罢 爸 白 柏 百 摆 佰 败 拜 稗 斑[/align]
[align=left]B0E0 班 搬 扳 般 颁 板 版 扮 拌 伴 瓣 半 办 绊 邦 帮[/align]
[align=left]B0F0 梆 榜 膀 绑 棒 磅 蚌 镑 傍 谤 苞 胞 包 褒 剥 [/align]
[align=left]...[/align]
[align=left]...[/align]
[align=left]...[/align]
[align=left]code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F[/align]
[align=left]F7A0 鳌 鳍 鳎 鳏 鳐 鳓 鳔 鳕 鳗 鳘 鳙 鳜 鳝 鳟 鳢[/align]
[align=left]F7B0 靼 鞅 鞑 鞒 鞔 鞯 鞫 鞣 鞲 鞴 骱 骰 骷 鹘 骶 骺[/align]
[align=left]F7C0 骼 髁 髀 髅 髂 髋 髌 髑 魅 魃 魇 魉 魈 魍 魑 飨[/align]
[align=left]F7D0 餍 餮 饕 饔 髟 髡 髦 髯 髫 髻 髭 髹 鬈 鬏 鬓 鬟[/align]
[align=left]F7E0 鬣 麽 麾 縻 麂 麇 麈 麋 麒 鏖 麝 麟 黛 黜 黝 黠[/align]
[align=left]F7F0 黟 黢 黩 黧 黥 黪 黯 鼢 鼬 鼯 鼹 鼷 鼽 鼾 齄 [/align]
[align=left]unicode[/align]
[align=left]通用字符集[/align]
[align=left]UTF8[/align]
[align=left]可变长编码,汉字3字节表示。具体可参考RFC3629。[/align]
[align=left]D2BB 4E00 E4 B8 80 一[/align]
[align=left]B6A1 4E01 E4 B8 81 丁[/align]
[align=left]C6DF 4E03 E4 B8 83 七[/align]
[align=left]CDF2 4E07 E4 B8 87 万[/align]
[align=left]D5C9 4E08 E4 B8 88 丈[/align]
[align=left]C8FD 4E09 E4 B8 89 三[/align]
[align=left]C9CF 4E0A E4 B8 8A 上[/align]
[align=left]CFC2 4E0B E4 B8 8B 下[/align]
[align=left]D8A2 4E0C E4 B8 8C 丌[/align]
[align=left]...[/align]
[align=left]...[/align]
[align=left]...[/align]
[align=left]F6B8 9F88 E9 BE 88 龈[/align]
[align=left]F6B9 9F89 E9 BE 89 龉[/align]
[align=left]F6BA 9F8A E9 BE 8A 龊[/align]
[align=left]C8A3 9F8B E9 BE 8B 龋[/align]
[align=left]F6BB 9F8C E9 BE 8C 龌[/align]
[align=left]C1FA 9F99 E9 BE 99 龙[/align]
[align=left]B9A8 9F9A E9 BE 9A 龚[/align]
[align=left]EDE8 9F9B E9 BE 9B 龛[/align]
[align=left]B9EA 9F9F E9 BE 9F 龟[/align]
[align=left]D9DF 9FA0 E9 BE A0 龠[/align]
[align=left]2)OpenGL[/align]
OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。
[align=left]file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps_clip_image-23313.png[/align]
[align=center]图2 OpenGL渲染管线[/align]
[align=left]file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps_clip_image-7388.png[/align]
[align=center]图3 像素数据处理流程简图[/align]
[align=left]1、像素操作[/align]
[align=left]对数组像素进行操作[/align]
[align=left]2、纹理装配[/align]
[align=left]生成纹理[/align]
[align=left]3、光栅化[/align]
[align=left]截取字符纹理片段,生成纹理单元[/align]
[align=left]4、片段操作[/align]
[align=left]对纹理单元进行操作,(着色,各种测试(alpha..),雾化)[/align]
[align=left]3)Pixelflinger[/align]
Pixelflinger是Android系统中为OpenGL ES引擎提供的一套软件渲染器(renderer)。OpenGL
ES引擎提供了一系列基础绘图功能。这些功能包括定义各种颜色格式像素位置、画点画线、绘制矩形及三角形、填充纹理等等。由于OpenGL ES相当于一个状态机,配置OpenGL
Es状态的函数也均由Pixelflinger提供。
[align=left]Pixelflinger涉及到的代码路径:[/align]
?
?
提供了外部操作引用接口。
?
在我们下面的程序里面,主要用到一些结构体。
当然在使用pixelflinger前,需要对其进行初始化gglInit(),初始化GGLContext结构体。
?
[align=left]GGLContext中对外接口初始化主要在ggl_init_context()->ggl_init_procs()完成。[/align]
?
[align=left]定义了两个帧缓冲区,gr_framebuffer[2][/align]
[align=left]获取缓冲区设备,get_framebuffer()[/align]
[align=left]3、recovery基本流程[/align]
[align=left]int main(int argc, char **argv)[/align]
[align=left] --->ui_init()[/align]
[align=left] --->ui_set_background(BACKGROUND_ICON_INSTALLING)[/align]
[align=left] --->load_volume_table()[/align]
[align=left] --->get_args(&argc, &argv)[/align]
[align=left]在/recovery/minui/grapics.c内进行[/align]
[align=left]字库初始化[/align]
[align=left]字库索引[/align]
[align=left]4、汉化流程[/align]
[align=left]1)总流程[/align]
[align=left]file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps_clip_image-28211.png[/align]
[align=left]2)字库制作[/align]
[align=left]通过GIMP_IMAGE 将字库图片转换生成字库图片源码C文件,/minui/mkfont.c将源码C文件压缩成字库头文件。[/align]
[align=left]注意:生成的头文件,注意修改结构体名以及相应cwidth和cheight(字符长宽)[/align]
[align=left]字库将在代码内初始化[/align]
[align=left]file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps_clip_image-8312.png[/align]
[align=left]3)代码修改[/align]
[align=left]字库初始化[/align]
?
?
[align=left]/**[/align]
注:
1、以上是基于GB的汉化标准,所以保存文件时要注意保存为GB编码类型,保存为UTF8编码可能导致显示乱码问题
2、汉化后的recovery 只支持中文,无法进行中英文或其他语言切换。
相关文章推荐
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- 解決Linux下Android开发真机调试设备不被识别问题
- [Android]在代码里运行另一个程序的方法
- [软件咨询]WPS2012正式版已发布 金山Office移动版4.0发布
- Android笔记-Linux Kernel Ftrace (Function Trace)解析
- android USB如何修改VID具体实现
- Android增量升级的方法和原理详细介绍
- Android Mouse实现过程详细笔记
- 深入Android Browser配置管理的详解
- Android Mms之:深入理解对话列表管理
- Android APP与媒体存储服务的交互
- android 多线程技术应用
- Android之采用execSQL与rawQuery方法完成数据的添删改查操作详解
- Android数据类型之间相互转换系统介绍
- 通过Android trace文件分析死锁ANR实例过程
- Android实现左右滑动效果的方法详解
- Android 各国语言缩写及简称详细介绍
- Android 自动判断是电话,网址,EMAIL方法之Linkify的使用