android vendor接口,HIDL众多service在那启动的--/vendor/etc/init/android.hardware.*@2.0-service.rc...
优化开机速度--抓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...相关推荐
- Android 面试必备 - 系统、App、Activity 启动过程
前言 最近准备更新 Android 面试必备基础知识系列,有兴趣的可以关注我的微信公众号 stormjun94,有更新时,第一时间会在微信公众号上面发布,同时,也会同步在 GitHub 上面更新,如果 ...
- 【mysql】启动mysql 服务器 Redirecting to /bin/systemctl start mysql.service
service mysql start 启动服务器 出现 Redirecting to /bin/systemctl start mysql.service错 原因推测:service mysql s ...
- android treble项目HIDL学习总结
文章目录 概念介绍 Treble项目---HIDL产生背景,独立升级framework需求 HIDL概念---HAL 接口定义语言,目标framework和HAL解耦 HIDL的两种模式---Pass ...
- Android 8 的HIDL 学习 之 Code demo
当学习到一定程度的时候,发现helloworld 也越来越复杂了. 今天就来讲讲 HIDL 的一些内容吧 直接上 首先,这个是HIDL话说是在 Android 8 才开始引用进来的.而具体啥是HIDL ...
- android aidl接口初步了解
2019独角兽企业重金招聘Python工程师标准>>> //app类package com.qudoulicai.www.aidltest;import android.conten ...
- android otp接口,Android-高通平台调试camera的OTP参数
来源:http://blog.csdn.net/m0_37256698/article/details/70139272 需要修改的文件如下(以hi546为例): ./kernel/arch/arm/ ...
- Qt for Android 调用android原生接口分享图片或文字
在用Qt开发android应用的时候,有一个需求是通过调用android原生接口去实现图片分享功能,原理很简单,首先在java文件中用android接口封装一个分享功能的方法,然后在C++中调用QAn ...
- service启动activity_「 Android 10 四大组件 」系列—Service 的 quot; 启动流程 quot;
作者:DeepCoder 核心源码 关键类路径 Service 的启动过程相对 Activity 的启动过程来说简单了很多,我们都知道怎么去创建和启动一个 Service, 那么你有没有从源码角度研究 ...
- android蓝牙通信_使用Arduino构建OLED显示屏与Android手机接口的智能手表
背景知识视频教程 Arduino 训练营:通过项目学习viadean.com 通过制作Arduino UNO FM收音机接收器学习Arduino I2Cviadean.com 通过构建实际应用程序 ...
- android 环形时间显示_使用Arduino构建OLED显示屏与Android手机接口的智能手表
背景知识视频教程 Arduino 训练营:通过项目学习viadean.com 通过制作Arduino UNO FM收音机接收器学习Arduino I2Cviadean.com 通过构建实际应用程序 ...
最新文章
- c语言断链隐藏dll,通过断链隐藏模块(DLL)
- rbac 一个用户对应多个账号_电商后台系统:管理后台之账号管理(一)
- 难点电路详解之负反馈放大器电路(2)
- java自动定义一个map类_自定义实现Map类 高效版
- ***从菜鸟到大虾教程下载
- 摆脱困境:在每种测试方法之前重置自动增量列
- 8086条件转移指令JE,JZ
- 鸟哥的linux私房菜有乌班图,折腾Ubuntu的一些summary--初装Ubuntu18和重装Ubuntu18
- javascript 唯一值的集合 Set对象
- WordPress页面、文章、分类等的条件判断的标签集合
- 【Latex】下标放在符号正下方
- 从零开始学习音视频编程技术(六) FFMPEG Qt视频播放器之显示图像
- C程序100例 第一题
- python切片迭代_Python高级特性 切片 迭代解析
- 600个开源iOS应用库
- leetcode64. 最小路径和
- Android setBackgroundDrawable()过时解决办法
- 从0.5到1写个rpc框架 - 2:远程服务调用(grpc)
- 第九届中国开源黑客松活动将于2019年4月18日-4月20日,在深圳举办
- ExtJS之EditorGridPanel
热门文章
- 上海职称英语计算机取消,上海地区职称英语考试是不是取消了?
- Improved autoencoder for unsupervised anomaly detection
- deb ipa pxl
- js初级动态随机抽人事件运用 计时器和超时期应用 解决用on事件onclick多次点击不能停止的问题
- 学那么多东西有屁用,不如先建立自己的知识体系
- DM8 MPP集群部署
- Android 中轴时光轴
- json解析与XML解析
- 【Qt】警告Missing reference in range-for with non trivial type
- 一些计算机u口无法使用的原因,电脑USB接口不能用的原因大全