From 4388643d211ea0d4d9002b499f3c122db3fc6923 Mon Sep 17 00:00:00 2001 From: Spandan Das Date: Tue, 16 Jul 2024 02:51:26 +0000 Subject: [PATCH] Copy odex files from system_other to data/dalvik-cache on first boot This is currently not the default behavior. products opt-in by setting ro.cp_system_other_odex=1 (with cuttlefish being the only product family in internal main that sets this). With https://r.android.com/3144182, the odex files of system_ext and product are now installed in system_other. Since the odex files are not copied to /data, it triggers dexopt on device, which slows down first boot performance. This CL changes makes cp_system_other_odex=1 in build/make/target/product/runtime_libart.mk. This file is inherited by internal google products and external OEMs, and ensures that the odex files are copied from system_other to /data/dalvik-cache on first boot. Test: lunch oriole-trunk_staging-userdebug && get_build_var PRODUCT_VENDOR_PROPERTIES # verified that this property is set Test: In logcat, found the following match for `CalendarGooglePrebuilt` (a /product app) ``` Successfully loaded /data/dalvik-cache/arm64/product@app@CalendarGooglePrebuilt@CalendarGooglePrebuilt.apk@classes.dex with executable: 0 /data/dalvik-cache/arm64/product@app@CalendarGooglePrebuilt@CalendarGooglePrebuilt.apk@classes.dex is kOatUpToDate with filter verify Dexopt result: [packageName = com.google.android.calendar] DexContainerFileDexoptResult{dexContainerFile=/product/app/CalendarGooglePrebuilt/CalendarGooglePrebuilt.apk, primaryAbi=true, abi=arm64-v8a, actualCompilerFilter=verify, status=SKIPPED, dex2oatWallTimeMillis=0, dex2oatCpuTimeMillis=0, sizeBytes=0, sizeBeforeBytes=0, extendedStatusFlags=[]} ``` Bug: 349083274 Bug: 343367700 Change-Id: I42eda6742adcce7caccb1f2302578c01df8a24fd --- target/product/runtime_libart.mk | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/product/runtime_libart.mk b/target/product/runtime_libart.mk index dc78368983..58234a8a8c 100644 --- a/target/product/runtime_libart.mk +++ b/target/product/runtime_libart.mk @@ -178,3 +178,6 @@ PRODUCT_SYSTEM_PROPERTIES += \ PRODUCT_SYSTEM_PROPERTIES += \ dalvik.vm.useartservice=true \ dalvik.vm.enable_pr_dexopt=true + +# Copy preopted files from system_b on first boot. +PRODUCT_SYSTEM_PROPERTIES += ro.cp_system_other_odex=1