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

广州海珠建网站广告设计网课

广州海珠建网站,广告设计网课,wordpress删除漏洞,网页设计软件dw免费下载SystemConfig在哪里初始化 它声明在PackageManagerService类的静态方法main()中。在该方法中间定义Injector类对象时#xff0c;作为它的构造参数。它是调用的SystemConfig.getInstance()实现初始化#xff0c;之后能通过Injector类对象的getSystemConfig()得到SystemConfig类…SystemConfig在哪里初始化 它声明在PackageManagerService类的静态方法main()中。在该方法中间定义Injector类对象时作为它的构造参数。它是调用的SystemConfig.getInstance()实现初始化之后能通过Injector类对象的getSystemConfig()得到SystemConfig类对象。   SystemConfig类对象的初始化是在PackageManagerService的构造函数中调用的。 SystemConfig包含哪些内容 SystemConfig中的内容是读取的/system/etc/sysconfig、/system/etc/permissions、/vendor/etc/sysconfig、/vendor/etc/permissions、/odm/etc/sysconfig、/odm/etc/permissions、/oem/etc/sysconfig、/oem/etc/permissions、/product/etc/sysconfig、/product/etc/permissions、/system_ext/etc/sysconfig、/system_ext/etc/permissions目录下的.xml结尾的配置文件获取的还有/apex目录下的子目录的etc/permissions目录下的.xml结尾的配置文件如果设置了ro.boot.product.hardware.sku系统属性值还会读取/odm/etc/sysconfig/属性值 、/odm/etc/permissions/属性值 这两个对应目录下.xml结尾的配置文件的值。   它的内容很多都在它的成员变量中。 成员变量 mPermissions包含一些权限的相关信息主要是GID相关。   mSystemPermissions每个进程指定的权限   mSplitPermissions被分离权限的信息   mGlobalGids配置给所有包的全局组id   mSharedLibraries库相关信息   mAvailableFeatures特色的相关信息   mUnavailableFeatures不可用的特色的相关信息   mAllowInPowerSaveExceptIdle允许在省电模式下运行的应用除去device idle模式   mAllowInPowerSave允许在省电模式下运行的应用   mAllowInDataUsageSave在数据流量节省模式下可以在后台运行的应用   mAllowUnthrottledLocation在没有节流器的情况下允许运行后台位置   mAllowIgnoreLocationSettings即使应用的位置设置被关闭也可以获取到位置。   mAllowImplicitBroadcasts隐式广播传递给APP在目标O。   mLinkedApps这些应用处理域名验证默认用他们的网站   mDefaultVrComponents默认VR模式监听者服务的组件。   mPackageComponentEnabledState包中组件类的默认enabled状态。   mBackupTransportWhitelist被允许的备份端口service组件。   mDisabledUntilUsedPreinstalledCarrierAssociatedApps被禁止的运营商的包直到SIM插入获取运营商特权。   mDisabledUntilUsedPreinstalledCarrierApps被禁止直到可以使用的运营商应用的列表。   mPrivAppPermissions私有APP权限   mVendorPrivAppPermissions私有APP权限是配置在/odm或者/oem目录中   mProductPrivAppPermissions私有APP权限是配置在/product目录中   mSystemExtPrivAppPermissions私有APP权限是配置在/system_ext目录中 mPrivAppDenyPermissions私有APP拒绝权限   mVendorPrivAppDenyPermissions私有APP拒绝权限是配置在/odm或者/oem目录中   mProductPrivAppDenyPermissions私有APP拒绝权限是配置在/product目录中   mSystemExtPrivAppDenyPermissions私有APP拒绝权限是配置在/system_ext目录中 mOemPermissionsOEM权限   mHiddenApiPackageWhitelist私有API的白名单应用包   mAllowedAssociations允许协作的应用。   mAppDataIsolationWhitelistedAppsAPP数据孤立白名单   mBugreportWhitelistedPackagesBug报告白名单   mPackageToUserTypeWhitelist应用可以安装的用户类型白名单   mPackageToUserTypeBlacklist应用可以安装的用户类型黑名单   mNamedActors系统预定义的唯一的命名的演员的名字和包名的映射   mOverlayConfigSignaturePackage覆盖配置签名的包   mRollbackWhitelistedPackages回退应用的白名单   mWhitelistedStagedInstallers缓存安装的包的白名单   mModulesInstallerPackageName模块安装者的包名   mAllowedVendorApexesapex包对应的安装者包 举例使用 拿权限配置相关信息来举例。   权限的相关信息是在PermissionManagerService中的PermissionRegistry类型成员变量mRegistry中mRegistry里面的信息主要来自配置文件/data/system/packages.xml文件。/data/system/packages.xml文件里permissions标签下有许多权限相关信息。 packages.xml文件权限相关截图 这里主要配置的权限名称、包名还有保护等级这些内容。是不包括上面提到的GID相关信息的。   系统是先读取的SystemConfig的相关文件获取信息然后将信息添加到mRegistry中。后面再读取的/data/system/packages.xml文件最后将两者合并得到对应权限信息。 先读取的SystemConfig的相关文件 在SystemConfig初始化时会读取相关文件这里以/system/etc/permissions/platform.xml文件为例得到权限信息。并且将它们放在SystemConfig对象的成员变量ArrayMapString, PermissionEntry类型mPermissions中。 packages.xml文件权限相关截图 mPermissions的值类型PermissionEntry有成员变量int[] gids它对应着截图中的group标签进程Uid组。这其中是字符类型最后会转化成整数类型。并且放入int[] gids。PermissionEntry还有一个成员变量boolean类型 perUser。也是通过 packages.xml文件配置的它会配置在permission标签中。   SystemConfig对象初始化完毕之后这些权限相关信息就在mPermissions中了。   PermissionManagerService在初始化时会想将SystemConfig对象的mPermissions中的权限信息加入PermissionManagerService类对象的成员变量mRegistry中。相关代码如下 // propagate permission configurationfinal ArrayMapString, SystemConfig.PermissionEntry permConfig SystemConfig.getInstance().getPermissions();synchronized (mLock) {for (int i0; ipermConfig.size(); i) {final SystemConfig.PermissionEntry perm permConfig.valueAt(i);Permission bp mRegistry.getPermission(perm.name);if (bp null) {bp new Permission(perm.name, android, Permission.TYPE_CONFIG);mRegistry.addPermission(bp);}if (perm.gids ! null) {bp.setGids(perm.gids, perm.perUser);}}}它会将mPermissions中的PermissionEntry类型转变成Permission类型并将类型设置为Permission.TYPE_CONFIG代表它是可以配置的。并且将gids和perUser设置到Permission对象中。Permission对象会添加到mRegistry中。   /data/system/packages.xml文件中的权限相关信息读取是在SystemConfig初始化之后。   /data/system/packages.xml的信息读取是在Settings对象的初始化中。它的相关信息读取之后会存出在Settings对象的成员变量LegacyPermissionSettings类型 mPermissions中确切地说是在mPermissions的成员变量ArrayMapString, LegacyPermission类型mPermissions中。   之后PermissionManagerService会调用readLegacyPermissions(NonNull LegacyPermissionSettings legacyPermissionSettings)将LegacyPermissionSettings类型 mPermissions中数据和SystemConfig中的权限信息合并。 private void readLegacyPermissions(NonNull LegacyPermissionSettings legacyPermissionSettings) {for (int readPermissionOrPermissionTree 0; readPermissionOrPermissionTree 2;readPermissionOrPermissionTree) {final ListLegacyPermission legacyPermissions readPermissionOrPermissionTree 0? legacyPermissionSettings.getPermissions(): legacyPermissionSettings.getPermissionTrees();synchronized (mLock) {final int legacyPermissionsSize legacyPermissions.size();for (int i 0; i legacyPermissionsSize; i) {final LegacyPermission legacyPermission legacyPermissions.get(i);final Permission permission new Permission(legacyPermission.getPermissionInfo(), legacyPermission.getType());if (readPermissionOrPermissionTree 0) {// Config permissions are currently read in PermissionManagerService// constructor. The old behavior was to add other attributes to the config// permission in LegacyPermission.read(), so equivalently we can add the// GIDs to the new permissions here, since config permissions created in// PermissionManagerService constructor get only their names and GIDs there.final Permission configPermission mRegistry.getPermission(permission.getName());if (configPermission ! null configPermission.getType() Permission.TYPE_CONFIG) {permission.setGids(configPermission.getRawGids(),configPermission.areGidsPerUser());}mRegistry.addPermission(permission);} else {mRegistry.addPermissionTree(permission);}}}}}可以看到循环2次还有权限树的相关处理权限树的相关信息也是来自/data/system/packages.xml文件。我们先说权限。参数legacyPermissionSettings.getPermissions()里面是从/data/system/packages.xml中读出来的权限信息而mRegistry目前是从/system/etc/permissions/platform.xml读出来的。所以接下来就是处理两者之间的信息合并。并且重新添加到mRegistry中这里是使用的addPermission方法mRegistry中存储的是类似Map相同名字的就直接覆盖了。 总结 从以上可知SystemConfig中的内容就如同它的名字一样是配置。它们最终是要添加到对应的相关数据中去。
http://www.pierceye.com/news/473870/

相关文章:

  • 宁夏电力建设工程公司门户网站万能编程软件
  • 网站上常用字体企业服务中心官网
  • 大作设计网站域名访问升级紧急中拿笔记好
  • 银川做网站的有哪些建筑工程网上报建网站诚信手册
  • 本地做网站绑定域名ic商城网站建设南大
  • react 网站开发seo软件资源
  • 中国最大免费wap网站怎样才能建设只是于自己的网站
  • 装修网站平台排行榜wordpress做视频网站吗
  • flash网站建设价格播放器网站怎么做
  • 微网站 源码 免费文本编辑器 网站
  • 电商网站通用左侧弹出导航有南昌网站优化公司
  • 沈阳三好街做网站公司个人网页设计风格分析
  • 网站建设经费计划内容网站建设中存在的问题
  • 天凡建设股份有限公司网站苍山网站建设
  • 如何新建网站dw线下推广的渠道和方法
  • 网站友链wordpress火车头发布
  • 青海网站维护公司自己的网站叫什么
  • 微网站 淘宝客wordpress备案号放置
  • html5 手机网站 模版网站信息员队伍建设
  • 基金会网站开发方案政务公开网站建设重点
  • 影视网站制作网页游戏的软件
  • 企业做网站的费用如何科目青色网站欣赏
  • 做视频网站怎么赚钱的网站开发流程的三个部分
  • 牡丹江市建设行业协会网站广西住房城乡建设厅网站首页
  • 重庆网站关键词排名优化免费网页代理的推荐
  • 定制型网站怎么做重庆软件开发公司有哪些
  • 自适应型网站建设网站建设搭建是什么意思
  • 网站建设能够不同地方网址大全12345
  • 做网批那个网站好校园网站界面建设
  • 免费网站建设php济南网站建设公司官网