1.查看升级成功和失败的recovery的log,在/cache/recovery/last_log
2.用sourceinsight导入/bootable/recovery,根据log,全局搜索。逐步分析
3.有些没有的方法可能存在/system或者/bionic下。
4.如果没有想要的,可以用串口去在recovery期间抓取完整的log,但是串口不是usb,
需要拆开机器去焊接引出几根串口线,而last_log是不完整的,只有从recovery.cpp的
main函数开始的log,前面的log是没有的。
5.fota的话,一般会把update.zip下载在内置卡或者外置卡设备的挂载点,或者一些存在与内外置卡映射关系。
如:/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"
另一篇转载的文章:http://blog.csdn.net/b1480521874/article/details/79181105