最近工作原因已经开始由Android软件转向Android系统进行转变。目前碰到很多问题,自己在CSDN进行记录相关问题,加深印象。提高自己自己学习效率。

Android系统启动后Zygote进程会fork SystemServer进程。SystemServer.java文件位于 /base/services/java/com/android/server/SystemServer.java。
SystemServer 启动Andorid很多服务如:AMS,PMS等等。主要是通过下面三个方法启动:

​// Start services.try {traceBeginAndSlog("StartServices");startBootstrapServices();startCoreServices();startOtherServices();SystemServerInitThreadPool.shutdown();} catch (Throwable ex) {Slog.e("System", "******************************************");Slog.e("System", "************ Failure starting system services", ex);throw ex;} finally {traceEnd();}​

今天记录问题是在裁剪Android系统过程中有些不需要的服务是可以不启动的。比如说我不需要WifiP2P服务功能,这部分功能其实通过下面代码进行判断是否要启动的:

if(context.getPackageManager().hasSystemFeature
(PackageManager.FEATURE_WIFI_DIRECT)) {traceBeginAndSlog("StartWifiP2P");mSystemServiceManager.startService(WIFI_P2P_SERVICE_CLASS);traceEnd();
}

PackageManager通过hasSystemFeature判断是否需要启动WifiP2P。其实是从SystemConfig读取到的mAvailableFeatures中查询是否存在,或者版本更新。mAvailableFeatures是一个ArrayMap对象。其中value是通过Android手机系统目录下system下的etc文件。我个人使用代码是Android 8.1 _r34代码。其实上述目录是拷贝frameworks/native/data/etc下面的xml文件。不同厂商也有可能放置在不同位置比如system/etc/permissions等。如果删除这个xml,就会导致这个服务不能启动。上诉WIFI热点功能对应xml文件为android.hardware.wifi.direct.xml。文件如下:

<!--  Copyright (C) 2011 The Android Open Source ProjectLicensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.-->
<!--  This is the standard feature indicating that the device includes WiFi Direct.  -->
<permissions>
<feature name="android.hardware.wifi.direct"/>
</permissions>

这些文件会再编译的mk文件中配置。将其拷贝到out目录下,一般情况主要是build、vendor还有就是device下的的mk文件。而我需要做的事情就是删除mk里面相关拷贝配置。从而达到屏蔽相关不需要服务。

PackageManager.hasSystemFeature Android SystemServer裁剪相关推荐

  1. android 图片裁剪库,(译)uCrop介绍 —— 我们自己的Android图片裁剪库

    我们在 Yalantis 开发了许多不同的 Android 应用,经验告诉我们,几乎在所有的应用中,都需要图片裁剪的功能.图片裁剪的用途很广,从简单的用户头像调整到图片的比例裁剪.灵活变换等各种复杂的 ...

  2. Android 图片裁剪 (附源码)

    Android 图片裁剪 前言 正文 一.创建并配置项目 二.权限申请 三.获取图片Uri 四.图片裁剪 五.源码 尾声 运行效果图 前言   图片裁剪是对图片进行区域选定,然后裁剪选定的区域,形成一 ...

  3. android音频裁剪(2)——Wav裁剪

    =====原创不易,请尊重每一位原创,让我们更有分享的动力,转载请注明===== 转载链接 在android音频裁剪(1)--MP3裁剪一文中我分享了对mp3文件裁剪方法.在本文中我将分享对另外一种音 ...

  4. Android 图片裁剪之三剑式(二)

    文章目录 1.PorterDuffXfermode 简介 2.PorterDuffXfermode 类型介绍 3.PorterDuffXfermode 使用场景 圆形头像 叠加图片还可以实现橡皮擦和加 ...

  5. android 华为裁剪全图,调用Android原生裁剪方式裁剪图片并保存

    前言 Android提供了原生的裁剪方式,并输出裁剪后的资源到相应的目录.主要有两种方式,下面我们来看看这两种方式. 由于Android10提出分区储存,我们这里为了方便暂不使用分区储存,通过使用 a ...

  6. Android SystemServer分析

    一.Zygote到SystemServer   SystemServer是由Zygote fork生成的,进程名为system_server,这个进程包含里framework中的核心服务,在Zygot ...

  7. Android大图裁剪解决办法

    某些功能需要拍照或者从相册选择照片后经过裁剪再上传的时候, cropp_w_picpath 可以调用手机自带的com.android.camera.action.CROP这个Intent进行裁剪 通过 ...

  8. android glide裁剪图片大小,Glide系列(二)------图片剪裁

    一.简介: 大家应该知道,我们在见面上显示的ImageView的大小和从网络取到的图片的大小是不一样的,最好的结果是网络图片刚好满足我们ImageView的尺寸,然而实际上,网络获取的图片或者从我们手 ...

  9. android 画布裁剪,一种基于Android系统对UI控件进行轮廓剪裁及美化的方法与流程...

    本发明涉及Android应用的技术领域,特别涉及一种基于Android系统对UI控件进行轮廓剪裁及美化的方法. 背景技术: 目前,随着智能电视的普及,Android应用层出不穷,而那些表现形式单一.传 ...

  10. android 图片剪切组件,Android 图片裁剪库 uCrop

    软件介绍 uCrop 是[Yalantis](https://yalantis.com/) 组织开源的图片裁剪库, 支持缩放, 旋转图片, 支持各种比例的裁剪框, 非常强大的一个图片裁剪库. 使用 1 ...

最新文章

  1. Kendo UI常用示例汇总(九)
  2. 使用cacti对mysql监控的图像解释_Linux下的监控软件cacti的安装与配置
  3. Kotlin 学习笔记01
  4. 大数据之Linux常用命令
  5. react服务端/客户端,同构代码心得
  6. C# linq创建嵌套组
  7. ABAP 获取登陆者的IP地址和主机名
  8. k型热电偶分度表_一张表搞定热电偶与热电阻的问题
  9. Flutter异步加载FutureBuilder重绘解决方案
  10. HashMap及ConcurrentHashMap基本原理概述
  11. web项目中镶嵌player
  12. vue 读取 txt
  13. 系统架构设计的十大原则
  14. UCHome全面大解析【二】----基本体系结构
  15. RESTful 接口设计规范
  16. 班级校园网页设计作业 静态HTML我的班级网页 DW班级网站模板 大学生简单班级网页作品代码 我的大学网页制作 学生班级网页设计作业
  17. 迭代瀑布不是Scrum
  18. Lesson 19 A very dear cat 内容鉴赏
  19. 超链接的5种表现形式(用法)
  20. Beta阶段敏捷冲刺①

热门文章

  1. STM32 USB主机通信连接中断过程
  2. python爬取网易云音乐飙升榜音乐,网易云音乐-飙升榜歌曲信息爬取
  3. seaweedfs学习
  4. android第三方库进程,Android 第三方库AgentWeb的使用
  5. (转自MBA智库百科)弗兰克·吉尔布雷斯
  6. Insyde uefi 隐藏设置_文颐法语:iOS 14安装后发现的9个隐藏的iPhone功能
  7. 嵌入式系统、嵌入式设计软件概述
  8. 注册表删除windows开机启动项
  9. JavaScript自动切换并播放视频 | Tampermonkey
  10. 百度 图像识别Api logo识别 基于java的Demo