summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Calin Juravle <calin@google.com> 2017-09-04 17:32:23 -0700
committer Calin Juravle <calin@google.com> 2017-11-13 17:37:24 -0800
commitd35451d76b6bdc960881f1325f8b06c2d41e287e (patch)
treee2633031b3dfebe7b0fe4c4c93e382ad5fae76f4
parent62893396bdbea6986c5a468d9a854cd58f34ce1e (diff)
Create secondary dex profiles relative to the provided dex path
We previously used the realpath to simplify the validation and processing in installd. However it ended up making things more complicated when cleaning up the profiles, especially because of /data/user/0 symlinks to /data/data/. Instead of using the realpath of the dex file to compute the profile location, use the file path as given. This makes things consistent with DexManager registration and allows for easier dex file reconciliation in the presence of symlinks. Bug: 64460009 Test: manual (cherry picked from commit c119c5a8c1d8e3ba6c90300a82d2086273d0d3f3) Merged-In: I2362f32a679324d4bc1e8a0fe83b5b17ee523e7a Change-Id: Ic9c38a920c5eef85f26ac33f2b8a37c3694bfbad
-rw-r--r--core/java/android/app/DexLoadReporter.java24
1 files changed, 5 insertions, 19 deletions
diff --git a/core/java/android/app/DexLoadReporter.java b/core/java/android/app/DexLoadReporter.java
index d15dd6d71f94..01c045b2d816 100644
--- a/core/java/android/app/DexLoadReporter.java
+++ b/core/java/android/app/DexLoadReporter.java
@@ -19,7 +19,6 @@ package android.app;
import android.os.FileUtils;
import android.os.RemoteException;
import android.os.SystemProperties;
-import android.system.ErrnoException;
import android.util.Slog;
import com.android.internal.annotations.GuardedBy;
@@ -27,8 +26,6 @@ import com.android.internal.annotations.GuardedBy;
import dalvik.system.BaseDexClassLoader;
import dalvik.system.VMRuntime;
-import libcore.io.Libcore;
-
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
@@ -156,23 +153,12 @@ import java.util.Set;
return;
}
- File realDexPath;
- try {
- // Secondary dex profiles are stored in the oat directory, next to the real dex file
- // and have the same name with 'cur.prof' appended. We use the realpath because that
- // is what installd is using when processing the dex file.
- // NOTE: Keep in sync with installd.
- realDexPath = new File(Libcore.os.realpath(dexPath));
- } catch (ErrnoException ex) {
- Slog.e(TAG, "Failed to get the real path of secondary dex " + dexPath
- + ":" + ex.getMessage());
- // Do not continue with registration if we could not retrieve the real path.
- return;
- }
-
+ // Secondary dex profiles are stored in the oat directory, next to dex file
+ // and have the same name with 'cur.prof' appended.
// NOTE: Keep this in sync with installd expectations.
- File secondaryProfileDir = new File(realDexPath.getParent(), "oat");
- File secondaryProfile = new File(secondaryProfileDir, realDexPath.getName() + ".cur.prof");
+ File dexPathFile = new File(dexPath);
+ File secondaryProfileDir = new File(dexPathFile.getParent(), "oat");
+ File secondaryProfile = new File(secondaryProfileDir, dexPathFile.getName() + ".cur.prof");
// Create the profile if not already there.
// Returns true if the file was created, false if the file already exists.