fota升级失败小结(recovery.cpp)
生活随笔
收集整理的這篇文章主要介紹了
fota升级失败小结(recovery.cpp)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.查看升級(jí)成功和失敗的recovery的log,在/cache/recovery/last_log
2.用sourceinsight導(dǎo)入/bootable/recovery,根據(jù)log,全局搜索。逐步分析
3.有些沒有的方法可能存在/system或者/bionic下。
4.如果沒有想要的,可以用串口去在recovery期間抓取完整的log,但是串口不是usb,
需要拆開機(jī)器去焊接引出幾根串口線,而last_log是不完整的,只有從recovery.cpp的
main函數(shù)開始的log,前面的log是沒有的。
5.fota的話,一般會(huì)把update.zip下載在內(nèi)置卡或者外置卡設(shè)備的掛載點(diǎn),或者一些存在與內(nèi)外置卡映射關(guān)系。
如:/data/media/0, /storage/emulated/0, /storage/sdcard0, /mnt/storage/0
?
int main(int argc, char **argv) {time_t start = time(NULL);// If these fail, there's not really anywhere to complain...freopen(TEMPORARY_LOG_FILE, "a", stdout); setbuf(stdout, NULL);freopen(TEMPORARY_LOG_FILE, "a", stderr); setbuf(stderr, NULL);#ifdef FOTA_UPDATE_SUPPORT //這個(gè)參數(shù)一般是成立的,應(yīng)該是為了適配fota #else #ifdef TARGET_RK30freopen("/dev/ttyFIQ0", "a", stdout); setbuf(stdout, NULL);freopen("/dev/ttyFIQ0", "a", stderr); setbuf(stderr, NULL); #elsefreopen("/dev/ttyS1", "a", stdout); setbuf(stdout, NULL);freopen("/dev/ttyS1", "a", stderr); setbuf(stderr, NULL); #endif #endif// If this binary is started with the single argument "--adbd",// instead of being the normal recovery binary, it turns into kind// of a stripped-down version of adbd that only supports the// 'sideload' command. Note this must be a real argument, not// anything in the command file or bootloader control block; the// only way recovery should be run with this argument is when it// starts a copy of itself from the apply_from_adb() function.if (argc == 2 && strcmp(argv[1], "--adbd") == 0) {adb_main();return 0;}printf("Starting recovery on %s", ctime(&start));load_volume_table();//加載/etc/recovery.fstabSetSdcardRootPath();ensure_path_mounted(LAST_LOG_FILE);rotate_last_logs(10);get_args(&argc, &argv);//從某個(gè)地方將command寫到argv指向的地方//argv是recovery的重要參數(shù),//如:"/sbin/recovery" "--update_package=/storage/emulated/0/adupsfota/update.zip" "--locale=zh_CN"int previous_runs = 0;const char *send_intent = NULL;const char *update_package = NULL;const char *update_rkimage = NULL;char *auto_sdcard_update_path = NULL;int wipe_data = 0, wipe_cache = 0, show_text = 0, wipe_all = 0;bool just_exit = false;int factory_mode_en = 0;char *factory_mode = NULL;int arg;while ((arg = getopt_long(argc, argv, "", OPTIONS, NULL)) != -1) {switch (arg) {case 'p': previous_runs = atoi(optarg); break;case 's': send_intent = optarg; break;case 'u': update_package = optarg; break;//如果這個(gè)不為null,那么update_rkimage 應(yīng)該為null。getopt_long方法在bionic文件夾下。case 'r': update_rkimage = optarg; break;case 'w': wipe_data = wipe_cache = 1; break;case 'c': wipe_cache = 1; break;case 'f': factory_mode = optarg;factory_mode_en = 1; break;case 't': show_text = 1; break;case 'w'+'a':{ wipe_all = wipe_data = wipe_cache = 1;show_text = 1;} break;case 'x': just_exit = true; break;case 'l': locale = optarg; break;case 'g': {if (stage == NULL || *stage == '\0') {char buffer[20] = "1/";strncat(buffer, optarg, sizeof(buffer)-3);stage = strdup(buffer);}break;}case '?':LOGE("Invalid command argument\n");continue;}}if (locale == NULL) {load_locale_from_cache();}printf("locale is [%s]\n", locale);printf("stage is [%s]\n", stage, stage);Device* device = make_device();ui = device->GetUI();//recovery 界面相關(guān),就是那些有android機(jī)器人的界面gCurrentUI = ui;ui->Init();int st_cur, st_max;if (stage != NULL && sscanf(stage, "%d/%d", &st_cur, &st_max) == 2) {ui->SetStage(st_cur, st_max);}ui->SetLocale(locale);//ui->SetBackground(RecoveryUI::NONE);ui->Print("Recovery system v4.4.0 \n\n");printf("Recovery system v4.4.0 \n");if (show_text) ui->ShowText(true);struct selinux_opt seopts[] = {{ SELABEL_OPT_PATH, "/file_contexts" }};sehandle = selabel_open(SELABEL_CTX_FILE, seopts, 1);if (!sehandle) {ui->Print("Warning: No file_contexts\n");}device->StartRecovery();SureCacheMount();SureMetadataMount();//sdcard may not ready,so wait a feel seconds.int i;for(i = 0; i < 2; i++) {if(0 == ensure_path_mounted(EX_SDCARD_ROOT)){break;}else {printf("delay 2sec\n");sleep(2);}}//boot from sdcardif(!check_sdboot()) {printf("find sdfwupdate commandline!\n");return sdtool_main(factory_mode, device);}else {printf("Not enter sdboot!\n");}//get misc commond factory mode, goto sdtoolif(factory_mode_en) {printf("find factory mode misc command!\n");return sdtool_main(factory_mode, device);}get_auto_sdcard_update_path(&auto_sdcard_update_path);char bootmode[256];property_get("ro.bootmode", bootmode, "unknown");printf("bootmode = %s \n", bootmode);property_get("UserVolumeLabel", gVolume_label, "");printf("Command:");//打印出command的內(nèi)容,很重要for (arg = 0; arg < argc; arg++) {printf(" \"%s\"", argv[arg]);}printf("\n");if (update_package) {#ifdef FOTA_UPDATE_SUPPORTupdate_package = find_update_package(update_package);//很重要,find_update_package是被廣升封裝了。沒法看到,主要是轉(zhuǎn)換command中update-package。把它轉(zhuǎn)換成一個(gè)正確的路徑#endif// For backwards compatibility on the cache partition only, if// we're given an old 'root' path "CACHE:foo", change it to// "/cache/foo".if (strncmp(update_package, "CACHE:", 6) == 0) {int len = strlen(update_package) + 10;char* modified_path = (char*)malloc(len);strlcpy(modified_path, "/cache/", len);strlcat(modified_path, update_package+6, len);printf("(replacing path \"%s\" with \"%s\")\n",update_package, modified_path);update_package = modified_path;}if(strncmp(update_package, "/mnt/usb_storage", 16) == 0) {update_package = findPackageAndMountUsbDevice(update_package);}strcpy(updatepath,update_package);}printf("\n");if (update_rkimage) {// For backwards compatibility on the cache partition only, if// we're given an old 'root' path "CACHE:foo", change it to// "/cache/foo".if (strncmp(update_rkimage, "CACHE:", 6) == 0) {int len = strlen(update_rkimage) + 10;char* modified_path = (char *)malloc(len);strlcpy(modified_path, "/cache/", len);strlcat(modified_path, update_rkimage+6, len);printf("(replacing path \"%s\" with \"%s\")\n",update_rkimage, modified_path);update_rkimage = modified_path;}if(strncmp(update_rkimage, "/mnt/usb_storage", 16) == 0) {update_rkimage = findPackageAndMountUsbDevice(update_rkimage);}strcpy(updatepath,update_rkimage);}printf("\n");property_list(print_property, NULL);property_get("ro.build.display.id", recovery_version, "");printf("\n");int status = INSTALL_SUCCESS;if (update_package != NULL) {//重要printf("update_package = %s", update_package);status = install_package(update_package, &wipe_cache, TEMPORARY_INSTALL_FILE);//從(update_package, 中獲取update.zip升級(jí)if (status == INSTALL_SUCCESS && wipe_cache) {if (erase_volume("/cache")) {LOGE("Cache wipe (requested by package) failed.");}}#ifdef FOTA_UPDATE_SUPPORTfota_update_install_finish(update_package, status);#endifif (status != INSTALL_SUCCESS) {ui->Print("Installation aborted.\n");// If this is an eng or userdebug build, then automatically// turn the text display on if the script fails so the error// message is visible.char buffer[PROPERTY_VALUE_MAX+1];property_get("ro.build.fingerprint", buffer, "");if (strstr(buffer, ":userdebug/") || strstr(buffer, ":eng/")) {ui->ShowText(true);}}else {bAutoUpdateComplete=true;}} else if (update_rkimage != NULL) {status = install_rkimage(update_rkimage);if (status != INSTALL_SUCCESS) ui->Print("Installation aborted.\n");elsebAutoUpdateComplete=true;} else if(auto_sdcard_update_path) {printf("auto install package from sdcard!\n");status = install_rkimage(auto_sdcard_update_path);if (status == INSTALL_SUCCESS && wipe_cache) {if (erase_volume("/cache")) {LOGE("Cache wipe (requested by package) failed.");}}if (status != INSTALL_SUCCESS) ui->Print("Installation aborted.\n");} else if (wipe_data) {if (device->WipeData()) status = INSTALL_ERROR;// First clone /databk to /data, if faild, format /dataif (clone_data_if_exist()) {if (erase_volume("/data")) status = INSTALL_ERROR;}if (wipe_cache && erase_volume("/cache")) status = INSTALL_ERROR; #ifdef USE_BOARD_IDif(wipe_all) {status = handle_board_id();} #elseif(wipe_all) {printf("resize /system \n");Volume* v = volume_for_path("/system");if(rk_check_and_resizefs(v->blk_device)) {ui->Print("check and resize /system failed!\n");status = INSTALL_ERROR;}} #endifif (wipe_all && erase_volume(IN_SDCARD_ROOT)) status = INSTALL_ERROR;if (status != INSTALL_SUCCESS) ui->Print("Data wipe failed.\n");} else if (wipe_cache) {if (wipe_cache && erase_volume("/cache")) status = INSTALL_ERROR;if (status != INSTALL_SUCCESS) ui->Print("Cache wipe failed.\n");} else if (!just_exit) {status = INSTALL_NONE; // No command specifiedui->SetBackground(RecoveryUI::NO_COMMAND);}if (status == INSTALL_ERROR || status == INSTALL_CORRUPT) {copy_logs();ui->SetBackground(RecoveryUI::ERROR);bNeedClearMisc = true;} #ifdef FOTA_UPDATE_SUPPORTif (status != INSTALL_SUCCESS && update_package == NULL) {prompt_and_wait(device, status);} #elseif (status != INSTALL_SUCCESS) {prompt_and_wait(device, status);} #endif// Otherwise, get ready to boot the main system...finish_recovery(send_intent); #ifdef FOTA_UPDATE_SUPPORTfinish_fota_update(update_package, TEMPORARY_LOG_FILE); #endifui->Print("Rebooting...\n");//property_set(ANDROID_RB_PROPERTY, "reboot,");android_reboot(ANDROID_RB_RESTART, 0, 0);return EXIT_SUCCESS; }?
?
?
last_log:
?
__bionic_open_tzdata: couldn't find any tzdata when looking for localtime! __bionic_open_tzdata: couldn't find any tzdata when looking for GMT! __bionic_open_tzdata: couldn't find any tzdata when looking for posixrules! Starting recovery on Wed Jan 24 11:01:33 2018 bootmode = unknown recovery filesystem table =========================0 /mnt/internal_sd vfat /dev/block/mtd/by-name/user 01 /mnt/external_sd vfat /dev/block/mmcblk0p1 02 /system ext4 /dev/block/mtd/by-name/system 03 /cache ext4 /dev/block/mtd/by-name/cache 04 /metadata ext4 /dev/block/mtd/by-name/metadata 05 /data ext4 /dev/block/mtd/by-name/userdata 06 /cust ext4 /dev/block/mtd/by-name/cust 07 /custom ext4 /dev/block/mtd/by-name/custom 08 /misc mtd misc 09 /uboot mtd uboot 010 /charge mtd charge 011 /parameter mtd parameter 012 /boot mtd boot 013 /recovery mtd recovery 014 /backup mtd backup 015 /tmp ramdisk ramdisk 0I:InternalSD_ROOT: /mnt/internal_sd I:ExternalSD_ROOT: /mnt/external_sd I:Got arguments from /cache/recovery/command I:Set boot command "boot-recovery" locale is [zh_CN] stage is [] failed to read font: res=-1 framebuffer: fd 5 (600 x 1024)installing_text: zh_CN (240 x 38 @ 1818)erasing_text: zh_CN (128 x 38 @ 1521)no_command_text: zh_CN (92 x 38 @ 1521)error_text: zh_CN (98 x 38 @ 1521) Recovery system v4.4.0 Recovery system v4.4.0 W:trying mount /dev/block/mmcblk0p1 to ntfs W:trying mount /dev/block/mmcblk0 to ntfs E:failed to mount /mnt/external_sd (No such device) delay 2sec W:trying mount /dev/block/mmcblk0p1 to ntfs W:trying mount /dev/block/mmcblk0 to ntfs E:failed to mount /mnt/external_sd (No such device) delay 2sec read cmdline Not enter sdboot! W:trying mount /dev/block/mmcblk0p1 to ntfs W:trying mount /dev/block/mmcblk0 to ntfs E:failed to mount /mnt/external_sd (No such device) bootmode = unknown Command: "/sbin/recovery" "--update_package=/storage/emulated/0/adupsfota/update.zip" "--locale=zh_CN"ro.rk.cpu=rk3188 ro.rk.soc=rk3188+ ro.rk.bt_enable=true ro.rk.systembar.tabletUI=false ro.rk.systembar.voiceicon=true ro.rk.MassStorage=false ro.rk.homepage_base=http://www.google.com/webhp?client={CID}&source=android-home ro.rk.def_brightness=200 ro.rk.screenoff_time=60000 ro.rk.screenshot_enable=true ro.rk.install_non_market_apps=true ro.sf.hwrotation=0 ro.sf.lcd_density=160 ro.sf.fakerotation=false ro.sf.lcdc_composer=0 ro.adb.secure=0 ro.com.google.gmsversion=4.4_r3 ro.com.android.dateformat=MM-dd-yyyy ro.com.android.dataroaming=true ro.ril.ecclist=112,911 ro.sms.capable=false ro.boot.console=ttyFIQ0 ro.fota.oem=ayou3188_KK ro.fota.type=toy ro.fota.device=U1 ro.fota.version=rk3188-userdebug 4.4.2 SV0.1 439 release-keys ro.fota.platform=RK3188_KK ro.wifi.channels= ro.allow.mock.location=0 ro.audio.monitorOrientation=true ro.board.platform=rk3188 ro.build.id=SV0.1 ro.build.date=Fri Jan 19 14:54:18 EST 2018 ro.build.date.utc=1516391658 ro.build.host=AU ro.build.tags=release-keys ro.build.type=userdebug ro.build.user=android ro.build.display.id=rk3188-userdebug 4.4.2 SV0.1 439 release-keys ro.build.product=rk3188 ro.build.version.sdk=19 ro.build.version.release=4.4.2 ro.build.version.codename=REL ro.build.version.incremental=439 ro.build.description=rk3188-userdebug 4.4.2 SV0.1 439 release-keys ro.build.fingerprint=rockchip/rk3188/rk3188:4.4.2/SV0.1/439:userdebug/release-keys ro.build.characteristics=tablet ro.rksdk.version=RK30_ANDROID$(PLATFORM_VERSION)-SDK-v1.00.00 \ ro.voice.capable=false ro.ap_mdm=-1 ro.config.ringtone=Ring_Synth_04.ogg ro.config.alarm_alert=Alarm_Classic.ogg ro.config.notification_sound=pixiedust.ogg ro.kernel.android.checkjni=0 ro.secure=1 ro.tether.denied=false ro.carrier=unknown ro.default.size=100 ro.factory.tool=0 ro.factory.hasGPS=true ro.factory.without_battery=false ro.factory.storage_suppntfs=true ro.product.cpu.abi=armeabi-v7a ro.product.cpu.abi2=armeabi ro.product.ota.host=www.rockchip.com:2300 ro.product.name=rk3188 ro.product.board=rk30sdk ro.product.brand=rockchip ro.product.model=U1 ro.product.device=rk3188 ro.product.locale.region=CN ro.product.locale.language=zh ro.product.version=1.0.0 ro.product.usbfactory=rockchip_usb ro.product.manufacturer=rockchip ro.baseband=unknown ro.bootmode=unknown ro.hardware=rk30board ro.opengles.version=131072 ro.revision=0 ro.bootloader=unknown ro.debuggable=1 ro.ap_has_alsa=-1 ro.factorytest=0 ro.setupwizard.mode=OPTIONAL ro.ap_data_only=-1 ro.ap_has_earphone=-1 sf.power.control=2073600 net.bt.name=Android net.change=net.bt.name ril.function.dataonly=1 sys.agc.maxgain=7 sys.hwc.compose_policy=6 sys.rkadb.root=0 sys.wallpaper.rgb565=0 sys.resolution.changed=false init.svc.adbd=running init.svc.console=running init.svc.ueventd=running init.svc.recovery=running rild.libargs=-d /dev/ttyACM0 rild.libpath=/system/lib/libril-rk29-dataonly.so rild.libpath1=/system/lib/libreference-ril-mt6229.so rild.libpath2=/system/lib/libreference-ril-mu509.so rild.libpath4=/system/lib/libreference-ril-mw100.so rild.libpath6=/system/lib/libreference-ril-sc6610.so rild.libpath7=/system/lib/libreference-ril-m51.so rild.libpath8=/system/lib/libreference-ril-mt6250.so rild.libpath9=/system/lib/libreference-ril-c66a.so rild.libpath10=/system/lib/libreference-ril-sew290.so rild.libpath11=/system/lib/libreference-ril-u5501.so rild.libpath12=/system/lib/libreference-ril-u7501.so rild.libpath13=/system/lib/libreference-ril-aw706.so rild.libpath14=/system/lib/libreference-ril-a85xx.so rild.libpath15=/system/lib/libreference-ril-e1230s.so wifi.interface=wlan0 wifi.supplicant_scan_interval=15 debug.nfc.se=false debug.nfc.fw_download=false debug.hwui.render_dirty_regions=false rild1.libpath=/system/lib/libreference-ril-sc6610-1.so rild3.libpath=/system/lib/libril-rk29-dataonly.so dalvik.vm.jniopts=warnonly dalvik.vm.heapsize=384m dalvik.vm.lockprof.threshold=500 dalvik.vm.heapmaxfree=8m dalvik.vm.heapminfree=512k dalvik.vm.dexopt-flags=m=y dalvik.vm.heapstartsize=8m dalvik.vm.heapgrowthlimit=64m dalvik.vm.stack-trace-file=/data/anr/traces.txt dalvik.vm.heaptargetutilization=0.75 persist.sys.usb.config=adb persist.sys.dalvik.vm.lib=libdvm.so persist.sys.country=CN persist.sys.language=zh persist.sys.timezone= persist.sys.strictmode.visual=false persist.demo.hdmirotation=landscape persist.demo.hdmirotationlock=true persist.tegra.nvmmlite=1 keyguard.no_require_sim=true ExternalSD_ROOT=/mnt/external_sd InternalSD_ROOT=/mnt/internal_sd UserVolumeLabel=RockChipsupdate_package = /data/media/0/adupsfota/update.zipFinding update package... I:Update location: /data/media/0/adupsfota/update.zip Opening update package... I:read key e=65537 hash=20 I:1 key(s) loaded from /res/keys Verifying update package... I:comment is 1501 bytes; signature 1483 bytes from end I:whole-file signature verified against key 0 I:verify_file returned 0 Installing update... ui_print :: Verifying current system... Verifying current system... 113078272 bytes free on /cache (22598770 needed) Removing unneeded files...ui_print :: Removing unneeded files... ui_print :: Patching system files... patch /system/app/BasicDreams.apk: now 59f434bc patch /system/app/Bluetooth.apk: Patching system files... now 285e0438 patch /system/app/Browser.apk: now e244e0d7 patch /system/app/Calculator.apk: now 0aae0574 patch /system/app/CertInstaller.apk: now 402c2725 patch /system/app/DocumentsUI.apk: now ade8c561 patch /system/app/DownloadProviderUi.apk: now 7b70be25 patch /system/app/Email.apk: now fd88bacd patch /system/app/Exchange2.apk: now fe15187f patch /system/app/HTMLViewer.apk: now 5990065e patch /system/app/HoloSpiralWallpaper.apk: now d19889ab patch /system/app/KeyChain.apk: now c936a1b9 patch /system/app/LatinIME.apk: now 3e3e125d patch /system/app/LiveWallpapers.apk: now e4cfa970 patch /system/app/LiveWallpapersPicker.apk: now cb642b66 patch /system/app/MagicSmokeWallpapers.apk: now 2ddf60b8 patch /system/app/Music.apk: now 8d3c9b8f patch /system/app/PacProcessor.apk: now 016fe61b patch /system/app/PackageInstaller.apk: now ecda72e0 patch /system/app/PhotoTable.apk: now 6ccb3a96 patch /system/app/QuickSearchBox.apk: now ffdf6a8a patch /system/app/SoundRecorder.apk: now 1624d38b patch /system/app/Stk.apk: now d653b79e patch /system/app/TelephonyProvider.apk: now 94b76466 patch /system/app/UserDictionaryProvider.apk: now 31501bdf patch /system/app/VisualizationWallpapers.apk: now b72ac7b6 patch /system/app/WAPPushManager.apk: now d2701242 patch /system/bin/debuggerd: now 610bdf16 patch /system/bin/mdnsd: now ae420ecf patch /system/framework/am.jar: now ae95de39 patch /system/framework/android.policy.jar: now b45ec137 patch /system/framework/android.test.runner.jar: now f6f53b33 patch /system/framework/apache-xml.jar: now a1930401 patch /system/framework/bmgr.jar: now 502c9599 patch /system/framework/bouncycastle.jar: now dffe68a7 patch /system/framework/bu.jar: now a3e39fb0 patch /system/framework/com.android.future.usb.accessory.jar: now 393600ac patch /system/framework/com.android.location.provider.jar: now 7b4cedcf patch /system/framework/com.android.media.remotedisplay.jar: now 57a71f48 patch /system/framework/conscrypt.jar: now 5f95d4ef patch /system/framework/content.jar: now f6cfae4c patch /system/framework/core-junit.jar: now 366fa3f5 patch /system/framework/core-libart.jar: now cfb2b371 patch /system/framework/core.jar: now c27796e4 patch /system/framework/ext.jar: now 99c7e22c patch /system/framework/framework-res.apk: now 502f78fa patch /system/framework/framework.jar: now ec7a88ba patch /system/framework/framework2.jar: now d936fce4 patch /system/framework/ime.jar: now ecf29639 patch /system/framework/input.jar: now ff049a4f patch /system/framework/javax.obex.jar: now c7f81d96 patch /system/framework/media_cmd.jar: now c29eb941 patch /system/framework/mms-common.jar: now 6bcc3eca patch /system/framework/monkey.jar: now 11e81054 patch /system/framework/okhttp.jar: now 46a3dfcf patch /system/framework/pm.jar: now 33bf01a2 patch /system/framework/requestsync.jar: now 47af600c patch /system/framework/services.jar: now 5088c77e patch /system/framework/settings.jar: now 12dc05e1 patch /system/framework/svc.jar: now 15749722 patch /system/framework/telephony-common.jar: now 02332a79 patch /system/framework/uiautomator.jar: now 3c71a87a patch /system/framework/voip-common.jar: now 2bc2f7cd patch /system/framework/webviewchromium.jar: now 922e4e23 patch /system/framework/wm.jar: now 297b1337 patch /system/lib/libLLVM.so: now e5a51b6f patch /system/lib/libbcc.sha1.so: now 2f4b47f4 patch /system/lib/libbcc.so: now a7f35f1b patch /system/lib/libchromium_net.so: now 93d15399 patch /system/lib/libmdnssd.so: now bcde36c8 patch /system/lib/libpac.so: now 695a7b36 patch /system/lib/libstagefright_soft_aacdec.so: now 9023cb97 patch /system/lib/libstagefright_soft_aacenc.so: now af315c24 patch /system/lib/libwebrtc_audio_coding.so: now d3505fc7 patch /system/lib/libwebrtc_audio_preprocessing.so: now 23175bde patch /system/lib/libwebviewchromium.so: now 6d3e553d patch /system/priv-app/BackupRestoreConfirmation.apk: now 1244e8d4 patch /system/priv-app/CalendarProvider.apk: now 8b2d9e97 patch /system/priv-app/Contacts.apk: now 15f157d1 patch /system/priv-app/ContactsProvider.apk: now 71d13be3 patch /system/priv-app/DefaultContainerService.apk: now a3935aa7 patch /system/priv-app/Dialer.apk: now 21e77116 patch /system/priv-app/DownloadProvider.apk: now ab0c6a07 patch /system/priv-app/ExternalStorageProvider.apk: now 3ae84363 patch /system/priv-app/FusedLocation.apk: now 005b7140 patch /system/priv-app/InputDevices.apk: now 37564bf5 patch /system/priv-app/Keyguard.apk: now b13e6a71 patch /system/priv-app/MediaProvider.apk: now 957d48a4 patch /system/priv-app/Mms.apk: now b14c416e patch /system/priv-app/OneTimeInitializer.apk: now eb78f076 patch /system/priv-app/ProxyHandler.apk: now 092be3bb patch /system/priv-app/Settings.apk: now a5f8c5fd patch /system/priv-app/SettingsProvider.apk: now a2435e25 patch /system/priv-app/SharedStorageBackup.apk: now 3b826e03 patch /system/priv-app/Shell.apk: now 55d2cfe5 patch /system/priv-app/SystemUI.apk: now ceefc07e patch /system/priv-app/TeleService.apk: now 6f98d378 patch /system/priv-app/VpnDialogs.apk: now 899514b7 patch /system/priv-app/WallpaperCropper.apk: now 57e69e3c patch /system/xbin/oprofiled: now 56a8dc0a WriteRawImageFn: partition is boot bootmode = unknown wrote boot partition ui_print :: Unpacking new files... Unpacking new files... minzip: Extracted 2 file(s) Unpacking new recovery...ui_print :: Unpacking new recovery...minzip: Extracted 2 file(s) ui_print :: Symlinks and permissions... Symlinks and permissions... clear misc command! bootmode = unknown recovery filesystem table =========================0 /mnt/internal_sd vfat /dev/block/mtd/by-name/user 01 /mnt/external_sd vfat /dev/block/mmcblk0p1 02 /system ext4 /dev/block/mtd/by-name/system 03 /cache ext4 /dev/block/mtd/by-name/cache 04 /metadata ext4 /dev/block/mtd/by-name/metadata 05 /data ext4 /dev/block/mtd/by-name/userdata 06 /cust ext4 /dev/block/mtd/by-name/cust 07 /custom ext4 /dev/block/mtd/by-name/custom 08 /misc mtd misc 09 /uboot mtd uboot 010 /charge mtd charge 011 /parameter mtd parameter 012 /boot mtd boot 013 /recovery mtd recovery 014 /backup mtd backup 015 /tmp ramdisk ramdisk 0Set boot command "" Patching remaining system files...ui_print :: Patching remaining system files... patch /system/build.prop: now d81ac609script succeeded: result was [/system] fota_update_install_finish: status = 0 I:Saving locale "zh_CN"?
另一篇轉(zhuǎn)載的文章:http://blog.csdn.net/b1480521874/article/details/79181105
總結(jié)
以上是生活随笔為你收集整理的fota升级失败小结(recovery.cpp)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Latex工具(texlive+texs
- 下一篇: Nginx从入门到入土