一个具体的错误7

<%= @topic_view.topic.title %>
<%= @topic_view.topic.average_rating %> <%= @topic_view.topic.posts.count { |p| !!p.custom_fields['rating'] } %>

背景:
Moto X 2014 中国版,现在正常使用MK81,TWRP最新版3.3.1.0
现状:
从MK81开始,不区分国内版,统统使用Unified这一版
但是刷入MK90.0-victara-201909101914-NIGHTLY的时候,出现错误,
E1001:Failed to update system image.

尽我所能,这个错误来自
block_image_update("/dev/block/platform/msm_sdcc.1/by-name/system", package_extract_file(“system.transfer.list”), “system.new.dat.br”, “system.patch.dat”) ||
abort(“E1001: Failed to update system image.”);

但我不懂这是为什么,以及如何解决,
是因为MOTO X国内版和Unified的分区不一样吗?
system.transfer.list中确实记录了一些,看着像地址的东西

所以,这个问题应该怎么解决呢?

尝试更新下rec再试试

目前在用的TWRP已经是最新的3.3.1.0
我又试了最近几个旧版,都是一样的错误

除了TWRP系列还有其他家的Recovery推荐吗…
还有其它的解决渠道没…
我搜到小米那边也有分区问题导致的E1001错误,但是我不知道怎么从分区上解决我的问题…

E1001通常是刷机包里的system镜像大小超过了你的system分区大小。

我在Recovery里的Terminal中,用fdisk看到
这手机的/dev/block/mmcblk0尼玛有39个分区…
当然,只有最后两个分区是system和userdata,分别是1952M和12.2G
这样的话,我可以自由调整这个分区吗?
(按我想法,应该调整的跟MOTO X 2014 Unified版一致)

因为我看到系统刷机包的system.transfer.list中有一些数值,看上去像是绝对地址,但是我不懂,截取一部分:

4
262158
0
0
erase 8,885,7758,266975,294400,295426,523776,524806,708608
new 8,0,183,190,191,206,373,8270,8943
new 2,8943,9967
new 2,9967,10991
new 2,10991,12015
new 2,12015,13039
new 2,13039,14063
new 2,14063,15087
new 2,15087,16111

fdisk -l /dev/block/bootdevice/by-name/system 看看呢?需要精确到字节的大小。

Disk /dev/block/bootdevice/by-name/system: 2046 MB, 2046820352 bytes
4 heads, 16 sectors/track, 62464 cylinders
Units = cylinders of 64 * 512 = 32768 bytes

Disk /dev/block/bootdevice/by-name/system doesn't contain a valid partition table

另外,我找到这么一条旧消息:

欧美版的Moto X(2014)system分区大小是2902458368,2.9G。而xt1085的是2046820352,2.0G。在5.0后,zip包中system.new.dat是由system.img压缩而成的,而生成system.img是这样的:
make_ext4fs -T 0 -S file_contexts -l 2046820352 -a system system_new.img output/
注意 -l 参数,是一般是system分区的大小,不能大于system分区真实大小。问题就在这里,欧美版system分区大生成的imge比国行的大0.9G,所以会导致刷如失败。
mokee能通刷的原因是,mokee回退了CM的OTA方式,依旧使用的是5.0之前的方式。

似乎分区确实是个问题,但……
安卓system分区真的需要这么大吗……
2G还不够吗…
一定可以解决的吧……

嗯,把代码里的分区大小调小一点就好了… @martincz