Skip to content

Commit 468b5ca

Browse files
committed
Force recompilation on Huawei devices
They have added several checks that disable the recompiliation of pre-optimized APKs. This must be undone when Xposed is active. Fixes rovo89/Xposed#72.
1 parent 434b97f commit 468b5ca

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

app/src/main/java/de/robv/android/xposed/XposedBridge.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import de.robv.android.xposed.services.BaseService;
4747

4848
import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;
49+
import static de.robv.android.xposed.XposedHelpers.findClassIfExists;
4950
import static de.robv.android.xposed.XposedHelpers.getBooleanField;
5051
import static de.robv.android.xposed.XposedHelpers.getIntField;
5152
import static de.robv.android.xposed.XposedHelpers.getObjectField;
@@ -246,6 +247,14 @@ protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
246247
param.args[2] = true;
247248
}
248249
});
250+
251+
// Huawei
252+
Class<?> clsHwPackageManager = findClassIfExists("com.android.server.pm.HwPackageManagerService", cl);
253+
if (clsHwPackageManager != null) {
254+
findAndHookMethod(clsHwPackageManager, "isOdexMode", XC_MethodReplacement.returnConstant(false));
255+
String className = "com.android.server.pm." + (Build.VERSION.SDK_INT >= 23 ? "PackageDexOptimizer" : "PackageManagerService");
256+
findAndHookMethod(className, cl, "dexEntryExists", String.class, XC_MethodReplacement.returnConstant(true));
257+
}
249258
}
250259
}
251260
});

0 commit comments

Comments
 (0)