Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8971229a authored by Calin Juravle's avatar Calin Juravle Committed by Android (Google) Code Review
Browse files

Merge "Create secondary dex profiles relative to the provided dex path"

parents 24cc5a80 07e5fc46
Loading
Loading
Loading
Loading
+5 −19
Original line number Diff line number Diff line
@@ -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;
@@ -155,23 +152,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.