解决CyanogenMod刷机错误:设备型号不匹配问题

6次阅读
没有评论

案例背景

近日,一位用户试图通过CyanogenMod 11 ROM将一部索尼Xperia L升级至Android 4.4.2系统版本。安装过程中遇到了错误信息:“This package is for device: C2105, C2014, C2105, C2104; this device is.” 用户希望解决此问题,并询问了多种相关疑问。

解决方案

一、检查设备型号与系统版本是否匹配

首先,我们来看一下出现该错误的原因。从提供的错误日志信息来看,“This package is for device: C2105, C2014, C2105, C2104; this device is.”表明ROM是为C2105、C2014和C2105设备(重复多次)设计的。因此,这说明实际安装时需要确保安装包与当前手机型号匹配。

二、修改flashable文件

用户注意到在尝试将ROM刷入SD卡而不是手机内部存储进行测试时遇到了问题:“E: footer is wrong E: signature verification failed”。这提示我们可能需要直接在CyanogenMod ROM的updater-script中做些调整。具体来说,这个脚本有一个assert()语句段落:

assert(getprop("ro.product.device") == "C2105" || 
       getprop("ro.build.product") == "C2014" || 
       ... 
       abort("This package is for device: C2105, C2014, C2105, C2104; this device is " + getprop("ro.product.device") + ".");

这行assert()语句会阻止ROM在错误的设备刷入。要绕过这个检查,需要移除或者注释掉相关代码。

三、使用Windows编辑器还是Unix兼容编辑器

用户提到曾尝试通过Notepad++进行修改,并且有考虑到不同编辑器可能导致换行符LF(CR+LF)对脚本的影响:
1. 需在具有支持unix行为的编译程序下如Notepad++中做编辑,因为恢复会因\r\n的存在而抛出错误。
2. 如果用户坚持使用Mathematica进行修改,并想要获得正确换行符格式,可以参考相关讨论或帖子来配置文本文件。

四、实际操作

从提供的日志来看失败的原因可能是因为在处理文件时未能正确地将Windows换行符转换成Unix标准的LF。解决此问题的步骤如下:
1. 用户应使用如Notepad++等支持Unix行尾编辑器。
2. 转回updater-script代码并移除或注释掉assert()这一块内容,确保脚本正确执行。
3. 保存修改后上传到SD卡,并重新启动刷入过程。

总结

通过上述步骤可以有效解决该问题。值得注意的是,在刷写过程中务必保持谨慎操作,以免误操作导致手机无法正常启动(俗称“砖机”)。如果后续仍有任何兼容性或错误信息,请随时反馈以获得进一步帮助。

希望这篇技术指南对大家在日常使用中遇到类似问题有所帮助,并祝愿每一个尝试探索新技术和新功能的朋友们都能顺利完成。

正文完