GMS包与Android版本序列号

我们MT6517的项目要做国外的市场,要求在原有版本基础上添加GMS包.(理论上现有方案需要过CTS与GTS,之后向Google申请,由Google正式Release GMS包给到厂商)

同时有两个项目,一个是HE-E700,另一个叫N7100,其中N7100是从HE-E700中Fork出来的一条分支.奇怪的事情发生了,按同样的流程移植GMS包,N7100可以正常使用Google Play等服务,但HE-E700这个分支却一直报错,”意外停止”,”服务器错误”等.

花了几天的时间调试,查找问题,GoogleBaidu都没能找到原因.后来只好用比较土的办法,用二分法逐个版本验证,逐步缩小提交的范围.其间两台服务器编译了N个版本.

最终找到了原来最意想不到的地方,竟然是版本号的差异倒置.即给手机的序列号命名中,不允许有”-“号,即不能是HE-E700,只能是E700.(空格也不行.)

在devs.c的文件中 memcpy(serial_number, “HE-E700”, 8);

ANSI,UTF-8,UTF-8无BOM,ANSI as UTF-8

同一个文件,在Windows下,与在Ubuntu下为何显示的编码格式不同?

不同的编码格式为何在Eclipse,SourceInsight,Git有些能显示,有些不能?

最近工作中遇到的问题,带着种种疑问,逐步来揭秘.

1.UFT-16都是通用的,只要系统/工具支持,就能正常显示,无论是在哪个系统之下.

2.Windows的默认编码格式是ANSI.(对于简体中文版本Windows来说就是GBK/GB2312)

Ubuntu的默认编码格式是UTF-8无BOM,即Notepad++所识别成的ANSI as UTF-8

1

在Windows中新建一个纯英文的ANSI编码格式的文件 在Ubuntu中Gedit会显示为UTF-8 正常显示

2

在Windows中新建一个中英文的ANSI编码格式的文件 在Ubuntu中Gedit会提示错误,选择编码后显示GB2312 使用GBK格式打开正常

3

在Ubuntu中新建一个纯英文的UTF-8编码格式的文件 在Windows中用Notepad++打开会显示为ANSI 正常显示

4

在Ubuntu中新建一个中英文的UTF-8编码格式的文件 在Windows中用Notepad++打开会显示为ANSI  as UTF-8,

即UTF-8无BOM正常显示

3.总结

1

纯英文文本 ANSI = UTF-8无BOM = ANSI as UTF-8,

2

含有中文的文本 ANSI,UTF-8,之间需要显示的转换才能正常显示

对于Android代码,最好还是用UTF-8无BOM的形式来存储,在系统切换时更方便.在各个开发工具之间也都能正常显示,SourceInsight除外