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

Commit 1510a698 authored by Philip Cuadra's avatar Philip Cuadra Committed by android-build-merger
Browse files

Merge \"Call into ART to get the location of the odex/oat file to pin\" into nyc-mr1-dev

am: 8b072fbd

Change-Id: I3e5d753597a81d2cd1938781dce4370c383725ea
parents 3fabee6f 8b072fbd
Loading
Loading
Loading
Loading
+14 −8
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import android.system.StructStat;
import com.android.internal.app.ResolverActivity;
import com.android.internal.os.BackgroundThread;

import dalvik.system.DexFile;
import dalvik.system.VMRuntime;

import java.util.ArrayList;
@@ -240,12 +241,6 @@ public final class PinnerService extends SystemService {
        }
        mPinnedCameraFiles.add(pf);

        //find the location of the odex based on the location of the APK
        int lastPeriod = camAPK.lastIndexOf('.');
        int lastSlash = camAPK.lastIndexOf('/', lastPeriod);
        String base = camAPK.substring(0, lastSlash);
        String appName = camAPK.substring(lastSlash + 1, lastPeriod);

        // determine the ABI from either ApplicationInfo or Build
        String arch = "arm";
        if (cameraInfo.primaryCpuAbi != null
@@ -256,8 +251,18 @@ public final class PinnerService extends SystemService {
                arch = arch + "64";
            }
        }
        String odex = base + "/oat/" + arch + "/" + appName + ".odex";
        //not all apps have odex files, so not pinning the odex is not a fatal error

        // get the path to the odex or oat file
        String baseCodePath = cameraInfo.getBaseCodePath();
        String odex = null;
        try {
            odex = DexFile.getDexFileOutputPath(baseCodePath, arch);
        } catch (IOException ioe) {}
        if (odex == null) {
            return true;
        }

        //not pinning the oat/odex is not a fatal error
        pf = pinFile(odex, 0, 0, MAX_CAMERA_PIN_SIZE);
        if (pf != null) {
            mPinnedCameraFiles.add(pf);
@@ -265,6 +270,7 @@ public final class PinnerService extends SystemService {
                Slog.i(TAG, "Pinned " + pf.mFilename);
            }
        }

        return true;
    }