优化开机速度--抓log发现不少用不着的servicejava

[ 22.577559] c3 init: Parsing directory /vendor/etc/init...

[ 22.583263] c3 init: Parsing file /vendor/etc/init/android.hardware.audio@2.0-service.rc...

[ 22.592402] c3 init: Parsing file /vendor/etc/init/android.hardware.biometrics.fingerprint@2.1-service.rc...

[ 22.603000] c3 init: Parsing file /vendor/etc/init/android.hardware.bluetooth@1.0-service.rc...

[ 22.612471] c3 init: Parsing file /vendor/etc/init/android.hardware.camera.provider@2.4-service.rc...

[ 22.622456] c3 init: Parsing file /vendor/etc/init/android.hardware.cas@1.0-service.rc...

[ 22.631375] c3 init: Parsing file /vendor/etc/init/android.hardware.configstore@1.0-service.rc...

[ 22.640973] c3 init: Parsing file /vendor/etc/init/android.hardware.drm@1.0-service.rc...

[ 22.650100] c3 init: Parsing file /vendor/etc/init/android.hardware.dumpstate@1.0-service.rc...

[ 22.659732] c3 init: Parsing file /vendor/etc/init/android.hardware.gatekeeper@1.0-service.rc...

[ 22.669427] c3 init: Parsing file /vendor/etc/init/android.hardware.gnss@1.0-service.rc...

[ 22.678653] c3 init: Parsing file /vendor/etc/init/android.hardware.graphics.allocator@2.0-service.rc...

[ 22.689081] c3 init: Parsing file /vendor/etc/init/android.hardware.graphics.composer@2.1-service.rc...

[ 22.699269] c3 init: Parsing file /vendor/etc/init/android.hardware.health@1.0-service.rc...

[ 22.708675] c3 init: Parsing file /vendor/etc/init/android.hardware.keymaster@3.0-service.rc...

[ 22.718172] c3 init: Parsing file /vendor/etc/init/android.hardware.light@2.0-service.rc...

[ 22.727480] c3 init: Parsing file /vendor/etc/init/android.hardware.media.omx@1.0-service.rc...

[ 22.737140] c3 init: Parsing file /vendor/etc/init/android.hardware.memtrack@1.0-service.rc...

[ 22.746312] c3 init: Parsing file /vendor/etc/init/android.hardware.sensors@1.0-service.rc...

[ 22.755606] c3 init: Parsing file /vendor/etc/init/android.hardware.usb@1.1-service.rc...

[ 22.764512] c3 init: Parsing file /vendor/etc/init/android.hardware.vibrator@1.0-service.rc...

[ 22.773805] c3 init: Parsing file /vendor/etc/init/android.hardware.wifi@1.0-service.rc...

想着之前都是在init.rc中把这些脚本import解析执行,搜了一大圈没找到,又去SystemServer.java中找,也没找到,回过头分析log,“Parsing directory”  找到python

./core/init/init_parser.cpp: LOG(INFO) << "Parsing directory " << path << "...";

bool Parser::ParseConfig(const std::string& path) {

if (is_dir(path.c_str())) {

return ParseConfigDir(path);

}

return ParseConfigFile(path);

}

继续搜索android

std::string bootscript = GetProperty("ro.boot.init_rc", "");

if (bootscript.empty()) {

parser.ParseConfig("/init.rc");

parser.set_is_system_etc_init_loaded(

parser.ParseConfig("/system/etc/init"));

parser.set_is_vendor_etc_init_loaded(

parser.ParseConfig("/vendor/etc/init"));

parser.set_is_odm_etc_init_loaded(parser.ParseConfig("/odm/etc/init"));

} else {

parser.ParseConfig(bootscript);

parser.set_is_system_etc_init_loaded(true);

parser.set_is_vendor_etc_init_loaded(true);

parser.set_is_odm_etc_init_loaded(true);

static void import_late(const std::vector<:string>& args, size_t start_index, size_t end_index) {

Parser& parser = Parser::GetInstance();

if (end_index <= start_index) {

// Fallbacks for partitions on which early mount isn't enabled.

if (!parser.is_system_etc_init_loaded()) {

parser.ParseConfig("/system/etc/init");

parser.set_is_system_etc_init_loaded(true);

}

if (!parser.is_vendor_etc_init_loaded()) {

parser.ParseConfig("/vendor/etc/init");

parser.set_is_vendor_etc_init_loaded(true);

}

if (!parser.is_odm_etc_init_loaded()) {

parser.ParseConfig("/odm/etc/init");

parser.set_is_odm_etc_init_loaded(true);

}

那请问 /vendor/etc/init 是在上面蓝色仍是红色出解析的呢?c++

接口和软件包

HIDL 是围绕接口进行编译的,接口是面向对象的语言使用的一种用来定义行为的抽象类型。每一个接口都是软件包的一部分。git

软件包

软件包名称能够具备子级,例如 package.subpackage。已发布的 HIDL 软件包的根目录是 hardware/interfaces 或 vendor/vendorName(例如 Pixel 设备为 vendor/google)。软件包名称在根目录下造成一个或多个子目录;定义软件包的全部文件都位于同一目录下。例如,package android.hardware.example.extension.light@2.0 能够在 hardware/interfaces/example/extension/light/2.0 下找到。shell

下表列出了软件包前缀和位置:ubuntu

软件包前缀

位置

android.hardware.*

hardware/interfaces/*

android.frameworks.*

frameworks/hardware/interfaces/*

android.system.*

system/hardware/interfaces/*

android.hidl.*

system/libhidl/transport/*

软件包目录中包含扩展名为 .hal 的文件。每一个文件均必须包含一个指定文件所属的软件包和版本的 package 语句。文件 types.hal(若是存在)并不定义接口,而是定义软件包中每一个接口能够访问的数据类型。架构

如今删除部分serveiceapp

hidl-gen工具

在Treble架构中,常常会提到HIDL,首先介绍和HIDL相关的一个工具hidl-gen,系统定义的全部的.hal接口,都是经过hidl-gen工具转换成对应的代码。好比hardware/interfaces/power/1.0/IPower.hal,会经过hidl-gen转换成out/soong/.intermediates/hardware/interfaces/power/1.0/android.hardware.power@1.0_genc++/gen/android/hardware/power/1.0/PowerAll.cpp文件,为了深刻了解,介绍相关原理,首先分析hidl-gen。composer

hidl-gen源码路径:system/tools/hidl,是在ubuntu上可执行的二进制文件。

使用方法:hidl-gen -o output-path -L language (-r interface-root) fqname

例子:

hidl-gen -Lmakefile -r android.hardware:hardware/interfaces -r android.hidl:system/libhidl/transpor

diff --git a/update-base-files.sh b/update-base-files.sh

index 1eb6b51..b5b1a99 100755

--- a/update-base-files.sh

+++ b/update-base-files.sh

@@ -22,9 +22,9 @@ options="-Lexport-header \

hidl-gen $options \

-o hardware/libhardware/include/hardware/sensors-base.h \

android.hardware.sensors@1.0

-hidl-gen $options \

- -o hardware/libhardware/include/hardware/nfc-base.h \

- android.hardware.nfc@1.0

+#hidl-gen $options \

+# -o hardware/libhardware/include/hardware/nfc-base.h \

+# android.hardware.nfc@1.0

hidl-gen $options \

-o hardware/libhardware/include/hardware/gnss-base.h \

android.hardware.gnss@1.0

参考:

https://source.android.com/devices/architecture/hidl/interfaces

https://blog.csdn.net/xiaosayidao/article/details/75577940

android vendor接口,HIDL众多service在那启动的--/vendor/etc/init/android.hardware.*@2.0-service.rc...相关推荐

  1. Android 面试必备 - 系统、App、Activity 启动过程

    前言 最近准备更新 Android 面试必备基础知识系列,有兴趣的可以关注我的微信公众号 stormjun94,有更新时,第一时间会在微信公众号上面发布,同时,也会同步在 GitHub 上面更新,如果 ...

  2. 【mysql】启动mysql 服务器 Redirecting to /bin/systemctl start mysql.service

    service mysql start 启动服务器 出现 Redirecting to /bin/systemctl start mysql.service错 原因推测:service mysql s ...

  3. android treble项目HIDL学习总结

    文章目录 概念介绍 Treble项目---HIDL产生背景,独立升级framework需求 HIDL概念---HAL 接口定义语言,目标framework和HAL解耦 HIDL的两种模式---Pass ...

  4. Android 8 的HIDL 学习 之 Code demo

    当学习到一定程度的时候,发现helloworld 也越来越复杂了. 今天就来讲讲 HIDL 的一些内容吧 直接上 首先,这个是HIDL话说是在 Android 8 才开始引用进来的.而具体啥是HIDL ...

  5. android aidl接口初步了解

    2019独角兽企业重金招聘Python工程师标准>>> //app类package com.qudoulicai.www.aidltest;import android.conten ...

  6. android otp接口,Android-高通平台调试camera的OTP参数

    来源:http://blog.csdn.net/m0_37256698/article/details/70139272 需要修改的文件如下(以hi546为例): ./kernel/arch/arm/ ...

  7. Qt for Android 调用android原生接口分享图片或文字

    在用Qt开发android应用的时候,有一个需求是通过调用android原生接口去实现图片分享功能,原理很简单,首先在java文件中用android接口封装一个分享功能的方法,然后在C++中调用QAn ...

  8. service启动activity_「 Android 10 四大组件 」系列—Service 的 quot; 启动流程 quot;

    作者:DeepCoder 核心源码 关键类路径 Service 的启动过程相对 Activity 的启动过程来说简单了很多,我们都知道怎么去创建和启动一个 Service, 那么你有没有从源码角度研究 ...

  9. android蓝牙通信_使用Arduino构建OLED显示屏与Android手机接口的智能手表

    背景知识视频教程 Arduino 训练营:通过项目学习​viadean.com 通过制作Arduino UNO FM收音机接收器学习Arduino I2C​viadean.com 通过构建实际应用程序 ...

  10. android 环形时间显示_使用Arduino构建OLED显示屏与Android手机接口的智能手表

    背景知识视频教程 Arduino 训练营:通过项目学习​viadean.com 通过制作Arduino UNO FM收音机接收器学习Arduino I2C​viadean.com 通过构建实际应用程序 ...

最新文章

  1. c语言断链隐藏dll,通过断链隐藏模块(DLL)
  2. rbac 一个用户对应多个账号_电商后台系统:管理后台之账号管理(一)
  3. 难点电路详解之负反馈放大器电路(2)
  4. java自动定义一个map类_自定义实现Map类 高效版
  5. ***从菜鸟到大虾教程下载
  6. 摆脱困境:在每种测试方法之前重置自动增量列
  7. 8086条件转移指令JE,JZ
  8. 鸟哥的linux私房菜有乌班图,折腾Ubuntu的一些summary--初装Ubuntu18和重装Ubuntu18
  9. javascript 唯一值的集合 Set对象
  10. WordPress页面、文章、分类等的条件判断的标签集合
  11. 【Latex】下标放在符号正下方
  12. 从零开始学习音视频编程技术(六) FFMPEG Qt视频播放器之显示图像
  13. C程序100例 第一题
  14. python切片迭代_Python高级特性 切片 迭代解析
  15. 600个开源iOS应用库
  16. leetcode64. 最小路径和
  17. Android setBackgroundDrawable()过时解决办法
  18. 从0.5到1写个rpc框架 - 2:远程服务调用(grpc)
  19. 第九届中国开源黑客松活动将于2019年4月18日-4月20日,在深圳举办
  20. ExtJS之EditorGridPanel

热门文章

  1. 上海职称英语计算机取消,上海地区职称英语考试是不是取消了?
  2. Improved autoencoder for unsupervised anomaly detection
  3. deb ipa pxl
  4. js初级动态随机抽人事件运用 计时器和超时期应用 解决用on事件onclick多次点击不能停止的问题
  5. 学那么多东西有屁用,不如先建立自己的知识体系
  6. DM8 MPP集群部署
  7. Android 中轴时光轴
  8. json解析与XML解析
  9. 【Qt】警告Missing reference in range-for with non trivial type
  10. 一些计算机u口无法使用的原因,电脑USB接口不能用的原因大全