Loading core/java/android/app/LoadedApk.java +0 −4 Original line number Diff line number Diff line Loading @@ -262,10 +262,6 @@ public final class LoadedApk { if (!Objects.equals(mPackageName, ActivityThread.currentPackageName())) { final String isa = VMRuntime.getRuntime().vmInstructionSet(); try { // TODO: We can probably do away with the isa argument since // the AM and PM have enough information to figure this out // themselves. If we do need it, we should match it against the // list of devices ISAs before sending it down to installd. ActivityThread.getPackageManager().performDexOptIfNeeded(mPackageName, isa); } catch (RemoteException re) { // Ignored. Loading services/core/java/com/android/server/pm/Installer.java +56 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.pm; import android.os.Build; import com.android.server.SystemService; import android.content.Context; Loading @@ -23,6 +24,7 @@ import android.content.pm.PackageStats; import android.net.LocalSocket; import android.net.LocalSocketAddress; import android.util.Slog; import dalvik.system.VMRuntime; import java.io.IOException; import java.io.InputStream; Loading Loading @@ -214,6 +216,11 @@ public final class Installer extends SystemService { public int patchoat(String apkPath, int uid, boolean isPublic, String pkgName, String instructionSet) { if (!isValidInstructionSet(instructionSet)) { Slog.e(TAG, "Invalid instruction set: " + instructionSet); return -1; } StringBuilder builder = new StringBuilder("patchoat"); builder.append(' '); builder.append(apkPath); Loading @@ -228,6 +235,11 @@ public final class Installer extends SystemService { } public int patchoat(String apkPath, int uid, boolean isPublic, String instructionSet) { if (!isValidInstructionSet(instructionSet)) { Slog.e(TAG, "Invalid instruction set: " + instructionSet); return -1; } StringBuilder builder = new StringBuilder("patchoat"); builder.append(' '); builder.append(apkPath); Loading @@ -241,6 +253,11 @@ public final class Installer extends SystemService { } public int dexopt(String apkPath, int uid, boolean isPublic, String instructionSet) { if (!isValidInstructionSet(instructionSet)) { Slog.e(TAG, "Invalid instruction set: " + instructionSet); return -1; } StringBuilder builder = new StringBuilder("dexopt"); builder.append(' '); builder.append(apkPath); Loading @@ -255,6 +272,11 @@ public final class Installer extends SystemService { public int dexopt(String apkPath, int uid, boolean isPublic, String pkgName, String instructionSet) { if (!isValidInstructionSet(instructionSet)) { Slog.e(TAG, "Invalid instruction set: " + instructionSet); return -1; } StringBuilder builder = new StringBuilder("dexopt"); builder.append(' '); builder.append(apkPath); Loading @@ -280,6 +302,11 @@ public final class Installer extends SystemService { } public int movedex(String srcPath, String dstPath, String instructionSet) { if (!isValidInstructionSet(instructionSet)) { Slog.e(TAG, "Invalid instruction set: " + instructionSet); return -1; } StringBuilder builder = new StringBuilder("movedex"); builder.append(' '); builder.append(srcPath); Loading @@ -291,6 +318,11 @@ public final class Installer extends SystemService { } public int rmdex(String codePath, String instructionSet) { if (!isValidInstructionSet(instructionSet)) { Slog.e(TAG, "Invalid instruction set: " + instructionSet); return -1; } StringBuilder builder = new StringBuilder("rmdex"); builder.append(' '); builder.append(codePath); Loading Loading @@ -403,6 +435,13 @@ public final class Installer extends SystemService { public int getSizeInfo(String pkgName, int persona, String apkPath, String libDirPath, String fwdLockApkPath, String asecPath, String[] instructionSets, PackageStats pStats) { for (String instructionSet : instructionSets) { if (!isValidInstructionSet(instructionSet)) { Slog.e(TAG, "Invalid instruction set: " + instructionSet); return -1; } } StringBuilder builder = new StringBuilder("getsize"); builder.append(' '); builder.append(pkgName); Loading Loading @@ -480,4 +519,21 @@ public final class Installer extends SystemService { builder.append(uid); return (execute(builder.toString()) == 0); } /** * Returns true iff. {@code instructionSet} is a valid instruction set. */ private static boolean isValidInstructionSet(String instructionSet) { if (instructionSet == null) { return false; } for (String abi : Build.SUPPORTED_ABIS) { if (instructionSet.equals(VMRuntime.getInstructionSet(abi))) { return true; } } return false; } } Loading
core/java/android/app/LoadedApk.java +0 −4 Original line number Diff line number Diff line Loading @@ -262,10 +262,6 @@ public final class LoadedApk { if (!Objects.equals(mPackageName, ActivityThread.currentPackageName())) { final String isa = VMRuntime.getRuntime().vmInstructionSet(); try { // TODO: We can probably do away with the isa argument since // the AM and PM have enough information to figure this out // themselves. If we do need it, we should match it against the // list of devices ISAs before sending it down to installd. ActivityThread.getPackageManager().performDexOptIfNeeded(mPackageName, isa); } catch (RemoteException re) { // Ignored. Loading
services/core/java/com/android/server/pm/Installer.java +56 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.pm; import android.os.Build; import com.android.server.SystemService; import android.content.Context; Loading @@ -23,6 +24,7 @@ import android.content.pm.PackageStats; import android.net.LocalSocket; import android.net.LocalSocketAddress; import android.util.Slog; import dalvik.system.VMRuntime; import java.io.IOException; import java.io.InputStream; Loading Loading @@ -214,6 +216,11 @@ public final class Installer extends SystemService { public int patchoat(String apkPath, int uid, boolean isPublic, String pkgName, String instructionSet) { if (!isValidInstructionSet(instructionSet)) { Slog.e(TAG, "Invalid instruction set: " + instructionSet); return -1; } StringBuilder builder = new StringBuilder("patchoat"); builder.append(' '); builder.append(apkPath); Loading @@ -228,6 +235,11 @@ public final class Installer extends SystemService { } public int patchoat(String apkPath, int uid, boolean isPublic, String instructionSet) { if (!isValidInstructionSet(instructionSet)) { Slog.e(TAG, "Invalid instruction set: " + instructionSet); return -1; } StringBuilder builder = new StringBuilder("patchoat"); builder.append(' '); builder.append(apkPath); Loading @@ -241,6 +253,11 @@ public final class Installer extends SystemService { } public int dexopt(String apkPath, int uid, boolean isPublic, String instructionSet) { if (!isValidInstructionSet(instructionSet)) { Slog.e(TAG, "Invalid instruction set: " + instructionSet); return -1; } StringBuilder builder = new StringBuilder("dexopt"); builder.append(' '); builder.append(apkPath); Loading @@ -255,6 +272,11 @@ public final class Installer extends SystemService { public int dexopt(String apkPath, int uid, boolean isPublic, String pkgName, String instructionSet) { if (!isValidInstructionSet(instructionSet)) { Slog.e(TAG, "Invalid instruction set: " + instructionSet); return -1; } StringBuilder builder = new StringBuilder("dexopt"); builder.append(' '); builder.append(apkPath); Loading @@ -280,6 +302,11 @@ public final class Installer extends SystemService { } public int movedex(String srcPath, String dstPath, String instructionSet) { if (!isValidInstructionSet(instructionSet)) { Slog.e(TAG, "Invalid instruction set: " + instructionSet); return -1; } StringBuilder builder = new StringBuilder("movedex"); builder.append(' '); builder.append(srcPath); Loading @@ -291,6 +318,11 @@ public final class Installer extends SystemService { } public int rmdex(String codePath, String instructionSet) { if (!isValidInstructionSet(instructionSet)) { Slog.e(TAG, "Invalid instruction set: " + instructionSet); return -1; } StringBuilder builder = new StringBuilder("rmdex"); builder.append(' '); builder.append(codePath); Loading Loading @@ -403,6 +435,13 @@ public final class Installer extends SystemService { public int getSizeInfo(String pkgName, int persona, String apkPath, String libDirPath, String fwdLockApkPath, String asecPath, String[] instructionSets, PackageStats pStats) { for (String instructionSet : instructionSets) { if (!isValidInstructionSet(instructionSet)) { Slog.e(TAG, "Invalid instruction set: " + instructionSet); return -1; } } StringBuilder builder = new StringBuilder("getsize"); builder.append(' '); builder.append(pkgName); Loading Loading @@ -480,4 +519,21 @@ public final class Installer extends SystemService { builder.append(uid); return (execute(builder.toString()) == 0); } /** * Returns true iff. {@code instructionSet} is a valid instruction set. */ private static boolean isValidInstructionSet(String instructionSet) { if (instructionSet == null) { return false; } for (String abi : Build.SUPPORTED_ABIS) { if (instructionSet.equals(VMRuntime.getInstructionSet(abi))) { return true; } } return false; } }