diff --git a/app/src/main/java/org/lsposed/manager/ui/fragment/CompileDialogFragment.java b/app/src/main/java/org/lsposed/manager/ui/fragment/CompileDialogFragment.java index f1758e55..63f7578c 100644 --- a/app/src/main/java/org/lsposed/manager/ui/fragment/CompileDialogFragment.java +++ b/app/src/main/java/org/lsposed/manager/ui/fragment/CompileDialogFragment.java @@ -83,6 +83,7 @@ public class CompileDialogFragment extends AppCompatDialogFragment { @Override protected Throwable doInBackground(String... commands) { try { + LSPManagerServiceHolder.getService().clearApplicationProfileData(commands[0]); if (LSPManagerServiceHolder.getService().performDexOptMode(commands[0])) { return null; } else { diff --git a/daemon/src/main/java/org/lsposed/lspd/service/LSPManagerService.java b/daemon/src/main/java/org/lsposed/lspd/service/LSPManagerService.java index 988854a7..cc4d1f15 100644 --- a/daemon/src/main/java/org/lsposed/lspd/service/LSPManagerService.java +++ b/daemon/src/main/java/org/lsposed/lspd/service/LSPManagerService.java @@ -821,6 +821,11 @@ public class LSPManagerService extends ILSPManagerService.Stub { } } + @Override + public void clearApplicationProfileData(String packageName) throws RemoteException { + PackageService.clearApplicationProfileData(packageName); + } + @Override public boolean performDexOptMode(String packageName) throws RemoteException { return PackageService.performDexOptMode(packageName); diff --git a/daemon/src/main/java/org/lsposed/lspd/service/PackageService.java b/daemon/src/main/java/org/lsposed/lspd/service/PackageService.java index 747f955c..72ef07b1 100644 --- a/daemon/src/main/java/org/lsposed/lspd/service/PackageService.java +++ b/daemon/src/main/java/org/lsposed/lspd/service/PackageService.java @@ -313,11 +313,17 @@ public class PackageService { return intent; } + public static void clearApplicationProfileData(String packageName) throws RemoteException { + IPackageManager pm = getPackageManager(); + if (pm == null) return; + pm.clearApplicationProfileData(packageName); + } + public static boolean performDexOptMode(String packageName) throws RemoteException { IPackageManager pm = getPackageManager(); if (pm == null) return false; return pm.performDexOptMode(packageName, SystemProperties.getBoolean("dalvik.vm.usejitprofiles", false), - "speed", true, true, null); + SystemProperties.get("pm.dexopt.install", "speed-profile"), true, true, null); } } diff --git a/hiddenapi/stubs/src/main/java/android/content/pm/IPackageManager.java b/hiddenapi/stubs/src/main/java/android/content/pm/IPackageManager.java index 36ef13dc..279e8975 100644 --- a/hiddenapi/stubs/src/main/java/android/content/pm/IPackageManager.java +++ b/hiddenapi/stubs/src/main/java/android/content/pm/IPackageManager.java @@ -93,6 +93,8 @@ public interface IPackageManager extends IInterface { String targetCompilerFilter, boolean force, boolean bootComplete, String splitName) throws RemoteException; + void clearApplicationProfileData(String packageName) throws RemoteException; + abstract class Stub extends Binder implements IPackageManager { public static IPackageManager asInterface(IBinder obj) { diff --git a/services/manager-service/src/main/aidl/org/lsposed/lspd/ILSPManagerService.aidl b/services/manager-service/src/main/aidl/org/lsposed/lspd/ILSPManagerService.aidl index 7a720722..2aee4460 100644 --- a/services/manager-service/src/main/aidl/org/lsposed/lspd/ILSPManagerService.aidl +++ b/services/manager-service/src/main/aidl/org/lsposed/lspd/ILSPManagerService.aidl @@ -87,4 +87,6 @@ interface ILSPManagerService { void setDexObfuscate(boolean enable) = 43; int getDex2OatWrapperCompatibility() = 44; + + void clearApplicationProfileData(in String packageName) = 45; }