diff options
| -rw-r--r-- | core/res/res/values/config.xml | 4 | ||||
| -rw-r--r-- | core/res/res/values/symbols.xml | 1 | ||||
| -rw-r--r-- | services/core/java/com/android/server/PinnerService.java | 15 |
3 files changed, 17 insertions, 3 deletions
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 0ffe2aad5e89..de07b86819c3 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -3195,6 +3195,10 @@ <!-- True if home app should be pinned via Pinner Service --> <bool name="config_pinnerHomeApp">false</bool> + <!-- List of files pinned by the Pinner Service with the apex boot image b/119800099 --> + <string-array translatable="false" name="config_apexBootImagePinnerServiceFiles"> + </string-array> + <!-- Number of days preloaded file cache should be preserved on a device before it can be deleted --> <integer name="config_keepPreloadsMinDays">7</integer> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 2c14992fdbb4..76791fdef758 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -2904,6 +2904,7 @@ <java-symbol type="array" name="config_defaultPinnerServiceFiles" /> <java-symbol type="bool" name="config_pinnerCameraApp" /> <java-symbol type="bool" name="config_pinnerHomeApp" /> + <java-symbol type="array" name="config_apexBootImagePinnerServiceFiles" /> <java-symbol type="string" name="config_doubleTouchGestureEnableFile" /> diff --git a/services/core/java/com/android/server/PinnerService.java b/services/core/java/com/android/server/PinnerService.java index 0deaee7f7878..54a98cedccff 100644 --- a/services/core/java/com/android/server/PinnerService.java +++ b/services/core/java/com/android/server/PinnerService.java @@ -42,6 +42,7 @@ import android.os.Handler; import android.os.Looper; import android.os.Message; import android.os.RemoteException; +import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; import android.provider.MediaStore; @@ -232,9 +233,17 @@ public final class PinnerService extends SystemService { * Handler for on start pinning message */ private void handlePinOnStart() { - // Files to pin come from the overlay and can be specified per-device config - String[] filesToPin = mContext.getResources().getStringArray( - com.android.internal.R.array.config_defaultPinnerServiceFiles); + final String bootImage = SystemProperties.get("dalvik.vm.boot-image", ""); + String[] filesToPin = null; + if (bootImage.endsWith("apex.art")) { + // Use the files listed for that specific boot image + filesToPin = mContext.getResources().getStringArray( + com.android.internal.R.array.config_apexBootImagePinnerServiceFiles); + } else { + // Files to pin come from the overlay and can be specified per-device config + filesToPin = mContext.getResources().getStringArray( + com.android.internal.R.array.config_defaultPinnerServiceFiles); + } // Continue trying to pin each file even if we fail to pin some of them for (String fileToPin : filesToPin) { PinnedFile pf = pinFile(fileToPin, |