V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JamesMackerel
V2EX  ›  Android

今天才发现, root 之后不能用 OTA 更新,难受。

  •  
  •   JamesMackerel · 2017-01-06 08:32:09 +08:00 via Android · 26762 次点击
    这是一个创建于 2883 天前的主题,其中的信息可能已经有所发展或是发生改变。
    买了 nexus 6p 之后一直都享受着用最新版本系统的快感(自虐感)。但是后来因为升级到 7.1 之后,通知栏的 bug 被修复,再也无法对流氓应用视而不见,我就折腾了一天 root 了手机装上了冰箱,其间的一波三折略去不表。

    今天醒过来发现 OTA 推送了安全性更新,点击重启之后发现进到了 twrp recovery ,没见他安装更新。去 google 了一下,发现只要不是没有修改过的原厂系统就没法用 OTA 升级。

    作为一个轻度强迫症,现在有点难受。有没有什么折衷的办法?
    86 条回复    2017-03-11 16:37:40 +08:00
    ju5t4fun
        1
    ju5t4fun  
       2017-01-06 08:35:53 +08:00
    恢复原厂设置之后再 OTA
    warlue
        2
    warlue  
       2017-01-06 08:35:57 +08:00 via Android
    绿色守护无 root
    honeycomb
        3
    honeycomb  
       2017-01-06 08:36:32 +08:00 via Android   ❤️ 1
    有啊,直接用工厂镜像,但不是直接运行 flash-all.bat
    要把压缩文件解包自己一个一个用 fastboot 仅刷入需要的部分(bootloader,radio,boot,vendor,system),最后装一下 supersu 就成


    用这个方法更新 pixel 可麻烦了
    warlue
        4
    warlue  
       2017-01-06 08:36:46 +08:00 via Android
    @ju5t4fun root 以后恢复出厂也没用的,只能取消 root 或者刷机
    honeycomb
        5
    honeycomb  
       2017-01-06 08:37:13 +08:00 via Android
    @ju5t4fun 其实这个方法也可以,但没必要了
    lsmgeb89
        6
    lsmgeb89  
       2017-01-06 08:37:35 +08:00
    我到现在 7.1.1 推送都没收到……

    好像看见过有种 root 可以不破坏系统分区里的文件,从而可以 OTA 的。
    JamesMackerel
        7
    JamesMackerel  
    OP
       2017-01-06 08:43:12 +08:00 via Android
    @ju5t4fun 你是说完全恢复到出厂状态吗?那我不得被这些国产应用玩死。
    JamesMackerel
        8
    JamesMackerel  
    OP
       2017-01-06 08:44:28 +08:00 via Android
    @honeycomb 搞那么麻烦,我干脆去买个水果算了。😂😂😂
    TangMonk
        9
    TangMonk  
       2017-01-06 08:46:16 +08:00 via Android
    最新版的 twrp 好像是可以支持 OTA 的
    JamesMackerel
        10
    JamesMackerel  
    OP
       2017-01-06 08:46:33 +08:00 via Android
    @lsmgeb89 瞧你这欲言又止的。反正我是用 trwp 的 recovery 安装的 supersu ,就直接可以用 root 权限了。
    JamesMackerel
        11
    JamesMackerel  
    OP
       2017-01-06 08:48:19 +08:00 via Android
    @TangMonk 我 google 的时候找到了 trwp 的一篇官方博客说不能 OTA ,否则后果自负。如果能的话,怎么没有官方的 feature 公布呢……
    Ellison
        12
    Ellison  
       2017-01-06 08:53:14 +08:00
    systemless
    Jaspr
        13
    Jaspr  
       2017-01-06 08:54:40 +08:00
    FlashFire 是最好的解决方式,类似 OTA 的体验完整刷系统,不容易出问题,同时保留 root ,还可以同时直接刷入其他需要的补丁包
    logbang
        14
    logbang  
       2017-01-06 08:54:51 +08:00 via Android
    没见过 root 后能 ota 的
    herozzm
        15
    herozzm  
       2017-01-06 08:55:28 +08:00
    用 FlashFire 升级
    wclebb
        16
    wclebb  
       2017-01-06 09:09:21 +08:00 via iPhone
    哥,没有 Root 也能玩得转。
    datou
        17
    datou  
       2017-01-06 09:17:03 +08:00
    @Jaspr
    @herozzm

    flashfire 不能识别 android N 的 ota 包
    honeycomb
        18
    honeycomb  
       2017-01-06 09:18:37 +08:00   ❤️ 3
    @JamesMackerel
    这很麻烦吗?

    ./fastboot flash bootloader bootloader.img
    ./fastboot reboot bootloader
    ./fastboot flash radio radio.img
    ./fastboot reboot bootloader
    ./fastboot flash boot boot.img
    ./fastboot flash vendor vendor.img
    ./fastboot flash system system.img

    然后用手机的按钮重启到 recovery(也就是 twrp)

    ./adb sideload supersu.zip
    重启到 system ,完事


    @lsmgeb89
    supersu 默认用一个叫做 systemless 的安装模式,即它只修改 boot 分区,不修改 system 分区
    flashfire 的原理是,临时还原安装 supersu 时备份的原始 boot 分区,然后进行 OTA ,完成后再次安装 systemless 模式的 supersu 。

    这个涉及的手动操作少,但我习惯用上面的办法

    以上做法相当于:
    1 ./fastboot flash boot boot.img
    2 ./fastboot flash recovery recovery.img
    3 重启到官方 recovery ,调出菜单,选择 adb sideload
    4 ./adb sideload [OTA.zip's name]

    对于这种只包含安全更新的小更新,第二步可能是不需要的

    不能直接使用 ota 的原因是,现在 Android 的 OTA 机制是按 block 差分而不是按照文件差分的,所以只能在涉及到的分区完全没有改动过的情况下才能使用。
    honeycomb
        19
    honeycomb  
       2017-01-06 09:20:43 +08:00
    @JamesMackerel
    以前还有一个方法,是把工厂镜像里初上上述提到的.img 以外的文件全删了
    然后把 flash-all.bat 里的"-w"参数去掉,然后运行 flash-all.bat

    原理是一样的,但这种做法更容易失败
    TangMonk
        20
    TangMonk  
       2017-01-06 09:21:22 +08:00
    @JamesMackerel https://twrp.me/faq/officialota.html 不好意思。。说明了不能 OTA

    但是我记得我在刷 twrp 的时候提醒我选个模式,可以支持 OTA (实际上不行,我还以为是我手机问题)
    lsmgeb89
        21
    lsmgeb89  
       2017-01-06 09:23:47 +08:00
    @JamesMackerel 不是我欲言又止,是我已经很久不折腾 Android 了,不了解情况了。
    steveshi
        22
    steveshi  
       2017-01-06 09:35:09 +08:00
    FlashFire +1 简直神器
    honeycomb
        23
    honeycomb  
       2017-01-06 09:41:43 +08:00 via Android
    @TangMonk

    还有一个方法:

    谷歌为亲儿子提供了全量 OTA ,在 twrp 里直接刷它也是可以的。
    ndd200
        24
    ndd200  
       2017-01-06 09:43:34 +08:00
    root 后会有一个权限管理的应用,点进去一般都有个卸载的选项。
    gongguopei87
        25
    gongguopei87  
       2017-01-06 09:47:46 +08:00
    https://source.android.com/security/bulletin/2017-01-01.html#acknowledgements
    We would like to thank these researchers for their contributions:

    好多全家桶的人提 bug 啊。
    hei1000
        26
    hei1000  
       2017-01-06 09:55:44 +08:00 via Android
    "只要不是没有修改过的原厂系统就没法用 OTA 升级"?

    Excuse me ?要不是先看到你的标题我都不知道你在说什么
    magiclu
        27
    magiclu  
       2017-01-06 10:25:26 +08:00
    推荐搞个淘汰掉的 2 手 ios 设备处理国产全家桶,我现在 nexus6 ,没 root ,没装国内软件,没装绿色守护之类的软件,毫无压力,无需折腾
    honeycomb
        28
    honeycomb  
       2017-01-06 10:33:04 +08:00 via Android
    @gongguopei87 看这个架势,去年 Android 说不定是公开了最多 bug 的软件
    whitenight
        29
    whitenight  
       2017-01-06 10:38:50 +08:00
    发现只要不是没有修改过的原厂系统就没法用 OTA 升级
    改成“发现只要修改过的原厂系统就没法用 OTA 升级”
    21grams
        30
    21grams  
       2017-01-06 10:46:02 +08:00 via Android
    第一,用 systemless 的 root
    第二,不要刷 twrp ,保留原生的 recovery
    JamesMackerel
        31
    JamesMackerel  
    OP
       2017-01-06 10:50:10 +08:00 via Android
    @whitenight 双重否定不就是肯定嘛。
    @hei1000 高考语文 89 分,见笑了。

    @Jaspr 谢谢,我去研究一下。

    @wclebb 请问怎么玩?望不吝赐教。

    @honeycomb 这不叫做麻烦,叫做什么呢。人家为了让你点一下重启就能升级到最新版,不知道花费了多少努力……看来最终还是看问题的角度不一样。
    JamesMackerel
        32
    JamesMackerel  
    OP
       2017-01-06 10:51:39 +08:00 via Android
    @honeycomb 就这一个手机,怕变成砖,还是,算了吧。另:windows phone 不算智能手机是吧。(笑)
    Hardrain
        33
    Hardrain  
       2017-01-06 10:52:25 +08:00 via Android
    OTA 的时候 unroot 就好
    解锁了没关系 只要没修改操作系统就能 OTA
    lonelinsky
        34
    lonelinsky  
       2017-01-06 11:02:15 +08:00
    这儿有你想要的一切,不过 ROOT 后 OTA 确实很麻烦

    https://forum.xda-developers.com/nexus-6p/general/guides-how-to-guides-beginners-t3206928
    20015jjw
        35
    20015jjw  
       2017-01-06 11:11:47 +08:00 via Android
    Flashify 貌似就是解决这个问题的
    JamesMackerel
        36
    JamesMackerel  
    OP
       2017-01-06 11:12:26 +08:00 via Android
    @lonelinsky 我搜到了你给我的这个…… 2333333
    msmmbl
        37
    msmmbl  
       2017-01-06 11:29:52 +08:00
    我的 nexus 5x ,用 Nexus Root Toolkit 中的 root ,它会临时启动到第三方 recovery ,并刷入 systemless root 。
    ota 前进入 SuperSU 卸载 root 就好,它会提示是否要恢复改动,选是后就可以正常增量更新了。更新玩后,再用 Nexus Root Toolkit 中的 root 搞一把就好。
    honeycomb
        38
    honeycomb  
       2017-01-06 11:39:53 +08:00 via Android
    @JamesMackerel
    可以理解。

    我用过的亲儿子比较多(大概是 nexus5 就在这么做了)熟悉一些。

    但是一碰到 pixel 那种有两个 slot ,且没 recovery 分区的,第一次上手也紧张的。
    springmarker
        39
    springmarker  
       2017-01-06 11:40:43 +08:00 via Android
    s7 内测 7.0 刚开始的时候,通知栏的 bug 也被修复了,然后各种通知常驻,但是更新了两版之后,这个常驻的"bug"被修复了,不知三星用了什么方法
    honeycomb
        40
    honeycomb  
       2017-01-06 11:41:36 +08:00 via Android
    @msmmbl 是的,因为 fastboot 有一个 boot 命令可以直接载入启动镜像,所以整个安装 supersu 的过程中只有 boot 分区才需要改动
    honeycomb
        41
    honeycomb  
       2017-01-06 11:48:26 +08:00 via Android
    @JamesMackerel

    之所以觉得手动输入一串 fastboot 命令简单,是因为我很清楚这里提到的每一种保留 root 更新系统的方法背后的原理。

    具体用哪一个办法便是无所谓的了,那么最直观的办法=最简单的办法。

    确实少提了一件事:
    我在用自定义的 hosts 文件去广告,所以每次更新完系统总要去改一下 system 分区,如此 flashfire/nexus root toolkit 反倒会增加麻烦。
    yangff
        42
    yangff  
       2017-01-06 11:50:30 +08:00
    用魔改过的 recovery

    别说 root 了,刷了 xposed 照样 OTA
    honeycomb
        43
    honeycomb  
       2017-01-06 11:51:58 +08:00 via Android
    @springmarker
    这个 bug 是直到 7.1 才修复的(改了两个文件,具体在 source.android.com ,可以到 Android police 给的索引上找,非常方便)

    三星可能是在早期的 7.0 测试版中 Cherry pick 了上述补丁,而在最近的测试版里又去掉了它。

    具体可以用 dumpsys 查看国产毒瘤们是否确实做到了不显示通知而使用前台服务,如果做到,则证实了上述判断。
    msmmbl
        44
    msmmbl  
       2017-01-06 12:10:46 +08:00
    @honeycomb 请问大师,安卓系统升级是不是不涉及 userdata 分区的?
    cst4you
        45
    cst4you  
       2017-01-06 12:20:55 +08:00
    主要是 recovery 你改了, 把 recovery 换回去就能继续 OTA
    Jaspr
        46
    Jaspr  
       2017-01-06 12:45:32 +08:00
    @datou 我通常都用 Flashfire 刷整包,刷 OTA 不放心
    honeycomb
        47
    honeycomb  
       2017-01-06 12:48:35 +08:00 via Android
    @msmmbl 是的, OTA 不涉及的。当然你总是可以刻意地删 wipe 掉它。
    jejer
        48
    jejer  
       2017-01-06 13:07:49 +08:00
    用 Island 代替冰箱
    Vicer
        49
    Vicer  
       2017-01-06 13:47:45 +08:00 via Android
    @JamesMackerel 智能定义是啥?
    sunshy
        50
    sunshy  
       2017-01-06 14:04:32 +08:00
    转一个教程供参考
    http://tieba.baidu.com/p/4356345914

    用方法二刷整包无痛更新
    fyl00
        51
    fyl00  
       2017-01-06 14:16:29 +08:00
    @magiclu 梯子用什么?影梭必须 root 才能用啊,我就是一直因为这个才 root
    skylancer
        52
    skylancer  
       2017-01-06 14:28:37 +08:00
    @fyl00 几百年 Android 的 VPN Framework 就支持 Split Exclude ,不知道你还在用哪个版本的 Android
    nyaruko
        53
    nyaruko  
       2017-01-06 17:38:36 +08:00
    下载工厂包,然后把 flash-all.sh 或者 flash-all.bat 里有一句 fastboot update -w 什么的的-w 参数去掉,这样就可以更新系统并且不删除用户数据,然后重刷 twrp 和 supersu 即可
    Numbcoder
        54
    Numbcoder  
       2017-01-06 17:51:02 +08:00
    一直用 iPhone ,最近本来想搞台 Android 玩玩,看到你们的讨论,我还是继续用 iPhone 吧
    addidd
        55
    addidd  
       2017-01-06 17:55:11 +08:00 via Android
    然而 Google 有提供 Full OTA Images
    丢 Recovery 里直接刷就是
    BROWNURSIDAE
        56
    BROWNURSIDAE  
       2017-01-06 18:01:36 +08:00 via Android
    既然你有 twrp 了,直接把完整包的 boot.img system.img 丢进去 twrp 里刷就好了,选择 install image , bootloader 和 radio 刷不刷都没关系
    BROWNURSIDAE
        57
    BROWNURSIDAE  
       2017-01-06 18:03:37 +08:00 via Android   ❤️ 1
    @honeycomb 有 systemless 的 host ,原理就是创建一个 link
    SP00F
        58
    SP00F  
       2017-01-06 18:32:53 +08:00
    Nexus 6P 6.0.1 root 后卡顿严重,电量一般。有冰箱,绿色守护。
    现在 7.1.1 出来以后一直想升级,感觉 root 后个人轻度使用。
    昨晚到官方下了工厂包直接刷回去了,现在升级到 7.1.1 流畅爆表,电量明显提升持久了
    SP00F
        59
    SP00F  
       2017-01-06 18:34:12 +08:00
    对了, Google play 上架了支付宝和 QQ 微信,与官网下载的相比体积缩小不是一点半点,到目前没感觉卡顿等问题。体验非常不错
    JamesMackerel
        60
    JamesMackerel  
    OP
       2017-01-06 19:19:23 +08:00
    @Vicer 嗯,鉴于我是 Windows Phone 一生黑,我就这么说吧:能通过安装第三方的 APP 来扩展功能,这些功能必须包括所有其他大部分手机也能提供的,例如**移动支付**。

    @sunshy 大神,我打开 FlashFire 之后,并没有 Flash 这个选项……他好像没发现我已经下好了 OTA 包。我决定刷回原厂 recovery 试试。

    @Numbcoder 嗯,等下一部手机我也打算换 iPhone 了。
    JamesMackerel
        61
    JamesMackerel  
    OP
       2017-01-06 19:39:38 +08:00
    @SP00F 你用 QQ 的时候,通知栏没有黑色的框吗?
    sunshy
        62
    sunshy  
       2017-01-06 19:39:40 +08:00
    @JamesMackerel flashfire 不支持检测 Android 7 的 OTA 包,建议下整包更新

    整包要按方法二操作,整个过程用手机可以完成
    magiclu
        63
    magiclu  
       2017-01-06 20:07:39 +08:00
    @fyl00 ss 不 root ,我开机第一次能连上,但是之后断开后就连不上了,重启能解决,我还以为是软件有问题,之前 cm 下倒是没问题,我平时都用路由器里的 ss ,实在不行还有 anyconnect
    magiclu
        64
    magiclu  
       2017-01-06 20:11:55 +08:00
    @JamesMackerel Windows Phone 安全性强,可以跑 2 步验证器之类的 app
    JamesMackerel
        65
    JamesMackerel  
    OP
       2017-01-06 20:37:18 +08:00
    @magiclu 嗯,我饿了,叫个外卖给我。还有,我想打个车。另外,我忘了带钱包,这里可以用微信, Windows Phone 给我付一个?这些就算了,不说了,老生常谈了。我最怕的是我再买一个 WP ,然后过了几天他又降价了几百块。过了几个月,发现美亚上面买一送一。过了半年,微软发个公告说我们将要做 Windows 11 了,将会支持所有的设备,又过了半年,说不好意思我们支持不了你的那个型号,你滚粗吧。
    JamesMackerel
        66
    JamesMackerel  
    OP
       2017-01-06 20:38:32 +08:00
    @sunshy 我觉得……算了。我就放他在那里,反正我现在要戒手机了。这手机能给女朋友打个电话,能看微信上的通知,我就满足了。以后买个苹果再玩。
    etby
        67
    etby  
       2017-01-06 20:51:39 +08:00
    我自己用的 eng 的系统, 用的话是有 root 的 shell 的
    ghost444
        68
    ghost444  
       2017-01-06 21:32:18 +08:00 via Android
    @magiclu 要安全还是直接上 BlackBerry 吧……至于两步验证, Google authenticator 或者 Authy 都挺不错的…
    P99LrYZVkZkg
        69
    P99LrYZVkZkg  
       2017-01-06 22:03:19 +08:00
    谁能告诉我 6p 为什么这个月发了 2 个 image ,和每月一更不一样了?
    Lentin
        71
    Lentin  
       2017-01-06 22:20:26 +08:00
    此贴终结
    SP00F
        72
    SP00F  
       2017-01-06 22:30:41 +08:00
    @JamesMackerel 我直接屏蔽了,看得难受……强迫症犯了。
    根本就关不掉, Google play 下的 QQ
    SP00F
        73
    SP00F  
       2017-01-06 22:31:58 +08:00
    @JamesMackerel 黑框有,但是不影响,打开是正常的,只是切换的时候会看到框。我不能忍的是状态栏里的提示正在运行关不掉
    woyaojizhu8
        74
    woyaojizhu8  
       2017-01-06 23:50:08 +08:00
    这样就难受了,楼主还是不要用智能机了
    折腾安卓还是建议不要追新版本,新版本坑太多,下游还没跟进,比如现在 xposed 还不支持 7.1
    magisk 声称可以实现 root 后继续 ota, 但我想它也没能力在一个安卓新版本出来后马上适配吧
    shijingshijing
        75
    shijingshijing  
       2017-01-06 23:53:23 +08:00
    @honeycomb 我觉着你把 android 折腾到了一种境界。。。
    woyaojizhu8
        76
    woyaojizhu8  
       2017-01-06 23:59:02 +08:00
    安全性更新有什么好升的,它不就是用来阻止你 root 的吗?
    jinhan13789991
        77
    jinhan13789991  
       2017-01-07 00:22:16 +08:00 via Android
    目前还是 6.1 。因为新版没有 xposed
    honeycomb
        78
    honeycomb  
       2017-01-07 00:23:49 +08:00
    @woyaojizhu8
    这是什么话

    能解锁 bootloader 的 android 设备从一开始就是把这个机制用来让使用者任意修改手机的
    何须用那些漏洞来获得 root ?
    JamesMackerel
        79
    JamesMackerel  
    OP
       2017-01-07 02:48:52 +08:00 via Android
    @Lentin 然而我试了,他好像还没支持 7 。
    honeycomb
        80
    honeycomb  
       2017-01-07 07:52:51 +08:00 via Android
    @shijingshijing
    可是不这么做的话,(在不使用 iOS 的前提下)怎么对付国产流氓呢
    tairan2006
        81
    tairan2006  
       2017-01-07 08:30:36 +08:00
    没怎么不行的。。就是麻烦点
    wclebb
        82
    wclebb  
       2017-01-07 09:44:30 +08:00
    说出来你可能对我感到失望。
    就是尽可能多的情况下,对系统功能熟悉到极致——是否有必要给予不必要的权限,先不给,运行不了再给。
    然后安装楼上都提到的:不 Root 的绿色守护(里面有个功能能锁屏并自动退出应用)。
    接着,即使来自 Google Play 也是没办法的,只要不违反 Google Play 相关规定,就算可以了,即使它相互呼唤唤醒应用也是不管的。所以这样的情况下,我唯一的选项只有:不去安装它。减少可怜不必要的 KPI 。

    不过我已经换 iPhone 一年多了,之前用的是 Nexus 4 手机,用的也是绿色守护不 Root 的生活用了三年,有时时不时突然发热没电了之外,基本上都是正常使用的。现在基本知识点都是停留在 Nexus 4 了。

    同学问我啥手机我随口随机了 Pixel (我以为他会觉得美国海淘什么太难买不想买)。
    结果他看了一下说 OK ,就决定它了,于是我只能苦逼地陪他海淘种种。

    然后教他过程中,绿色守护好像因为某种奇怪的原因工作模式下是无法踢走的。
    好像用电脑连接授权或不知道是啥命令,但我没空所以没到这里了。

    不 Root 的情况下尽可能发挥对手机各种功能和合理化范围去优化。
    也算是另一种的折腾,如果你乐意。(所以我 HTC Hero 到 Nexus One , Nexus S , Nexus 4 都是无 Root )
    因为我觉得,我用的是工具,不是用工具来对工具改造。

    当然,以上只是另外一种的使用方式。
    如果酷爱 Root 的你,大概不适合你。
    Jobin0528
        83
    Jobin0528  
       2017-01-07 09:49:06 +08:00
    借楼问下,哪里有看到关于官方刷机包里各个文件说明。
    如果只想升级不抹掉数据是只用去掉 flash-all.sh 里最后一行的-w 还是得不刷 userdata.img ?
    springz
        84
    springz  
       2017-01-07 12:05:05 +08:00
    @warlue 取消 root 之后也不可以 OTA ,因为 system 已经更改过了
    springz
        85
    springz  
       2017-01-07 12:06:04 +08:00
    可以直接完整包更新,再 root 一下就好了
    woyaojizhu8
        86
    woyaojizhu8  
       2017-03-11 16:37:40 +08:00
    @honeycomb #78 我用的是三星,就我的经验来说,这些安全性更新不止是封堵利用漏洞 root 的行为而已。即使你是解锁 bootloader 之后再通过“正当”的途径修改系统,往往也会被这些“安全措施”恶心到,遇到重重阻碍。我也奇怪为什么能解锁 bootloader 还要设置这么多阻碍。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5455 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 09:14 · PVG 17:14 · LAX 01:14 · JFK 04:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.