1.概述
10.0定制化开发中,在恢复出厂设置的时候,主要清理cache和data分区,所以这两个目录下的数据都会被清理掉,所以要想保留文件不被清理 就要在清理的时候,跳过这个目录即可
2.核心代码
主要代码:
frameworks/base/core/java/android/os/RecoverySystem.java
bootable\recovery\otautil\logging.cpp
/bootable/recovery/install/wipe_data.cpp
3.核心代码功能分析
3.1wipe_data.cpp代码分析
static bool EraseVolume(const char* volume, RecoveryUI* ui, bool convert_fbe) {
bool is_cache = (strcmp(volume, CACHE_ROOT) == 0);
bool is_data = (strcmp(volume, DATA_ROOT) == 0);
ui->SetBackground(RecoveryUI::ERASING);
ui->SetProgressType(RecoveryUI::INDETERMINATE);
std::vector<saved_log_file> log_files;
if (is_cache) {
// If we're reformatting /cache, we load any past logs (i.e. "/cache/recovery/last_*") and the
// current log ("/cache/recovery/log") into memory, so we can restore them after the reformat.
log_files = ReadLogFilesToMemory()