这篇文章说通俗点,就是如何看懂FIH生产的安卓手机(例如诺基亚HMD安卓)的具体固件版本号。
For English Version, please read:
[Knowledge] About FIH Firmware Build Version Format + OTA Package Name Correctionforum.xda-developers.com
你在关于手机里看到的软件版本(00CN_X_XXX_SP0X)那不是固件版本号。拨打*#*#227#*#*,在调出来的BBox这个应用里可以看到实际的固件版本号。此信息存放在了systeminfo分区里。
首先,这里给出固件版本号的实际格式:
[FIH开发代号]-[软件版本]-0-[发售地区编号]-[分支][修订号]
[FIH_projectname]-[software_version]-0-[region_code]-[branch][revision]
FIH开发代号,是手机本身在FIH内部定义的开发代号,三个字符,并非一个特定含义的单词,例如诺基亚7Plus的FIH开发代号是B2N。记住自己手机的FIH开发代号,可以让你在看到一个固件版本号的时候,第一时间就能反应:哦!这就是我的手机的固件。上图中Project Name即为FIH开发代号。
软件版本,由4位数组成。
第一位数取决于Android大版本。少数情况下,第一位数不会发生变化,例如诺基亚6第一代的Android 8.0首版本固件版本号是D1C-5210-0-00CN-B01,而Android 8.1首版本固件版本号是D1C-5620-0-00CN-B01。
第二位数和第三位数一般取决于BUG的修正程度,例如Nokia 7 Plus国行近期几个版本都有很多修正,二三位数跳跃幅度较大。
第四位数取决于Android安全补丁更新级别,在某些程度下可能会导致进一位。例如Nokia 2最近半年来的更新简直挤牙膏,E1M-064A-0-00WW-B01开始一路挤到064B、064C、064E、064G、064J、064Q、0650……真是可惜了,看到064J直接跳到064Q我还想会不会有064K(逃),结果直接进了一位到0650。第四位数可以使用0或者A到Z的任意一个大写字母,极少数情况下会出现小写字母或其它数字,此情况就是内测小幅度更新,很可能会被放弃。
发售地区编号,这个说白了就是判断固件适用于哪些地区。目前已知的编号有这些:
00WW、00CN、00TW、00ID、00RU。
实际上发售地区编号是手机销售地SKUID的后半部分,SKUID一共五位数,发售地区编号就是SKUID的后四位。第一位代表对应品牌的编号,已知3代表夏普、6代表诺基亚。
分支,目前仅有A和B两个分支。A分支用于工程机,B分支用于量产机。
例如我拿到的Nokia 7 Plus工程机出厂搭载的固件版本是B2N-108A-0-00CN-A01,此版本不可安装入量产机。极少数情况下会出现A分支切入B分支的现象,但从未见过B切入A。
修订号,就是一些细微问题的修正后指定的版本号,这类修订后指定的版本号之间的差距一般不大。例如Nokia X5最近推的触屏组件更新,就是修订版本从B04到B07:PDA-102A-0-00CN-B04升级到PDA-102A-0-00CN-B07。
厂商一般以“[软件版本].[分支][修订号]”的格式来表示系统更新的版本,其实很容易凑齐成完整的固件版本号。
实际应用举例:内部更新包的文件名判断方法
手机能够识别的手动更新包文件名有两种格式:
全量更新包:[FIH开发代号]-[升级后软件版本]-0-[升级后发售地区编号]-[升级后分支][升级后修订号]-update.zip
增量更新包:[FIH开发代号]-[升级后软件版本]-0-[升级后发售地区编号]-[升级后分支][升级后修订号]-[升级前软件版本]-0-[升级前发售地区编号]-[升级前分支][升级前修订号]-update.zip
乍一看很长很乱,实际上如果理清了规律,很容易判断的。
以一个增量更新包举例:
诺基亚7的Android 8.0更新包的文件名是:
C1N-134C-0-00CN-B02-069B-0-00CN-B01-update.zip
更新后的固件版本号是:C1N-134C-0-00CN-B02
更新前的固件版本号是:C1N-069B-0-00CN-B01
如果将前面那一段内容高亮的话,辨认起来会更加容易。
如果你用的是国际版系统,手头有本地更新包但你无法从Google重新下载安装,你想自己手动升级,就可以自己重命名成实际的增量更新包文件名,放入内置存储根目录,拨打*#*#874#*#*进行本地更新。此本地更新方法也由FIH内部提供,来自InFocus/SHARP的原厂卡刷包升级指南。
你从Google获得的更新包可能是由更新包的校验值命名的,而不是实际的更新包文件名。从FIH服务器获得的更新包则是实际更新包文件名。
如果你想还原成实际的更新包文件名,你只需要知道更新前和更新后的实际版本号即可。
如果你不知道更新后的实际版本号,或者分析更新包内容遇到困难,你可以把它重命名为
[FIH开发代号]-9999-0-[发售地区编号]-B09-update.zip
再来升级,升级完成之后拨打*#*#227#*#*即可看到升级后的版本号是多少,你再来命名为应有的更新包文件名即可。
如果文件名不符合内部更新程序所需要的格式的话会提示文件不存在。
相比起进入recovery来手动更新,此更新方法更加快速、简便、可靠。
为什么要知道这个固件版本号?
这是为了方便我们交流和记录你在运行的版本号带来的变化。
目前已知的FIH开发代号如下:
ARG - Nokia 8110 4G (实际开发代号 argon)
FRT - Nokia 1 (实际开发代号 frontier)
ANT - Nokia 1 Plus (实际开发代号 antman)
我私下叫它“诺基亚一加”233333
E1M - Nokia 2 (实际开发代号 dynamo)
E2M - Nokia 2.1 (实际开发代号 dynamo2)
EVW - Nokia 2.1 Verizon
WSP - Nokia 2.2 (实际开发代号 wasp)
IRM - Nokia 2.3 (实际开发代号 ironman)
NE1 - Nokia 3 (实际开发代号 essential)
ES2 - Nokia 3.1 (实际开发代号 essential2)
EAG - Nokia 3.1 A & C (实际开发代号 eagle)
ROO - Nokia 3.1 Plus (实际开发代号 rooster)
RHD - Nokia 3.1 Plus C (实际开发代号 radiohead)
DPL - Nokia 3.2 (实际开发代号 deadpool)
PAN - Nokia 4.2 (实际开发代号 panther)
ND1 - Nokia 5 (实际开发代号 core)
CO2 - Nokia 5.1 (实际开发代号 core2)
PDA - Nokia 5.1 Plus / Nokia X5 (实际开发代号 panda)
D1C/PLE - Nokia 6 (实际开发代号 plate)
PL2 - Nokia 6.1 (实际开发代号 plate2)
DRG - Nokia 6.1 Plus / Nokia X6 (实际开发代号 dragon)
SLD - Nokia 6.2 (实际开发代号 starlord)
TAS - Nokia X71 (实际开发代号 taishan)
C1N - Nokia 7 (实际开发代号 charm)
B2N - Nokia 7 Plus (实际开发代号 onyx)
CTL - Nokia 7.1 (实际开发代号 crystal)
DDV - Nokia 7.2 (实际开发代号 daredevil)
PNX - Nokia 8.1 / Nokia X7 (实际开发代号 phoenix)
NB1 - Nokia 8 (实际开发代号 bang)
A1N - Nokia 8 Sirocco (实际开发代号 avenger)
AOP - Nokia 9 (实际开发代号 beholder)
VN3 - Sharp Z3
SS2 - Sharp Aquos S2 标配版 (实际开发代号 sato)
SAT - Sharp Aquos S2 高配版 (实际开发代号 sato)
HH1 - Sharp Aquos S3 标配版
SD1 - Sharp Aquos S3 高配版
SG1 - Sharp Aquos S3 mini