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

Android Native 之 自定义进程

在Android五层架构中,native层基本上全是c++的世界,这些c++进程基本上靠android世界的第一个进程init进程创建,init通过rc配置文件,创建了众多的c++子进程,也是这众多的c++进程,构建了整个android世界的native层。

这里介绍一下如何自定义一个native进程,或者c++进程,或者init服务。在阅读本篇之前,可以先看看Android Native 之 Init进程分析_android init进程-CSDN博客

一、System分区native进程

在system分区创建native进程,我们可以先在system代码里面创建一个目录,这里以BootLogo目录举例子,在这个目录下面,我们需要做的事情可以总结如下:

  • 编写Android.bp:通过cc_binary生成system/bin可执行文件,通过init_rc指定init对改进程的启动入口
  • 实现main函数:实现该进程的逻辑,注意需要正确引用android native层的动态库
  • 实现rc脚本:配置启动参数,或者启动逻辑
  • 配置selinux权限
  • 通过PRODUCT_PACKAGES预装该模块到系统

1、Android.bp配置

2、init.rc配置

init.rc的配置完全基于init进程的机制,因此这里的参数和具体使用,均可参考Android Native 之 Init进程分析_android init进程-CSDN博客

3、实现main函数

如下代码,实现main函数,main函数里面可以接受来自rc的参数,这里简单实现

二、Vendor分区natvie进程

在vendor创建native进程,大体流程和system的基本一致,但是需要考虑的几个点如下:

  • Android.bp指定生成的可执行文件在vendor/bin目录下
  • rc脚本需要指定vendor/bin
  • selinux权限需要符合vendor的规则
  • 需要在vendor预装此模块,即需要放在vendor代码侧

1、Android.bp配置

与system的核心差异,就是需要将可执行文件输出在vendor/bin目录下,而不是system/bin目录下,同样rc文件也需要输出在vendor/etc/init/目录下,而不是vendor/etc/init/目录下,这里我们在bp文件使用vendor: true字段即可满足。

2、init.rc配置

这里基本上和第一章内容一致,值得注意的是,这里需要指定vendor/bin目录下的可执行文件

相关文章:

  • C++修炼:继承
  • 【HT周赛】T3.二维平面 题解(分块:矩形chkmax,求矩形和)
  • Springboot | 如何上传文件
  • 算法专题六: 模拟
  • 本地缓存的三种实现
  • Vxe UI vue vxe-table 实现表格数据分组功能,不是使用树结构,直接数据分组
  • 超标量处理器设计5-指令集体系
  • 力扣Hot100(Java版本)
  • upload-labs通关笔记-第3关 文件上传之黑名单绕过
  • 深度Q网络(DQN)的基本概念
  • Mirror的多人连接管理及房间系统
  • 第六节第二部分:抽象类的应用-模板方法设计模式
  • 为什么企业需要加密软件?
  • 经典中的经典-比特币白皮书中文版
  • B站PWN教程笔记-10
  • 集成设备管理(IDM)
  • uart16550详细说明
  • 【Canda】常用命令+虚拟环境创建到选择
  • 操作系统导论——第28章 锁
  • 根据输入的数据渲染柱形图
  • 广东省人大教科文卫委原主任委员梁万里被开除党籍:退休后受贿仍不知止
  • 世界期待中美对话合作带来更多确定性和稳定性
  • 生态环境保护督察工作条例对督察对象和内容作了哪些规定?有关负责人答问
  • 全国汽车以旧换新补贴申请量突破1000万份
  • 西藏日喀则市拉孜县发生5.5级地震,震源深度10千米
  • 中美经贸中方牵头人、国务院副总理何立峰出席新闻发布会表示:中美达成重要共识,会谈取得实质性进展