设置里面的app信息里面存储里面的app Size对应stats.codeSize,读取流程如上,可以添加log要了解,可以主动抛异常来看流程
StorageStatsService.queryStatsForPackage-->StorageStatsService.queryStatsForUid -->Installer.getAppSize -->InstalldNativeService.cpp中getAppSize
###InstalldNativeService.cpp
binder::Status InstalldNativeService::getAppSize(const std::unique_ptr<std::string>& uuid,
const std::vector<std::string>& packageNames, int32_t userId, int32_t flags,
int32_t appId, const std::vector<int64_t>& ceDataInodes,
const std::vector<std::string>& codePaths, std::vector<int64_t>* _aidl_return) {
if (device.empty()) {
LOG(DEBUG) << "william device.empty ";
flags &= ~FLAG_USE_QUOTA;
}
;
if (flags & FLAG_USE_QUOTA && appId >= AID_APP_START) {
LOG(DEBUG) << "william InstalldNativeService::getAppSize true... ";
} else {
LOG(DEBUG) << "william InstalldNativeService::getAppSize else... "; //normal flow
}
std::vector<int64_t> ret;
//stats.codeSize = 0;
ret.push_back(stats.codeSize);
ret.push_back(stats.dataSize);
ret.push_back(stats.cacheSize);
ret.push_back(extStats.codeSize);
ret.push_back(extStats.dataSize);
ret.push_back(extStats.cacheSize);
LOG(DEBUG) << "william true222 stats dataSize :" << stats.dataSize << " stats.codeSize : " << stats.codeSize;
#if MEASURE_DEBUG
LOG(DEBUG) << "Final result " << toString(ret);
#endif
*_aidl_return = ret;
return ok();
}