当前位置: 首页 > news >正文

投资 公司 网站模板做网站如何引流

投资 公司 网站模板,做网站如何引流,高端网站建设哪家便宜,网站建设0doit文章目录 前言一、PMS 启动流程二、APK 安装流程三、APK 卸载流程四、权限管理静态权限动态权限 五、 数据存储与一致性六、 PMS 的安全性策略1、权限检查2、签名认证3、动态权限管理4、应用安装验证5、保护系统目录 七、PMS 调试方法总结 前言 PackageManagerService#xf… 文章目录 前言一、PMS 启动流程二、APK 安装流程三、APK 卸载流程四、权限管理静态权限动态权限 五、 数据存储与一致性六、 PMS 的安全性策略1、权限检查2、签名认证3、动态权限管理4、应用安装验证5、保护系统目录 七、PMS 调试方法总结 前言 PackageManagerService简称 PMS是 Android 系统中的核心服务之一负责应用的安装、卸载、查询和权限管理等。它是 Android 应用生命周期管理和安全机制的基石。 主要职责 1、应用安装与卸载 2、静态权限解析与动态权限授予 3、应用信息查询 4、系统应用的预加载 5、数据存储与一致性管理 提示以下是本篇文章正文内容下面案例可供参考 一、PMS 启动流程 PMS 在系统启动时由 SystemServer 启动。其核心流程如下 1、SystemServer 初始化 在 SystemServer 的 startBootstrapServices 方法中调用 PackageManagerService.main()完成 PMS 的创建和初始化。 2、关键方法解析 PackageManagerService.main() public static PackageManagerService main(Context context, Installer installer, boolean factoryTest) {PackageManagerService pms new PackageManagerService(context, installer, factoryTest);ServiceManager.addService(package, pms);return pms; }这里完成了 1、PMS 对象的实例化。 2、将 PMS 注册到 ServiceManager供其他服务访问。 3、扫描已安装应用 调用 scanDirLI 方法扫描 /system/app、/data/app 等目录加载所有已安装的应用包信息并存储到内存和文件中如 packages.xml。 二、APK 安装流程 APK 的安装是 PMS 最重要的功能之一。从用户触发安装到系统完成更新的完整流程如下 1、入口方法 应用安装请求通过 PackageInstaller 模块发起最终调用 installPackageAsUser 方法。 public void installPackageAsUser(String originPath, InstallParams params, int userId) {mHandler.post(new InstallParams(originPath, params, userId)); }此处将安装请求交给 InstallParams 处理。 2、核心处理逻辑在 InstallParams 的 handleStartCopy 方法中执行以下步骤 解析 APK 文件通过 PackageParser 提取包名、版本等信息。签名校验调用 verifySignatures 确保 APK 签名合法。写入系统记录调用 mSettings.addPackage() 更新系统数据。通知系统服务更新系统组件如 AMS和广播安装完成事件 3、安装完成广播 APK 安装完成后PMS 会通过 Intent.ACTION_PACKAGE_ADDED 广播通知其他组件。 三、APK 卸载流程 APK 卸载的主要流程类似于安装但涉及的数据清理步骤更多 1、卸载入口 卸载请求通过 deletePackageAsUser 方法发起最终调用 deletePackageLI 方法。 2、核心处理逻辑 清理应用数据删除 /data/app/ 目录中的文件。 移除系统记录从 packages.xml 中删除相关记录。 广播通知通过 Intent.ACTION_PACKAGE_REMOVED 通知系统组件和应用。 3、特殊情况 如果应用包含共享库或依赖的资源PMS 会延迟清理确保不会影响其他应用。 四、权限管理 权限分为静态权限和动态权限PMS 通过解析 AndroidManifest.xml 和系统调用提供管理功能。 静态权限 解析过程 在应用安装时PMS 调用 PackageParser 的 parsePackage 方法解析应用的 AndroidManifest.xml 文件提取 标签内容。 PermissionInfo permission new PermissionInfo(); permission.name parser.getName(); mPermissions.add(permission);动态权限 授予与撤销 动态权限的管理主要通过 grantRuntimePermission 和 revokeRuntimePermission 方法实现。 public void grantRuntimePermission(String packageName, String permissionName, int userId) {enforcePermissionChecks(permissionName);mSettings.grantRuntimePermission(packageName, permissionName, userId); }实际场景 例如在某些即时通讯应用中用户拒绝麦克风权限会导致无法发送语音消息。 五、 数据存储与一致性 PMS 的数据存储主要通过以下文件完成 1、packages.xml 存储应用的基本信息如包名、路径、版本等。 package namecom.example.app codePath/data/app/com.example.app-1/base.apk /2、runtime-permissions.xml 存储动态权限授予记录。 permissionspermission nameandroid.permission.CAMERA grantedtrue / /permissions3、一致性保障 锁机制PMS 使用锁机制保护并发读写确保数据一致性。 文件备份在文件更新前系统会先保存备份副本确保异常恢复能力。 六、 PMS 的安全性策略 PMS 是 Android 安全机制的核心以下几点尤为重要 签名校验通过验证应用签名确保来源可信。 SELinux 策略限制 PMS 的文件访问权限增强系统安全性。 权限隔离动态权限机制确保用户对敏感操作的控制权。 源码介绍 1、权限检查 PMS 负责管理应用的权限包括动态权限和安装时权限。 权限检查主要在 checkPermission() 和 checkUidPermission() 方法中完成。 源码位置 frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java Override public int checkPermission(String permName, int uid) {final int permission mSettings.getPermissionLocked(permName, uid);return (permission PERMISSION_GRANTED) ? PERMISSION_GRANTED : PERMISSION_DENIED; }2、签名认证 在应用安装或更新时PMS 会通过 verifySignatures() 方法验证签名是否一致。 防止未授权的 APK 替换已安装的 APK。 源码位置 frameworks/base/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java private void verifySignatures(PackageParser.Package pkg, PackageSetting ps)throws PackageManagerException {if (!compareSignatures(pkg.mSigningDetails.signatures, ps.signatures.mSignatures)) {throw new PackageManagerException(INSTALL_FAILED_UPDATE_INCOMPATIBLE,Signature mismatch for pkg.packageName);} }3、动态权限管理 动态权限是通过运行时授予或拒绝的主要涉及以下文件 runtime-permissions.xml 用于存储动态权限的状态。 相关代码示例 源码位置 frameworks/base/services/core/java/com/android/server/pm/permission/PermissionManagerService.java public void grantRuntimePermission(String packageName, String permissionName, int userId) {// 检查权限是否属于动态权限enforceGrantRuntimePermission(packageName, permissionName, userId);// 更新权限的状态mPermissionManager.grantRuntimePermission(packageName, permissionName, userId); }4、应用安装验证 PMS 在应用安装时会调用 PackageInstaller 验证 APK 文件的完整性。 相关代码包括 安装路径检查 签名校验 安全区域限制 源码位置 frameworks/base/services/core/java/com/android/server/pm/PackageInstallerService.java private void enforceSystemOrRoot(String message) {if (Binder.getCallingUid() ! Process.SYSTEM_UID Binder.getCallingUid() ! Process.ROOT_UID) {throw new SecurityException(message);} }5、保护系统目录 只有系统权限的应用才可以访问 /system/app、/system/priv-app 等系统目录。 安全性检查代码 源码位置 frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java private boolean isPrivilegedApp(String packageName) {PackageSetting ps mSettings.mPackages.get(packageName);return ps ! null ps.isPrivileged(); }七、PMS 调试方法 开发或调试 PMS 时可以使用以下方法 1、日志调试 通过 adb logcat | grep PackageManager 查看安装、卸载日志。 2、源码定位 关注 PackageManagerService.java 文件定位核心方法如 installPackageAsUser 和 deletePackageLI。 3、文件检查 检查 /data/system/packages.xml 和 runtime-permissions.xml 文件内容排查问题。 总结 PMS 是 Android 系统中连接应用、用户和系统的桥梁其源码体现了安装、卸载、权限管理的高效性和安全性。通过深挖源码理解其核心流程可以帮助开发者更好地优化和调试应用。
http://www.dnsts.com.cn/news/130590.html

相关文章:

  • 购物02网站google doc wordpress
  • 简述网站建设的标准创意网站设计团队
  • 建设个电商平台网站需要多少钱招商网站建设解决方案
  • 如何用wordpress建站做医学期刊杂志网站
  • 网站建设哪家学校好黄石网站制作
  • 网站关键词如何布局宣传彩页设计制作
  • 高性能网站建设进阶项目推广方式有哪些
  • 商河网站建设某大学网络设计方案
  • 怎样制定一个网站建设方案室内设计培训学费多少
  • 网站改版 html做网站设计的网站
  • 阿里巴巴公司网站建设众筹网站怎么做推广方案
  • 免费建网站平台教做自己的网站难不难
  • 青岛做网站的信息技术公司wordpress创建登录页面模板
  • 网站设计的基本步骤推广文案范例
  • 网站的后台管理找施工员在哪个网站上找
  • 网站建设怎么找客户资源贵州贵州省住房和城乡建设厅网站
  • 大区直播间网站开发制作网络规划设计师视频网盘
  • 网站视觉优化怎么做天猫网站设计分析
  • 网站建设中最重要的wordpress 模拟数据
  • 专门做爬虫的网站龙口建设网站
  • 域名与网站海棠网站是什么意思
  • 天津的网站建设公司家教中介网站怎么做学员引流
  • 南宁网站建设公司怎么接单租房网58同城网租房
  • 电子政务网站系统域名申请后怎么建网站
  • 成都网站建设重庆最加科技wordpress 小说站主题
  • 自己做网站难吗平凉建设局官方网站
  • 做商城外贸网站wordpress页面立体效果
  • 国外建设网站首页vs网站开发源码
  • 广州市官网网站建设怎么样宁波网站推广服务
  • 旅游网网站的设计线上推广是什么意思