JamesMackerel
V2EX  ›  Android

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

  •  
  •   JamesMackerel · Jan 6, 2017 via Android · 32418 views
    This topic created in 3593 days ago, the information mentioned may be changed or developed.
    买了 nexus 6p 之后一直都享受着用最新版本系统的快感(自虐感)。但是后来因为升级到 7.1 之后,通知栏的 bug 被修复,再也无法对流氓应用视而不见,我就折腾了一天 root 了手机装上了冰箱,其间的一波三折略去不表。

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

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


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

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

    flashfire 不能识别 android N 的 ota 包
    honeycomb
    honeycomb
    Jan 6, 2017❤️3
    18
    @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
    honeycomb
    Jan 6, 2017
    19
    @JamesMackerel
    以前还有一个方法,是把工厂镜像里初上上述提到的.img 以外的文件全删了
    然后把 flash-all.bat 里的"-w"参数去掉,然后运行 flash-all.bat

    原理是一样的,但这种做法更容易失败
    TangMonk
    TangMonk
    Jan 6, 2017
    20
    @JamesMackerel https://twrp.me/faq/officialota.html 不好意思。。说明了不能 OTA

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

    还有一个方法:

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

    好多全家桶的人提 bug 啊。
    hei1000
    hei1000
    Jan 6, 2017 via Android
    26
    "只要不是没有修改过的原厂系统就没法用 OTA 升级"?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    能解锁 bootloader 的 android 设备从一开始就是把这个机制用来让使用者任意修改手机的
    何须用那些漏洞来获得 root ?
    JamesMackerel
    JamesMackerel
    OP
    Jan 7, 2017 via Android
    79
    @Lentin 然而我试了,他好像还没支持 7 。
    honeycomb
    honeycomb
    Jan 7, 2017 via Android
    80
    @shijingshijing
    可是不这么做的话,(在不使用 iOS 的前提下)怎么对付国产流氓呢
    keenkiller
    keenkiller
    Jan 7, 2017
    81
    没怎么不行的。。就是麻烦点
    wclebb
    wclebb
    Jan 7, 2017
    82
    说出来你可能对我感到失望。
    就是尽可能多的情况下,对系统功能熟悉到极致——是否有必要给予不必要的权限,先不给,运行不了再给。
    然后安装楼上都提到的:不 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
    Jobin0528
    Jan 7, 2017
    83
    借楼问下,哪里有看到关于官方刷机包里各个文件说明。
    如果只想升级不抹掉数据是只用去掉 flash-all.sh 里最后一行的-w 还是得不刷 userdata.img ?
    springz
    springz
    Jan 7, 2017
    84
    @warlue 取消 root 之后也不可以 OTA ,因为 system 已经更改过了
    springz
    springz
    Jan 7, 2017
    85
    可以直接完整包更新,再 root 一下就好了
    woyaojizhu8
    woyaojizhu8
    Mar 11, 2017
    86
    @honeycomb #78 我用的是三星,就我的经验来说,这些安全性更新不止是封堵利用漏洞 root 的行为而已。即使你是解锁 bootloader 之后再通过“正当”的途径修改系统,往往也会被这些“安全措施”恶心到,遇到重重阻碍。我也奇怪为什么能解锁 bootloader 还要设置这么多阻碍。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   702 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 93ms · UTC 17:54 · PVG 01:54 · LAX 09:54 · JFK 12:54
    ♥ Do have faith in what you're doing.