Reset the profile when system application change version.
Background optimization has flag checkProfiles as true, performDexOptLI check profile is updated with checkProfiles. (isProfileUpdated() -> mergeProfiles -> analyze_profiles()) analyze_profiles decides if it is need to compile and clear the profile or not. But analyze_profiles and profman merge only based on existing profiles. Eventhough checksum of application dex was changed, profman only check the profile can be merge or not. With below TC, the return value of profman is PROFMAN_BIN_ RETURN_CODE_SKIP_COMPILATION(1). Because current profile has not enough informations than reference profile. I think ProcessProfilesInternal should consider change of dex checksum, If there are mismatch checksum of dex between profiles and dex, then profman should return with PROFMAN_BIN_RETURN_CODE_BAD_PROFILES (2). After that analyze_profiles can reset profiles with PROFMAN_BIN_RETURN_CODE_BAD_PROFILES. But profman does not have that implemtation for verify the profile based on checksum. So, It is need to drop the profile based on change of application version. Test: System update 1. Factory Image with system application. (vendor, system app) 2. Use Sample application to generage current profile. 3. BackgroundDexOptService optimize with speed-profile. 4. Use Sample application to generage current profile. 5. There are small size of current profile and large size of reference profile. 6. System update with application change. 7. Reboot. 8. Next background optimization would be fail permanently. Bug: 77839992 Merged-In: Iac575ae5906498a59b750df0b281fab01df57b3e Change-Id: Iac575ae5906498a59b750df0b281fab01df57b3e
Loading
Please register or sign in to comment