fota upgrade fails Summary (recovery.cpp)

1. Review the upgrade log recovery of successes and failures, in / Cache / Recovery / last_log
2. sourceinsight with import / bootable / recovery, according to the search log, globally. Step by step analysis
3. Some methods may not exist under / system or / bionic.
4. If you do not want to grab the serial port can be used during the complete recovery log, but not serial usb,
the need to disassemble the machine drawn to a few serial line welding, and last_log is incomplete, only from recovery.cpp the
log main function begins, in front of the log is not.
5.fota, the general will be downloaded update.zip mount point-in cards or external card device, or in the presence of a number of external card mappings.
Such as: / 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     //这个参数一般是成立的,应该是为了适配fota
#else
#ifdef TARGET_RK30
    freopen("/dev/ttyFIQ0", "a", stdout); setbuf(stdout, NULL);
    freopen("/dev/ttyFIQ0", "a", stderr); setbuf(stderr, NULL);
#else
    freopen("/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.fstab
	SetSdcardRootPath();
    ensure_path_mounted(LAST_LOG_FILE);
    rotate_last_logs(10);
    get_args(&argc, &argv);//从某个地方将command写到argv指向的地方
    //argv是recovery的重要参数,
    //如:"/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;//如果这个不为null,那么update_rkimage 应该为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 界面相关,就是那些有android机器人的界面
    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 sdcard
    if(!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 sdtool
    if(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的内容,很重要
    for (arg = 0; arg < argc; arg++) {
        printf(" \"%s\"", argv[arg]);
    }
    printf("\n");

    if (update_package) {
	#ifdef FOTA_UPDATE_SUPPORT
	   update_package = find_update_package(update_package);//很重要,find_update_package是被广升封装了。没法看到,主要是转换command中update-package。把它转换成一个正确的路径
	#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升级
        if (status == INSTALL_SUCCESS && wipe_cache) {
            if (erase_volume("/cache")) {
                LOGE("Cache wipe (requested by package) failed.");
            }
        }
    #ifdef FOTA_UPDATE_SUPPORT
        fota_update_install_finish(update_package, status);
    #endif

        if (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");
        else
	 		bAutoUpdateComplete=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 /data
        if (clone_data_if_exist()) {
            if (erase_volume("/data")) status = INSTALL_ERROR;
        }
        if (wipe_cache && erase_volume("/cache")) status = INSTALL_ERROR;
#ifdef USE_BOARD_ID
        if(wipe_all) {
        	status = handle_board_id();
        }
#else
        if(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;
			}
        }
#endif
        if (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 specified
        ui->SetBackground(RecoveryUI::NO_COMMAND);
    }

    if (status == INSTALL_ERROR || status == INSTALL_CORRUPT) {
        copy_logs();
        ui->SetBackground(RecoveryUI::ERROR);
        bNeedClearMisc = true;
    }
#ifdef FOTA_UPDATE_SUPPORT
    if (status != INSTALL_SUCCESS && update_package == NULL) {
        prompt_and_wait(device, status);
    }
#else
    if (status != INSTALL_SUCCESS) {
        prompt_and_wait(device, status);
    }
#endif
    // Otherwise, get ready to boot the main system...
    finish_recovery(send_intent);
#ifdef FOTA_UPDATE_SUPPORT
    finish_fota_update(update_package, TEMPORARY_LOG_FILE);
#endif
    ui->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 0
  1 /mnt/external_sd vfat /dev/block/mmcblk0p1 0
  2 /system ext4 /dev/block/mtd/by-name/system 0
  3 /cache ext4 /dev/block/mtd/by-name/cache 0
  4 /metadata ext4 /dev/block/mtd/by-name/metadata 0
  5 /data ext4 /dev/block/mtd/by-name/userdata 0
  6 /cust ext4 /dev/block/mtd/by-name/cust 0
  7 /custom ext4 /dev/block/mtd/by-name/custom 0
  8 /misc mtd misc 0
  9 /uboot mtd uboot 0
  10 /charge mtd charge 0
  11 /parameter mtd parameter 0
  12 /boot mtd boot 0
  13 /recovery mtd recovery 0
  14 /backup mtd backup 0
  15 /tmp ramdisk ramdisk 0

I: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=RockChips

update_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 0
  1 /mnt/external_sd vfat /dev/block/mmcblk0p1 0
  2 /system ext4 /dev/block/mtd/by-name/system 0
  3 /cache ext4 /dev/block/mtd/by-name/cache 0
  4 /metadata ext4 /dev/block/mtd/by-name/metadata 0
  5 /data ext4 /dev/block/mtd/by-name/userdata 0
  6 /cust ext4 /dev/block/mtd/by-name/cust 0
  7 /custom ext4 /dev/block/mtd/by-name/custom 0
  8 /misc mtd misc 0
  9 /uboot mtd uboot 0
  10 /charge mtd charge 0
  11 /parameter mtd parameter 0
  12 /boot mtd boot 0
  13 /recovery mtd recovery 0
  14 /backup mtd backup 0
  15 /tmp ramdisk ramdisk 0

Set boot command ""
Patching remaining system files...ui_print :: Patching remaining system files...
patch /system/build.prop: now d81ac609

script succeeded: result was [/system]
fota_update_install_finish: status = 0
I:Saving locale "zh_CN"

 

Another article reprint article: http://blog.csdn.net/b1480521874/article/details/79181105

Guess you like

Origin blog.csdn.net/b1480521874/article/details/79175612