当前位置:   article > 正文

Android 10 精简系统_init.rc屏蔽

init.rc屏蔽

一、healthd裁剪
1. system/core/rootdir/init.rc
屏蔽healthd服务
#service healthd /system/bin/healthd
# class core
# critical
# group root system wakelock

二、app删除
2. 查看看是否有Contacts和Email应用: 有
3. 去掉build/make/target/product/core.mk中PRODUCT_PACKAGES下的Emailt和Contacts并编译看系统中是否还这两个应用: 还有
4. 删除out下对应设备目录下的system/app/Email和system/priv-app/Contacts目录,并编译看系统中是否还这两个应用: 还有
5. 把out目录里的system.img删除掉,再试: 不行
6. 把out/target/common/obj/Apps目录下Email和Contacts相关目录删除再试: 还是有
7. 重启一下系统试试: 不行
8. 把修改core.mk中,把mmsservice也删除掉试试:不行
9. 把源码中packages/apps中的Contacts和Email目录删除,Email目录保留emailcommon目录:好了,这次没了
此阶段结论:其实第3步后make clean一下也可以,但是不想make clean
10. 把Calendar、ExactCalculator(calculator2)、Music、Gallery、Gallery2、SoundRecorder、TvSettings全删掉

三、mediaserver裁剪
在frameworks/av/media/mediaserver/mediaserver.rc中,将mediaserver启动项屏蔽掉
编译后系统可以启动,但是没有壁纸了,设置壁纸也没作用

四、framework服务删减
1、VibratorService删除
屏蔽掉SystemServer.java中启动这个服务的代码

  1. traceBeginAndSlog(“StartVibratorService”);
  2. vibrator = new VibratorService(context);
  3. ServiceManager.addService(“vibrator”, vibrator);
  4. traceEnd();


删除后,应用调用Vibrator时不会崩溃,log会提示no vibrator service

下面这一段也屏蔽掉:

  1. traceBeginAndSlog(“MakeVibratorServiceReady”);
  2. try {
  3. vibrator.systemReady();
  4. } catch (Throwable e) {
  5. reportWtf(“making Vibrator Service ready”, e);
  6. }
  7. traceEnd();

2. ConsumerIrService删除
在system/core/rootdir/init.rc中on boot节点中增加如下代码:

setprop config.disable_consumerir true

3. LockSettingsService
在SystemServer.java中屏蔽LOCK_SETTINGS_SERVICE_CLASS的启动

  1. traceBeginAndSlog(“StartLockSettingsService”);
  2. try {
  3. mSystemServiceManager.startService(LOCK_SETTINGS_SERVICE_CLASS);
  4. lockSettings = ILockSettings.Stub.asInterface(
  5. ServiceManager.getService(“lock_settings”));
  6. } catch (Throwable e) {
  7. reportWtf(“starting LockSettingsService service”, e);
  8. }
  9. traceEnd();

屏蔽bootPhase对lockSetting的检查:

  1. traceBeginAndSlog(“StartBootPhaseLockSettingsReady”);
  2. mSystemServiceManager.startBootPhase(SystemService.PHASE_LOCK_SETTINGS_READY);
  3. traceEnd();

4. MmsServiceBroker
删除SystemServer中

  1. traceBeginAndSlog(“StartMmsService”);
  2. mmsService = mSystemServiceManager.startService(MmsServiceBroker.class);
  3. traceEnd();

第二个地方

  1. traceBeginAndSlog(“MakeMmsServiceReady”);
  2. try {
  3. if (mmsServiceF != null) mmsServiceF.systemRunning();
  4. } catch (Throwable e) {
  5. reportWtf(“Notifying MmsService running”, e);
  6. }
  7. traceEnd();

5. TextServicesManagerService
禁止拼写检查服务

  1. public boolean isSpellCheckerEnabled() {
  2. //default from true to false, by liuderu
  3. return getBoolean(Settings.Secure.SPELL_CHECKER_ENABLED, false);
  4. }

6. AccountManagerService裁剪
SystemServer.java去掉相关代码

  1. traceBeginAndSlog(“StartAccountManagerService”);
  2. mSystemServiceManager.startService(ACCOUNT_SERVICE_CLASS);
  3. traceEnd();

ContentService.java

  1. private SyncManager getSyncManager() {
  2. if (SystemProperties.getBoolean(“config.disable_network”, false)) {
  3. return null;
  4. }
  5. synchronized(mSyncManagerLock) {
  6. try {
  7. // Try to create the SyncManager, return null if it fails (e.g. the disk is full).
  8. if (mSyncManager == null) mSyncManager = new SyncManager(mContext, mFactoryTest);
  9. } catch (SQLiteException e) {
  10. Log.e(TAG, “Can’t create SyncManager”, e);
  11. }
  12. return mSyncManager;
  13. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/227996
推荐阅读
相关标签
  

闽ICP备14008679号