二凌地面数字户户通接收机怎么升级ota升级失败是什么原因

博客访问: 231514
博文数量: 104
博客积分: 2247
博客等级: 大尉
技术积分: 924
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 嵌入式
前言前面介绍了ota package 的编译过程,其中最核心的部分就是一个 python 脚本:ota_from_target_files. 现在我们分析这个脚本。====================================================================不带任何参数,先看一下它的帮助:$ ./ota_from_target_files &&Given a target-files zipfile, produces an OTA package that installs &that build. &An incremental OTA is produced if -i is given, otherwise &&a full OTA is produced. &&&Usage: &ota_from_target_files [flags] input_target_files output_ota_package && -b &(--board_config) & && & & Deprecated. &&&& -k &(--package_key) & && & & Key to use to sign the package (default is && & & "build/target/product/security/testkey"). &&&& -i &(--incremental_from) & && & & Generate an incremental OTA using the given target-files zip as && & & the starting build. &&&& -w &(--wipe_user_data) && & & Generate an OTA package that will wipe the user data partition && & & when installed. &&&& -n &(--no_prereq) && & & Omit the timestamp prereq check normally included at the top of && & & the build scripts (used for developer OTA packages which && & & legitimately need to go back and forth). && -e &(--extra_script) & && & & Insert the contents of file at the end of the update script. &&&& -m &(--script_mode) & &&& & & Specify 'amend' or 'edify' scripts, or 'auto' to pick && & & automatically (this is the default). &&&& -p &(--path) & && & & Prepend /bin to the list of places to search for binaries && & & run by this script, and expect to find jars in /framework. &&&& -s &(--device_specific)
&& & & Path to the python module containing device-specific && & & releasetools code. &&&& -x &(--extra) & &&& & & Add a key/value pair to the 'extras' dict, which device-specific && & & extension code may look at. &&&& -v &(--verbose) &&& & & Show command lines being executed. &&&& -h &(--help) && & & Display this usage message and exit. &&&简单翻译一下:-b 过时,不再使用。-k 签名用的密钥-i 生成增量OTA包时用于定义对比包-w 是否清除 userdata 分区-n 是否在升级时不检查时间戳,缺省情况下只能基于老的版本升级。-e 定义额外运行的脚本-m 定义采用的脚本格式,目前有两种,amend & edify, 其中amend为较老的格式。对应的,升级时会采用不同的解释器。缺省情况下,ota_from_target_files 会同时生成两个脚本。这提供了最大灵活性。-p 定义脚本用到的一些可执行文件的路径-s 定义额外运行的脚本的路径-x 定义额外运行的脚本可能用到的键/值对-v 老朋友,冗余模式,让脚本打印出执行的命令-h 老朋友,这个就不用说了吧。我们调用如下命令生成我们的升级包:&./build/tools/releasetools/ota_from_target_files \& -m auto \& -p out/host/linux-x86 \& -k build/target/product/security/testkey -n \out/target/product/{product-name}/obj/PACKAGING/target_files_intermediates/{product-name}-target_files-eng.{uid}.zip {output_zip}再看内容ota_from_target_files为python 脚本,所以如果懂 python, 会更顺利一点。文件有1000行。分析过程中,我们只是贴代码片段。 完整文件见:build/tools/releasetools/ota_from_target_files (from Android 2.2)=====================================================================入口:main按照python惯例,单独执行的代码执行从__main__开始:944 if __name__ == '__main__':945 & try:946 & & main(sys.argv[1:])947 & except common.ExternalError, e:948 & & print949 & & print " & ERROR: %s" % (e,)950 & & print951 & & sys.exit(1)&它调用 main 函数:&844 def main(argv): &845 &&846 & def option_handler(o, a): &847 & & if o in ("-b", "--board_config"): &848 & & & pass & # deprecated &849 & & elif o in ("-k", "--package_key"): &850 & & & OPTIONS.package_key = a &851 & & elif o in ("-i", "--incremental_from"): &852 & & & OPTIONS.incremental_source = a &853 & & elif o in ("-w", "--wipe_user_data"): &854 & & & OPTIONS.wipe_user_data = True &855 & & elif o in ("-n", "--no_prereq"): &856 & & & OPTIONS.omit_prereq = True &857 & & elif o in ("-e", "--extra_script"): &858 & & & OPTIONS.extra_script = a &859 & & elif o in ("-m", "--script_mode"): &860 & & & OPTIONS.script_mode = a &861 & & elif o in ("--worker_threads"): &862 & & & OPTIONS.worker_threads = int(a) &863 & & else: &864 & & & return False &865 & & return True &866 &&867 & args = common.ParseOptions(argv, __doc__, &868 & & & & & & & & & & & & & & &extra_opts="b:k:i:d:wne:m:", &869 & & & & & & & & & & & & & & &extra_long_opts=["board_config=", &870 & & & & & & & & & & & & & & & & & & & & & & & "package_key=", &871 & & & & & & & & & & & & & & & & & & & & & & & "incremental_from=", &872 & & & & & & & & & & & & & & & & & & & & & & & "wipe_user_data", &873 & & & & & & & & & & & & & & & & & & & & & & & "no_prereq", &874 & & & & & & & & & & & & & & & & & & & & & & & "extra_script=", &875 & & & & & & & & & & & & & & & & & & & & & & & "script_mode=", &876 & & & & & & & & & & & & & & & & & & & & & & & "worker_threads="], &877 & & & & & & & & & & & & & & &extra_option_handler=option_handler) &878 &&879 & if len(args) != 2: &880 & & common.Usage(__doc__) &881 & & sys.exit(1) &&将用户设定的 Option 存入 OPTIONS 变量中。它是一个Python Class, 我们将其理解为一个C Struct 即可。883 & if OPTIONS.script_mode not in ("amend", "edify", "auto"):884 & & raise ValueError('unknown script mode "%s"' % (OPTIONS.script_mode,))&Script_mode 只能是amend/edify/auto之一, auto 目前是选择两者都支持。可以理解是为了向前兼容,(早期 Android 使用 amend)886 & if OPTIONS.extra_script is not None:887 & & OPTIONS.extra_script = open(OPTIONS.extra_script).read()&读入 额外脚本的内容。(如果有)889 & print "unzipping target target-files..."890 & OPTIONS.input_tmp = common.UnzipTemp(args[0])&解开输入包。892 & if OPTIONS.device_specific is None: &893 & & # look for the device-specific tools extension location in the input &894 & & try: &895 & & & f = open(os.path.join(OPTIONS.input_tmp, "META", "tool-extensions.txt")) &896 & & & ds = f.read().strip() &897 & & & f.close() &898 & & & if ds: &899 & & & & ds = os.path.normpath(ds) &900 & & & & print "using device-specific extensions in", ds &901 & & & & OPTIONS.device_specific = ds &902 & & except IOError, e: &903 & & & if e.errno == errno.ENOENT: &904 & & & & # nothing specified in the file &905 & & & & pass &906 & & & else: &907 & & & & raise & &处理 device-specific extensions, 没用到。909 & common.LoadMaxSizes()910 & if not OPTIONS.max_image_size:911 & & print912 & & print " &WARNING: &Failed to
will not enforce"913 & & print " &image size limits."914 & & print&读入设定image大小的参数,没用到。916 & OPTIONS.target_tmp = OPTIONS.input_tmp917 & input_zip = zipfile.ZipFile(args[0], "r")918 & if OPTIONS.package_key:919 & & temp_zip_file = tempfile.NamedTemporaryFile()920 & & output_zip = zipfile.ZipFile(temp_zip_file, "w",921 & & & & & & & & & & & & & & & & &compression=zipfile.ZIP_DEFLATED)922 & else:923 & & output_zip = zipfile.ZipFile(args[1], "w",924 & & & & & & & & &compression=zipfile.ZIP_DEFLATED)&设定输出文件,如果要签名(our case),则还需要一个临时输出文件。926 & if OPTIONS.incremental_source is None:927 & & WriteFullOTAPackage(input_zip, output_zip)928 & else:929 & & print "unzipping source target-files..."930 & & OPTIONS.source_tmp = common.UnzipTemp(OPTIONS.incremental_source)931 & & source_zip = zipfile.ZipFile(OPTIONS.incremental_source, "r")932 & & WriteIncrementalOTAPackage(input_zip, source_zip, output_zip)&根据参数,调用增量和非增量创建 ZIP 创建函数,我们采用非增量模式。934 & output_zip.close()935 & if OPTIONS.package_key:936 & & SignOutput(temp_zip_file.name, args[1])937 & & temp_zip_file.close()939 & common.Cleanup()941 & print "done."&签名(如果需要的话),处理完毕。&下面我们看主要功能函数:WriteFullOTAPackage。主功能:WriteFullOTAPackage345 def WriteFullOTAPackage(input_zip, output_zip):346 & if OPTIONS.script_mode == "auto":347 & & script = both_generator.BothGenerator(2)348 & elif OPTIONS.script_mode == "amend":349 & & script = amend_generator.AmendGenerator()350 & else:351 & & # TODO: how to determine this? &We don't know what version it will352 & & # be installed on top of. &For now, we expect the API just won't353 & & # change very often.354 & & script = edify_generator.EdifyGenerator(2)&首先,我们获得脚本生成器,他们的实现见脚本:edify_generator.py 等。356 & metadata = {"post-build": GetBuildProp("ro.build.fingerprint", input_zip),357 & & & & & & & "pre-device": GetBuildProp("ro.product.device", input_zip),358 & & & & & & & "post-timestamp": GetBuildProp("ro.build.date.utc", input_zip),359 & & & & & & & }&获得一些环境变量,来自android 环境变量。 Google 一下即知其义。361 & device_specific = common.DeviceSpecificParams(362 & & & input_zip=input_zip,363 & & & input_version=GetRecoveryAPIVersion(input_zip),364 & & & output_zip=output_zip,365 & & & script=script,366 & & & input_tmp=OPTIONS.input_tmp,367 & & & metadata=metadata)&设备相关参数,不深究。369 & if not OPTIONS.omit_prereq:370 & & ts = GetBuildProp("ro.build.date.utc", input_zip)371 & & script.AssertOlderBuild(ts)&如果需要,在脚本中增加一个Assert语句,要求update zip包只能用于升级老的系统。373 & AppendAssertions(script, input_zip)&如果需要,在脚本中增加一个Assert语句,要求update zip包只能用于同一设备,即目标设备的 ro.product.device 必须跟update.zip中的相同。374 & device_specific.FullOTA_Assertions()&Callback, 用于调用设备相关代码。调用时机为即将开始升级。类似还有:FullOTA_InstallEnd IncrementalOTA_Assertions IncrementalOTA_VerifyEnd。 不深究。376 & script.ShowProgress(0.5, 0)&在升级脚本中加入显示进度的语句, 参数一表示底下的操作(到下一条同类语句或者到末尾)将暂用的时间在总体时间的比例。参数二用于控制显示的速度。比如,50 则表示底下的操作估计50秒内完成,要求进度条显示线程用50秒显示这一部分的进度。0 表示不自动更新,手动控制(使用SetProgress)378 & if OPTIONS.wipe_user_data:379 & & script.FormatPartition("userdata")&如果需要,在脚本中增加语句,擦除 userdata 分区。381 & script.FormatPartition("system")&在脚本中增加语句,擦除 system分区。382 & script.Mount("MTD", "system", "/system")&在脚本中增加语句,安装 system分区到 /system 目录。383 & script.UnpackPackageDir("recovery", "/system")384 & script.UnpackPackageDir("system", "/system")在脚本中增加语句,将recovery以及system中的内容拷贝到 /system目录。其中recovery 目录包含一个patch 以及应用该patch 的脚本。&386 & symlinks = CopySystemFiles(input_zip, output_zip)387 & script.MakeSymlinks(symlinks)&386 行从输入 ZIP 包 /system 拷贝文件到输出 ZIP 包 /system。由于这个过程不支持链接文件,所以它将这些文件返回。 于 387 行做继续处理。该行建立这些link 文件。所有的link文件都指向 toolbox&389 & boot_img = File("boot.img", common.BuildBootableImage(390 & & & os.path.join(OPTIONS.input_tmp, "BOOT")))391 & recovery_img = File("recovery.img", common.BuildBootableImage(392 & & & os.path.join(OPTIONS.input_tmp, "RECOVERY")))393 & MakeRecoveryPatch(output_zip, recovery_img, boot_img)&这个复杂,MakeRecoveryPatch 做了两件事:1.在输出 ZIP包中生成一个patch: recovery/recovery-from-boot.p(boot.img和 recovery.img的patch), 它最后会位于:system/recovery-from-boot.p2.在输出 ZIP包中生成一个脚本:recovery/etc/install-recovery.sh , 它最后会位于system/etc/install-recovery.sh.该脚本的内容为:#!/system/bin/shif ! applypatch -c MTD:recovery:ffb86a4a16cb26a; then& log -t recovery "Installing new recovery image"& applypatch MTD:boot:a72a20a9c2f958ba586a840ed773cf8f5244183 MTD:recovery f6c2a70c5f2b02b6a49c9f5ce2d389 a72a20a9c2f958ba586a840ed773cf8f5244183:/system/recovery-from-boot.pelse& log -t recovery "Recovery image already installed"fi&395 & Item.GetMetadata(input_zip)&从 META/filesystem_config.txt 中获得 system 目录下的各文件权限信息。&&396 & Item.Get("system").SetPermissions(script)&在脚本中增加语句,设置 system 目录下文件的权限及属主等。&398 & common.CheckSize(boot_img.data, "boot.img")&检查 boot.img 文件大小是否超标.&399 & common.ZipWriteStr(output_zip, "boot.img", boot_img.data)&将boot.img 放到输出 ZIP 包中。&400 & script.ShowProgress(0.2, 0)402 & script.ShowProgress(0.2, 10)&更行进度条。&403 & script.WriteRawImage("boot", "boot.img")&在脚本中增加语句,将 boot.img 写到 boot 分区。&405 & script.ShowProgress(0.1, 0)&更行进度条。&406 & device_specific.FullOTA_InstallEnd()&Callback, 同前。&408 & if OPTIONS.extra_script is not None:409 & & script.AppendExtra(OPTIONS.extra_script)&如果有额外脚本,加入。&411 & script.UnmountAll()&在脚本中增加语句,umount 所有分区。&412 & script.AddToZip(input_zip, output_zip)&1)将前面生成的脚本输出到:META-INF/com/google/android/updater-script (对于edify)&assert(getprop("ro.product.device") == "thedevicename" || &&&& & & &getprop("ro.build.product") == "theproductname"); &&&show_progress(0.); &&&format("MTD", "system"); &&&mount("MTD", "system", "/system"); &&&package_extract_dir("recovery", "/system"); &&&package_extract_dir("system", "/system"); &&&symlink("dumpstate", "/system/bin/dumpcrash"); &&&symlink("toolbox", "/system/bin/cat", "/system/bin/chmod", &&&& & & & "/system/bin/chown", "/system/bin/cmp", "/system/bin/date", &&&& & & & "/system/bin/dd", "/system/bin/df", "/system/bin/dmesg", &&&& & & & "/system/bin/fb2bmp", "/system/bin/getevent", "/system/bin/getprop", &&&& & & & "/system/bin/hd", "/system/bin/id", "/system/bin/ifconfig", &&&& & & & "/system/bin/iftop", "/system/bin/insmod", "/system/bin/ioctl", &&&& & & & "/system/bin/kill", "/system/bin/ln", "/system/bin/log", &&&& & & & "/system/bin/ls", "/system/bin/lsmod", "/system/bin/mkdir", &&&& & & & "/system/bin/mount", "/system/bin/mv", "/system/bin/netstat", &&&& & & & "/system/bin/newfs_msdos", "/system/bin/notify", "/system/bin/printenv", &&&& & & & "/system/bin/ps", "/system/bin/reboot", "/system/bin/renice", &&&& & & & "/system/bin/rm", "/system/bin/rmdir", "/system/bin/rmmod", &&&& & & & "/system/bin/route", "/system/bin/schedtop", "/system/bin/sendevent", &&&& & & & "/system/bin/setconsole", "/system/bin/setprop", "/system/bin/sleep", &&&& & & & "/system/bin/smd", "/system/bin/start", "/system/bin/stop", &&&& & & & "/system/bin/sync", "/system/bin/top", "/system/bin/umount", &&&& & & & "/system/bin/vmstat", "/system/bin/watchprops", &&&& & & & "/system/bin/wipe"); &&&set_perm_recursive(0, 0, , "/system"); &&&set_perm_recursive(0, , 0755, "/system/bin"); &&&set_perm(0, , "/system/bin/netcfg"); &&&set_perm(0, , "/system/bin/ping"); &&&set_perm_recursive(, , "/system/etc/bluez"); &&&set_perm(0, 0, 0755, "/system/etc/bluez"); &&&set_perm(, 0440, "/system/etc/dbus.conf"); &&&set_perm(, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks"); &&&set_perm(0, , "/system/etc/init.goldfish.sh"); &&&set_perm(0, 0, 0544, "/system/etc/install-recovery.sh"); &&&set_perm_recursive(0, 0, , "/system/etc/ppp"); &&&set_perm_recursive(0, , 0755, "/system/xbin"); &&&show_progress(0.); &&&show_progress(0.); &&&assert(package_extract_file("boot.img", "/tmp/boot.img"), &&&& & & &write_raw_image("/tmp/boot.img", "boot"), &&&& & & &delete("/tmp/boot.img")); &&&show_progress(0.); &&&unmount("/system"); &&&2)将升级程序:OTA/bin/updater 从输入ZIP包中拷贝到输出ZIP包中的:META-INF/com/google/android/update-binary&413 & WriteMetadata(metadata, output_zip)将前面获取的metadata 写入输出包的文件中: META-INF/com/android/metadata至此,我们就得到了一个update.zip包。可以开始升级了。=====================================================================思考虽然提供了更新recovery分区的机制,但是没有看到触发该更新的语句。所以,缺省的情况是不会更新recovery分区的。大概是为了安全的原因吧。 但是,有时确实需要更新recovery 分区(比如,设备的硬件配置、分区表等发生改变),这该如何操作呢?=====================================================================转载:http://blog.csdn.net/zjujoe/archive//6209393.aspx
阅读(2981) | 评论(0) | 转发(1) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。查看: 2395|回复: 30
凌博72302一个不爽的问题
主题帖子好友
主题帖子好友
[LV.9]-少尉, 积分 2734, 距离下一级还需 866 积分
金币3597 枚
在线时间552 小时
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
就是只要开起E-ABS电磁刹车的时候,只要捏一下刹把在松开,车子要过一秒钟才能启动。也就是说刹车后有一秒种的空白时间。特别转弯刹车时或是车速慢的刹车,车子很有可能会倒(我是经常拉货,货有些重,车子倒N次了),而且这样在操控上很不爽,刹车后转把扭的多会出现在一下窜出去的感觉,不好把握的很危险。调成线性加速也一样。普通的控制器没这个毛病。
主题帖子好友
主题帖子好友
[LV.7]-五级士官, 积分 1248, 距离下一级还需 552 积分
金币1794 枚
在线时间320 小时
正弦波的特性就这样&&就像你起步一样很线性
主题帖子好友
主题帖子好友
[LV.10]-中尉, 积分 4850, 距离下一级还需 150 积分
金币5437 枚
在线时间1013 小时
那就不要开EABS啊
主题帖子好友
头像被屏蔽
主题帖子好友
金币2818 枚
在线时间572 小时
提示: 作者被禁止或删除 内容自动屏蔽
主题帖子好友
主题帖子好友
金币102538 枚
鲜花331 朵
在线时间2472 小时
咨询厂家看看,那的问题
主题帖子好友
主题帖子好友
[LV.8]-六级士官, 积分 1890, 距离下一级还需 710 积分
金币3250 枚
在线时间614 小时
正弦波的特性就这样&&就像你起步一样很线性
不要乱说,我的正弦波松刹车瞬间启动(非凌博的)
主题帖子好友
主题帖子好友
金币102538 枚
鲜花331 朵
在线时间2472 小时
拆掉刹车断电看看
主题帖子好友
主题帖子好友
[LV.7]-五级士官, 积分 1248, 距离下一级还需 552 积分
金币1794 枚
在线时间320 小时
不要乱说,我的正弦波松刹车瞬间启动(非凌博的)
加速没延时?你的是矢量正弦波吗?
主题帖子好友
主题帖子好友
[LV.9]-少尉, 积分 2956, 距离下一级还需 644 积分
金币3091 枚
在线时间881 小时
刹把碰到断电开关,重新把刹车往上面弄就可以了,我现在也是经常这个问题。
主题帖子好友
主题帖子好友
[LV.8]-六级士官, 积分 1890, 距离下一级还需 710 积分
金币3250 枚
在线时间614 小时
加速没延时?你的是矢量正弦波吗?
博思通&&萨博&&你说是不是呢
手机客户端达人勋章
电动车联盟第二届DIY大赛评委勋章
中国心勋章
表明中国凝聚力,以此表达对祖国的热爱。
该会员热爱论坛,在线时间比较长
Powered by后使用快捷导航没有帐号?
查看: 5939|回复: 97
在线时间 小时
立即注册,加入爱黑武论坛的大家庭!爱黑武,爱上搞机生活!
才可以下载或查看,没有帐号?
本帖最后由 新锐锋芒 于
23:06 编辑
文件名:Blur_Version.22.21.11.victara_verizon.verizon.en.US.zip
基于底包:
文件大小:497.8M
系统区域:New Moto X 第二代 XT1096 美国Verizon版
升级前版本:22.21.11.victara_verizon.verizon.en.US
升级后版本:
升级方式:手动recovery执行升级
温馨提示:
1、请注意你的New Moto X为第二代 XT1096 美国Verizon版,且保证系统100%纯官方系统,未root,未删减任何程序。
2、官方OTA升级会升级bootloader等级,并无法降级。
5.1 OTA包下载:
游客,如果您要查看本帖隐藏内容请
爱黑武,爱上搞机生活!
在线时间 小时
多久能有底包啊,OTA出了问题,重力感应直接失效
爱黑武,爱上搞机生活!
在线时间 小时
1、请注意你的New Moto X为第二代 XT1096 美国Verizon版,且保证系统100%纯官方系统,未root,未删减任何程序。
爱黑武,爱上搞机生活!
在线时间 小时
››››参与/回复主题
爱黑武,爱上搞机生活!
在线时间 小时
moto粉丝一枚,感谢黑武楼主的分享!!!
爱黑武,爱上搞机生活!
在线时间 小时
dhdufufhcufufufucufu
爱黑武,爱上搞机生活!
在线时间 小时
升级升级升级,谢谢
爱黑武,爱上搞机生活!
在线时间 小时
支持看看啊
爱黑武,爱上搞机生活!
在线时间 小时
刷机有风险,需谨慎~~不建议OTA,建议等完整包~~
爱黑武,爱上搞机生活!
在线时间 小时
感谢楼主分享
爱黑武,爱上搞机生活!
站长推荐 /1
最新手机新闻资讯尽在爱黑武!爱黑武,为了我们共同的热爱而热爱。
Powered by Discuz &
湘ICP备号 | 京公网安备号后使用快捷导航没有帐号?
只需一步,快速开始
查看: 75839|回复: 596
在线时间150 小时经验值527 最后登录注册时间帖子阅读权限160UID748313
TA的每日心情开心 00:57签到天数: 2 天[LV.1]初来乍到
G币107 最后登录注册时间
马上注册,结交更多机友,下载更多应用,让你轻松玩转手机。
已有帐号?   下载游戏和软件,请【】进入机锋市场!
本帖最后由 boom1212 于
15:44 编辑
情况一.没有解锁ROOT,能收到OTA升级的提示。
& &&&这种情况自然最简单,点击检查更新,Nexus7Ⅱ会自动下载更新进行升级
情况二.没有解锁ROOT,但收不到OTA升级的提示。
& && &这种情况可以自行下载好升级包,放到Nexus7Ⅱ根目录,再用TWRP等第三方recovery刷入。
& && & 什么?!不知道如何刷入TWRP?参照这里 二代Nexus7Ⅱ一键解锁ROOT工具--by爱折腾&&
情况三.已经解锁ROOT了,虽然能收到OTA升级,但是并不能成功刷入。
& & 这种情况有三种解决方案:推荐使用方法一
& &&&方法一,先把SuperSU的ota补丁包UPDATE-SuperSU-ota.zip放入Nexus7Ⅱ根目录,用TWRP等第三方recovery刷入后重启;
& && && && && && & 再把升级包放入Nexus7Ⅱ根目录,用TWRP等第三方recovery即可成功刷入;
& && && && && && & 成功刷入升级包后重启,会发现ROOT已经失效,对此只需要重新刷入UPDATE-SuperSU-v1.51.zip即可。
& && && && && && &上述方法的前提条件是:在解锁ROOT时刷入的SuperSU版本是V1.51,如果不是的话,烦请先解除ROOT,刷入UPDATE-SuperSU-v1.51.zip后再按上述说明操作。
& &&&方法二,解除ROOT之后,自行下载好升级包,放到Nexus7Ⅱ根目录,再用TWRP等第三方recovery刷入,升级完之后再重新ROOT(其实也就是再刷入多一个“SuperSU.zip”啦)。
& && && && && && & 什么?!不知如何解除ROOT?参照这里 二代Nexus7Ⅱ解除ROOT、恢复原生Recovery、上锁工具--by爱折腾&&
& &&&方法三,不用解除ROOT,下载修改好的升级包,放到Nexus7Ⅱ根目录,再用TWRP等第三方recovery刷入,升级完之后依然能保留ROOT。
其它.如果还刷了第三方内核的话,可以参照下帖刷回官方内核后,再用方法一进行操作
& && & 二代Nexus7Ⅱ刷回官方内核的教程-by爱折腾&&
& && &&&而刷了高级电源键的,也可参照下帖中的还原方法后,再用方法一进行操作
& && & 二代Nexus7Ⅱ高级电源键-添加重启、recovery的按钮-by爱折腾&&
=============================以下这种是情况三,用的是方法三解决==========================
& &以版本号JSS15J为例,如果你的Nexus7Ⅱ在解锁ROOT的时候版本号是JSS15J之前的,也就是JWR66N,而在解锁ROOT之后发现收不到官方的OTA升级,并且又想升级到版本号JSS15J,可以往下看。
前提:你的Nexus7Ⅱ已经刷入第三方的Recovery,比如说TWRP或CWM
刷入方法:下载之后把刷机包放入Nexus7Ⅱ的根目录,完全关闭Nexus7Ⅱ之后,同时按下“音量键”和“电源键”,进入bootloader模式之后,用音量键选择Recovery Mode,按电源键即可进入TWRP。
& && && && && && & 进入TWRP之后,点击“install”选择刚刚放到根目录的刷机包“JSS15J-Update”,滑动按钮即可刷入,刷入完毕后,点击 reboot system 重启即可。
PS:本离线升级包是经过修改的,亲测可以成功刷入,因为用谷歌原版的升级包来刷入的话,当检查到 /system/app/PrebuiltGmsCore.apk 这个文件时,会提示错误,导致不能成功升级。
15:38 上传
刷完点击重启时,如果弹出提示是否修复root权限时,滑动按钮选择修复即可。
15:39 上传
15:39 上传
版本号JSS15J
15:39 上传
“爱折腾”系列帖子
二代Nexus7Ⅱ一键解锁ROOT工具--by爱折腾
二代Nexus7Ⅱ解锁之后OTA升级的方法-by爱折腾&&
二代Nexus7Ⅱ一键修砖工具--by爱折腾
二代Nexus7Ⅱ解除ROOT、恢复原生Recovery、上锁工具--by爱折腾&&
更多精彩,点击这里&&
本帖子的工具下载地址
SuperSU-v1.51及SuperSU-ota补丁包&&
谷歌官方JSS15Q升级包
从JSS15J升级至JSS15Q &&
官方下载地址&&
从JWR66N升级至JSS15Q
官方下载地址&&
谷歌官方JSS15J升级包
从JWR66N升级至JSS15Q
官方下载地址&&
修改版升级包
JSS15J-Update(已经修改过)
因为情况三的方法一已能解决大多数升级问题,所以JSS15Q的修改版升级包暂不制作。
<p id="rate_999115" onmouseover="showTip(this)" tip="很给力!&经验值 + 1
" class="mtn mbn">
<p id="rate_9089" onmouseover="showTip(this)" tip="等你15Q的修改版升级呢!!!!!!.&经验值 + 1
" class="mtn mbn">
<p id="rate_9067" onmouseover="showTip(this)" tip="很给力!&经验值 + 1
" class="mtn mbn">
<p id="rate_615967" onmouseover="showTip(this)" tip="赞一个!&经验值 + 1
" class="mtn mbn">
<p id="rate_557751" onmouseover="showTip(this)" tip="很给力!&经验值 + 1
" class="mtn mbn">
在线时间164 小时经验值710 最后登录注册时间帖子阅读权限10UID4785546
幼儿园, 积分 0, 距离下一级还需 15 积分
TA的每日心情擦汗 15:07签到天数: 11 天[LV.3]偶尔看看II
G币1445 最后登录注册时间
你好,你发的这个 二代Nexus7Ⅱ中文解锁ROOT工具--by爱折腾&& ,有刷入第三方的Recovery吗? 可以正常OTA升级吗?
在线时间164 小时经验值710 最后登录注册时间帖子阅读权限10UID4785546
幼儿园, 积分 0, 距离下一级还需 15 积分
TA的每日心情擦汗 15:07签到天数: 11 天[LV.3]偶尔看看II
G币1445 最后登录注册时间
wdbyd 发表于
你好,你发的这个 二代Nexus7Ⅱ中文解锁ROOT工具--by爱折腾&&/forum.php?mod=viewthrea ...
你好,我看你还发了一个这个回复的工具,这样回复以后应该还是处在解锁root的状态吧,这样是不是就可以正常OTA升级了!?谢谢!
二代Nexus7Ⅱ原生Recovery恢复工具--by爱折腾&&
在线时间1437 小时经验值2688 最后登录注册时间帖子阅读权限100UID282058
博士, 积分 2688, 距离下一级还需 812 积分
TA的每日心情无聊 18:24签到天数: 15 天[LV.4]偶尔看看III
G币996 最后登录注册时间
.................................
在线时间1 小时经验值551 最后登录注册时间帖子阅读权限60UID3531115
大学本科, 积分 551, 距离下一级还需 149 积分
该用户从未签到
G币1 最后登录注册时间
解决了root后不能OTA的问题,非常好,谢谢了
在线时间1321 小时经验值954 最后登录注册时间帖子阅读权限70UID99111
学士, 积分 954, 距离下一级还需 146 积分
TA的每日心情慵懒 20:56签到天数: 10 天[LV.3]偶尔看看II
G币1169 最后登录注册时间
root后貌似有点耗电
在线时间0 小时经验值39 最后登录注册时间帖子阅读权限20UID
小学生, 积分 39, 距离下一级还需 11 积分
该用户从未签到
G币16 最后登录注册时间
记号下,谢谢谢谢
在线时间539 小时经验值873 最后登录注册时间帖子阅读权限70UID1770644
学士, 积分 873, 距离下一级还需 227 积分
该用户从未签到
G币157 最后登录注册时间
wdbyd 发表于
你好,我看你还发了一个这个回复的工具,这样回复以后应该还是处在解锁root的状态吧,这样是不是就可以正 ...
要是支持就好了~~顶大神啊~~支持~
博客 http://www.taoge.in
在线时间0 小时经验值56 最后登录注册时间帖子阅读权限30UID
初中生, 积分 56, 距离下一级还需 44 积分
TA的每日心情擦汗 19:44签到天数: 4 天[LV.2]偶尔看看I
G币18 最后登录注册时间
记号下,谢谢谢谢
在线时间926 小时经验值1948 最后登录注册时间帖子阅读权限90UID5258678
硕士, 积分 1946, 距离下一级还需 554 积分
TA的每日心情开心 09:47签到天数: 12 天[LV.3]偶尔看看II
G币0 最后登录注册时间
看看看看看看
Powered by}

我要回帖

更多关于 户户通接收机怎么升级 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信