We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
动态设置的好处在于,模块本身故障时,其对系统的修改也随之消失或是自动还原,是一种失效安全机制。
在MIUI系统的services.jar中:
package com.android.server.pm; public class PackageManagerServiceInjector { //... public static void checkPackageInstallerStatus(PackageManagerService pms, Settings curPkgSettings) { if (VERSION.SDK_INT >= 23 && !Build.IS_INTERNATIONAL_BUILD && !Build.IS_TABLET) { PackageSetting miuiInstaller = (PackageSetting) curPkgSettings.mPackages.get(MIUI_INSTALLER_PACKAGE); PackageSetting googleInstaller = (PackageSetting) curPkgSettings.mPackages.get(PACKAGE_INSTALLER_NAME); PackageSetting androidInstaller = (PackageSetting) curPkgSettings.mPackages.get("com.android.packageinstaller"); boolean isCtsBuild = AppOpsUtils.isXOptMode(); if (isCtsBuild) { if (miuiInstaller != null) { miuiInstaller.setInstalled(!isCtsBuild, 0); } mMiuiInstallerPackageSetting = (PackageSetting) curPkgSettings.mPackages.get(MIUI_INSTALLER_PACKAGE); mMiuiInstallerPackage = (Package) pms.mPackages.get(MIUI_INSTALLER_PACKAGE); curPkgSettings.mPackages.remove(MIUI_INSTALLER_PACKAGE); if (curPkgSettings.isDisabledSystemPackageLPr(MIUI_INSTALLER_PACKAGE)) { curPkgSettings.removeDisabledSystemPackageLPw(MIUI_INSTALLER_PACKAGE); } pms.mPackages.remove(MIUI_INSTALLER_PACKAGE); } else { if (mMiuiInstallerPackageSetting != null) { mMiuiInstallerPackageSetting.setInstalled(!isCtsBuild, 0); curPkgSettings.mPackages.put(MIUI_INSTALLER_PACKAGE, mMiuiInstallerPackageSetting); if ((mMiuiInstallerPackageSetting.pkgFlags & 128) != 0) { curPkgSettings.disableSystemPackageLPw(MIUI_INSTALLER_PACKAGE, true); } } if (mMiuiInstallerPackage != null) { pms.mPackages.put(MIUI_INSTALLER_PACKAGE, mMiuiInstallerPackage); } } if (googleInstaller != null) { googleInstaller.setInstalled(isCtsBuild, 0); } if (androidInstaller != null) { androidInstaller.setInstalled(isCtsBuild, 0); } } } //... }
可以仿照这个思路动态的设置一个包的安装状态,上面代码伴随持久化过程,不可直接利用。 可以考虑拦截掉相关持久化过程。在读取包安装状态时注入自定义包安装配置。 做这些之前必须详细弄清楚包安装状态的完整处理流程。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
动态设置的好处在于,模块本身故障时,其对系统的修改也随之消失或是自动还原,是一种失效安全机制。
在MIUI系统的services.jar中:
可以仿照这个思路动态的设置一个包的安装状态,上面代码伴随持久化过程,不可直接利用。
可以考虑拦截掉相关持久化过程。在读取包安装状态时注入自定义包安装配置。
做这些之前必须详细弄清楚包安装状态的完整处理流程。
The text was updated successfully, but these errors were encountered: