Android系统启动之init.rc文件解析过程

Android系统启动之init.rc文件解析过程,第1张

第一篇: Android系统启动之bootloader

第二篇: Android系统启动之Init流程(上)

第三篇: Android系统启动之Init流程(下)

第四篇: Android系统启动之init.rc文件解析过程

第五篇: Android系统启动之zyogte进程

第六篇: Android系判哗统启动之zyogte进程java(上)

第七篇: Android系统启动之zyogte进程java(下)

第八篇: Android系统启动之SystemServer

Android init.rc文件由系统第一个启动的init程序解析。是启动系统服务使用的文件。

主要包含了四种类型的语句:

Action和services显式声明了一个语句块,而commands和options属于最近声明的语句块。

在第一个语句块之前 的commands和options会被忽略.

基本规则如下:

动掘蚂行作表示了一组命令(commands)组成.动作包括一个触发器,决定了何时运行这个动作。

注意: 当触发器的条件满足时,这个动作会被增加到已被运行的队列尾。假设此动作在队列中已经存在,那么它将不会运行.

一个动作所包括的命令将被依次运行。

在"动作"(action)里面的,on后面物隐跟着的字符串是触发器(trigger),trigger是一个用于匹配某种事件类型的字符串,它将对应的Action的执行。

触发器(trigger)有几种格式:

常见的格式:

command是action的命令列表中的命令,或者是service中的选项 onrestart 的参数命令.

命令将在所属事件发生时被一个个地执行.

常见命令:

服务是指那些须要在系统初始化时就启动或退出时自己主动重新启动的程序.

解释一下各个参数:

options是Service的修订项。它们决定一个服务何时以及如何运行.

使用例子:

源码路径 system/core/init/init.cpp 中:

开始解析rc文件.

ParseConfig函数在文件 core/init/init_parser.cpp 140行:

ParseConfigFile函数:

Android init.rc文件浅析

安卓系统启动--3init.rc解析

init.rc深入学习

Android开发环境对每一个需要Release的APK都会进行签名,在APK文件被安装时,Android系统会对APK的签名信息进行比对,以此来判断程序的完整性,最终确定APK是否可以正常安装使用,一定程度上达到安全的目的。

给一个APK文件的后缀名从.apk改为.zip或者.rar,然后利用解压工具进行解压,我们会在META-INF目录下看到四个文件: MANIFEST.MF、CERT.SF、INDEX.LIST、CERT.RSA

MANIFEST.MF(摘要文件): 程序遍历APK包中的所有文件,对非文件夹非签名文件的文件,逐个用SHA1生成摘要信息,再用Base64进行编码。樱棚如果APK包的文件被修改,在APK安装校验时,被修改的文件与MANIFEST.MF的校验信息不同,脊猜则程序将无法正常安装。

CERT.SF(对摘要文件的签名文件): 对于生成的MANIFEST.MF文件利用SHA1-RSA算法对开发者的私钥进行签名。在安装时只有公共密钥才能对其解密。解密之后将其与未加密的摘要信息进行比对,如果相符则文件没有被修改。

INDEX.LIST APK索引文件目录

CERT.RSA   保存公钥、加密算法等信息。

在APK进行安装时,可以通过MANIFEST.MF文件开始的环兆蠢环相扣来保证APK的安全性。但这些文件或者密钥如果被攻击者得到或者被攻击者通过某些技术手段攻破,则Android *** 作系统无法验证其安全性。

原文地址: http://www.cnblogs.com/shellway/p/4032464.html

1.src:存放所有的*.java源程序。

2.assets:可以存放项目一些较大的资源文件,例如:图片、音乐、字体等。

3.res:可以存放项目中所有的资源文件,例如:图片( .png、 .jpg)、文本等。

4.res/drawable-hdpi:保存高分绝顷辨率图片资源,可以使用Resources.getDrawable(id)可以获得资源类型。

5.res/drawable-ldpi:保存低分辩率图片资源,可以使用Resources.getDrawable(id)可以获得资源类型。

6.res/drawable-mdpi:保存中等分辨率图片资源,可以使用Resources.getDrawable(id)可以获得资源类型。

7.res/layout:存放所有咐宏尘的布局文件,主要是用于排列不同的显示组件,在Android程序中要读取此配置。

8.res/values: 存放一些资源文件的信息,用于读取文本资源,在本文件夹之中有一些约定的文件名称:

10.res/raw:自定义的一些原生文件所在目录,像音乐、视频等文件格式。存放直接复制到设备中的任意文件。它们无需编译,添加到你的应用程序编译产生的压缩文件中。要使用这些资源,可以调用 Resources.openRawResource() ,参数是资源的ID也可以用,即R.raw.somefilename , Resources.getRawResource()`方法可以获得这些资源。

11.res/xml:用户自定义的XML文件,所有的文件在程序运行时编译到应用程序之中,在程序运行时可衡禅以使用Resources.getXML()方法获取。

12.res/anim:用于定义动画对象。存放定义了补间动画(tweened animation)或逐帧动画(frameby frame animation)的XML文件。(该目录下也可以存放定义property animations的XML文件,但是最好还是分开存放)

13.res/animator:存放定义了propertyanimations(android 3.0新定义的动画框架)的XML文件

14.res/color/:存放定义了颜色状态列表资源(ColorState List Resource)的XML文件

15.res/drawable/:存放定义了图片状态列表资源(ColorState List Resource)的XML文件

16.res/menu/:存放定义了应用程序菜单资源的XML文件。正确创建文件的方法:new Folder,名字menu,new Other——Android——XML,选择menu类型,填写名称,确定即可。菜单资源文件必须放在res/menu目录中。菜单资源文件必须使用<menu>标签作为根节点。除了<menu>标签外,还有另外两个标签用于设置菜单项和分组,这两个标签是<item>和<group>。

注意:

对于res/color和res/drawable这两个文件中的内容在这作一下详解:

首先说一下color文件夹,在这个文件夹下放的是color_selector.xml等文件,主要是用于背景色的selector,比如TextView中的textColor属性,点击改变TextView中的字体颜色,在这个文件中的文件color_selector.xml中定义如下:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12161851.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存