自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一叶梧桐

做一个伟大的人!

原创 01_Android Oreo Shutdown Process Note

一、Android Shutdown Process OverView   二、Android Shutdown Process  这里简单梳理下当我们长按power键后,系统事件监听服务InputManagerService会通过一系列的消息传递通过PhoneWindowManager...

2018-08-20 20:52:29 374 0

原创 Android Oreo Boot Process Note

目录 一、Android Boot Process OverView 二、Android Boot Process Source Code Analysis 2.1 init 进程(system/core/init/init.cpp::main()) 2.2 Native Daemons ...

2018-08-18 16:04:28 1115 0

原创 Android8.0 SELinux详解

该文档意译自Android官方 《SELinux for Android 8.0》,主要描述了SELinux策略在AndroidO版本上发生的一些变化,在AndroidO版本上,SELinux的客制化设计支持SELinux策略的模块化和可更新性。其设计目标是为了芯片厂商和ODM厂商在能够独立的客制...

2018-02-08 15:45:45 23619 3

原创 SELinux For Android(Android O)

注!该文章主要是从Android官方文档SELinux模块进行精简,简单添加了一些自己的理解     从 Android 4.3 起,SELinux 开始为传统的自主访问控制 (DAC) 环境提供强制访问控制 (MAC) 保护功能。例如,软件通常情况下必须以 Root 用户帐号的身份运行,才...

2018-02-05 20:47:28 6270 1

原创 7.【SELinux学习笔记】约束

一、约束语句(Constrain Statement)     约束语句可以让我们在安全上下文的三个元素(用户、角色、源/目标类型)中作任意限制,其包含三个元素:1.应用约束的客体类别;2.对应受约束客体类别的许可;3.约束的布尔表达式;其中约束表达式比较域(主体,源)进程的上下文和客体(目标)...

2015-09-07 21:42:17 1131 0

原创 禁止非法root的设备OTA升级

一、问题描述:     常常跟OTA打交道的朋友可能会经常遇到客户root后的手机OTA升级失败的问题,如果用户取得root权限,手误破坏了system分区数据,是很有可能导致OTA升级失败的,甚至导致手机无法正常开机,因此为了避免取得root权限的手机ota升级失败导致无法开机的情况,我们在OT...

2015-08-20 13:36:03 4240 0

原创 6.【SELinux学习笔记】角色和用户

一、SELinux中基于角色的访问控制     SELinux中的访问权不是直接授予用户或角色的,而是通过TE allow规则授权给类型的。而角色是类型强制的中的一个特性。SELinxu中的RBAC(Role-Based Access Control 基于角色的访问控制)在TE的基础上做了更多的...

2015-08-20 10:33:45 2298 0

原创 Android应用选择器针对指定Action屏蔽指定应用

该分析流程以Launcher菜单中设置壁纸为案例来进行,当前需求要求我们在应用选择器(即“选择壁纸来源”列表)中去除GMS包中的Photo应用。     那么这里的“选择壁纸来源”列表就是应用选择器,例如我们想要播放一段视频时,如果系统中安装了多个视频播放器,那么此时系统会列出系统中所安装的视频...

2015-08-18 22:04:11 2829 0

原创 5.【SELinux学习笔记】类型增强

这一篇对我来说是非常重要的,我们可以从本篇博文中了解到SELinux策略语言 一、类型增强     SELinux策略大部分是一套声明和规则一起定义的类型增强(TE)策略。每个进程对每个资源的访问尝试都必须要有一条允许的TE访问规则。所有规则都属于两类范畴:访问向量(AV,即权限)和类型规则。...

2015-08-11 16:54:19 3609 1

原创 4.【SELinux学习笔记】SELinu策略语言

一.SELinux 客体类别和许可 1.SELinux客体类别     客体类别(文件、套接字)及其许可(访问权限,如读或发送)是SELinux中访问控制的基础。一个客体类别代表某个确定类型(如文件、套接字)的所有资源。对于SELinux策略开发者我们通常不会创建一个全新的客体类别,但是了...

2015-08-10 20:48:23 6002 0

原创 3.【SELinux学习笔记】架构

1.LSM框架(Linux Secrity Module)     它是一种轻量级的访问控制框架,适用于多种访问控制模型在它上面以内核可加载模块的形式实现。用户可以选择合适的安全模块加载到Linux内核上。其设计思想,在最少改变内核代码情况下,提供一个能够实现强制访问模块选哟的结构或者接口。LSM...

2015-08-10 20:46:37 2480 0

原创 2.【SELinux学习笔记】概念

1.强制类型的安全上下文     在SELinux中,访问控制属性叫做安全上上下文。无论主体还是客体都有与之关联的安全上下文,通常安全上下文是由三部分组成:用户:角色:类型。如: $id -Z  joe:user_r:user_t     在SELinux当中,访问控制属性所有的客体或主体...

2015-08-10 20:43:26 2407 0

原创 1.【SELinux学习笔记】背景

1.引用监视器    目前大多数操作系统中主要的访问控制类型叫做DAC(任意访问控制),DAC的特性主要指用户访问资源的权限。但DAC有一些弱点,为了客服这些弱点,MAC诞生了(强制访问控制)。 但MAC也存在一定的弱点且使用起来不是很灵活。那么SELinux带给Linux 的价值可以称之为一个灵...

2015-08-10 20:29:22 1746 0

原创 《SELinux by example Using security enhanced Linux》读书笔记

一、 SELinux:给所有的Linux环境带来世界级的安全!     当然这是我从《SELinux by example Using security enhanced Linux》一书中的扉页上摘录下来的,当我首次看到这句话的时候我并不理解, 即便此时我已经接触了很多关于SELinux的知...

2015-08-10 20:25:26 2966 3

原创 Android首次启动时间长优化之预编译提取Odex

提示!应用程序的安装有两种情况,第一:首次启动系统时安装;第二:系统启动完成后安装。本篇博文基于第一种安装场景。在系统首次启动的场景中,系统会对/system/app、/system/priv-app、/data/app目录下的所有APK进行dex字节码到本地机器码的翻译,同样也会对/system...

2015-07-20 20:42:11 15236 2

翻译 整包升级与差分升级的区别

原文地址:FULL VS INCREMENTAL OTA 一、简介:     OTA升级有两种类型,每一种类型都有对应的用途和优势。但是,只有一种类型是用户常常能够接触到的。现在我们来一起熟悉他们。如下图:     从上面的曲线图中我们知道,这两种类型分别是:Incremen...

2015-06-04 21:51:46 16430 0

原创 从第三方Launcher授权启动指定APP的设计与实现

Case 背景: Case要求从第三方Launcher中首次启动指定的应用程序时,弹出对话框提示用户进行授权启动,若用户未授权,则在下次再次启动该应用时依然弹出对话框提示用户进行授权,直到用户对应用进行授权成功后,则再次启动时无需授权,直接启动。 那么从上面的描述中,我们可以分两步来实现,首先...

2015-06-02 13:52:15 2798 0

原创 你好,面试官

人生不是一步棋走的不完美就会输的。

2015-06-01 23:00:02 2257 0

原创 你会写邮件吗?

邮件是我们日常工作当中一个非常有效的通讯工具。

2015-05-21 23:24:38 1596 0

原创 Recovery选项菜单循环切换选项

在Recovery模式首页,Recovery系统通过调用GetMenuItems()函数向我们展示了一个选项列表,当有按键操作发生时,系统会通过HandleMenuKey()函数来处理按键操作。通常情况下我们可以通过操作VolumeUp和VolumeDown来切换选项。原生环境下,如果当前选项为首...

2015-05-12 18:03:11 2715 0

原创 实现Recovery模式本地化显示文本定制(recovery_l10n工具的使用)

写在前面: 从Recovery模式本地化文本显示我们了解到,recovery是支持恢复出厂设置(正在清楚...)和安装升级包(正在安装系统更新...)本地化文本显示的,除了这两种recovery同样支持“无命令。”和“出错了!”两种文本实现本地化显示,如下: 图1: 图2: ...

2015-04-10 21:43:09 3109 0

原创 Recovery模式本地化文本显示

写在前面: 本系列博文所讨论的内容主要是与大家一起讨论Recovery模式本地化显示文本的原理,以及如何使用谷歌提供的recovery_l10n工具实现定制本地化显示的文本。 导读: 首先我们来讨论Recovery模式下本地化文本的显示是如何实现的。 先看两张图,相信很多人都很熟悉,第一张是我们恢...

2015-04-10 15:13:19 4826 0

翻译 Android 5.x OTA Update官方文档(十、版本签名)

在Android中,一般来说有两个地方使用加密签名。 1.每个.apk文件必须进行签名。Android的程序包管理器通过两种方式使用签名: 当一个应用程序被替换时,只有相同签名的应用才能操作旧版本的数据。 两个应用如果签名一致,那么这两个应用可以共享User ID,

2015-04-06 21:10:46 6379 0

翻译 Android 5.x OTA Update官方文档(九、Sideloading-侧面安装机制)

写在前面:     本篇博文漏译了很多,英文功底比较好的同学可以选择阅读原版文档,如果方便请分享翻译后文档给大家,谢谢。     recovery有一个侧面安装(sideloading)机制来方便我们手动的安装更新而不在使用OTA的方式。这种机制对于调试和维护是很有帮助的,特别是当我们无法正常...

2015-04-06 10:40:35 2476 0

翻译 Android 5.x OTA Update官方文档(八、图说Recovery UI)

写在前面:     若能直译,不会意译,意译不成,为了选择不误导他人也会漏译无伤大雅的部分,英语是硬伤,如果有误译,请路过的朋友帮忙指正,以免误导更多的朋友。 RecoveryUI除了之前提到的标题、选项菜单、提示性文字还有另外的一个重要的成员图片。在正常的更新过程中,用户看到的仅仅是图片(这...

2015-04-05 18:12:58 7567 0

翻译 Android 5.x OTA Update官方文档(七、构建设备)

我们通过调用recovery_ui.cpp中make_device()函数来创建一个Device的实例,如下: class TardisDevice : public Device { // ... all the above methods ... }; Device* make_dev...

2015-04-05 11:13:42 2479 2

翻译 Android 5.x OTA Update官方文档(六、Recovery UI)

recovery界面     为了支持不同的硬件设备(物理按键、显示、LEDs等),你可以定制recovery界面进行可视化显示,并进行相关的操作。那么你可以通过重写bootable/recovery/defalust_device.cpp来为你的设备进行可视化定制。首先介绍如下: device/...

2015-04-05 10:35:14 3591 2

翻译 Android 5.x OTA Update官方文档(五、Recovery系统下分区映射)

Recovery系统包含了很多钩子程序,因此OAT更新除了可以更新Android系统也可以更新设备的其他部分。(如基带、无线电处理器)。 分区映射 从Android2.3起,平台开始支持eMMC存储设备和ext4文件系统。它同样支持MTD设备和yaffs2文件系统。 分区映射文件TARGET_RE...

2015-04-04 20:56:42 3337 0

翻译 Android 5.x OTA Update官方文档(四、OTA更新包解读)

写在前面: 系统创建通过“bootable/recovery/updater”创建一个二进制更新程序并在OTA包中使用进行更新的安装。 更新包实际上也就是一个.zip格式的压缩文件(如我们之前提到过的ota_update.zip,incremental_ota_update.zip)。在这个压缩包...

2015-04-04 16:24:13 4165 0

翻译 Android 5.x OTA Update官方文档(三、模块式OTA)

OTA是原始制造商用来远程升级系统分区的一种机制,在Android5.0的设备上我们可以使用模块式OTA来更新我们的设备。 .Android5.x及其之后的版本都可以使用模块式OTA来保证每个设备使用相同的分区。模块式OTA把整个分区作为一个文件并且生成一个二进制补丁,而不是对比每个文件生成对应的...

2015-04-04 10:48:37 8032 1

原创 系统现网环境下若检测到有系统更新,桌面设置图标右上角提示更新实施方案

应用场景:     系统开机,网络连接正常时,系统OTA升级应用自动检测服务器是否有新的更新,如果有新的更新则在桌面的设置图标右上角提示更新。 那么该功能该如何实现呢?     首先要保证在系统开机完成后,OTA升级应用应对网络状态进行监听,当网络连接ok时向OTA服务器发起请求,当检测到有...

2015-04-03 20:05:52 1615 0

翻译 Android 5.x OTA Update官方文档(二,OTA 打包工具ota_from_target_files)

写在前面: OTA打包工具ota_from_target_files(build/tools/releasetools/目录下)可以为我们创建两种类型的更新包:整包和增量包。打包工具一般来说会对我们称之为目标文件(target-files.zip)进行打包,该目标文件是有Android编译系统产生...

2015-04-02 22:05:25 6933 0

翻译 Android 5.x OTA Update官方文档(一,关于OTA 升级)

写在前面: Android设备可以接受和安装基于系统和应用的更新。在设备中有一个特殊recovery分区,在这个分区中有一套特殊的恢复系统可以将下载的更新包进行解压并应用到系统中去。 本节主要描述了更新包的组织架构,并且概述了如何使用更新包打包工具制作系统升级的更新包。OTA 的存在是用来对潜在...

2015-04-02 17:20:47 5647 1

原创 系统更新完成后,IMEISVN自动加1,标识本次升级

方案一:recovery模式下安装完成后标记本次升级,在开机后在AP端通过向modem发送at指令修改imeisv的值,如下: IMEI SV 的修改,可以通过AT COMMAND :AT+EGMR=1,9,”00”; 读取: Modem 发AT AT+EGMR=0,9 读到IMEI SVN ...

2015-03-30 13:31:12 2517 0

原创 Android系统更新防互刷功能实现与分析

写在前面:     为了帮助理解,这里首先描述一个应用场景。     一个项目有两个版本(一个项目两个版本的原因或许是由于硬件不同导致的,如不同容量电池,不同分辨率摄像头等),在升级的时候很容易将相同项目的两个版本的升级包混淆,因此需要实现两个版本的防互刷功能,那么在该应用场景下需要如何实现呢? ...

2015-03-23 18:06:46 10655 2

原创 解决fatal error: sys/system_properties.h: No such file or directory compilation terminated.

编译的异常log: system/core/include/cutils/properties.h:22:35: fatal error: sys/system_properties.h: No such file or directory compilation terminated. mak...

2015-03-20 21:47:48 26641 1

原创 分析PMT changed for the ROM:it must be downloaded.升级失败。

应用场景描述:     相同项目不同版本(不同分支),使用Smart Phone Flash Tool工具交叉升级,出现PMT changed for the ROM;it must be download. 分析过程: 第一步:首先根据截图的提示语我断定是由于分区发生变化导...

2015-03-19 21:39:03 25081 0

原创 Android 反编译(一,apktool+smail2java)

一:解压缩(获取图片等资源)     对于apk中丰富的资源,如果我们在练习的时候需要引用某些apk中的资源文件时,最简单的办法使用解压缩工具对apk进行解压缩,然后在相应的目录下查找需要的资源文件。 二:反编译APK     我们可以通过解压缩的方式去使用某些apk中res/drawable,r...

2015-03-18 15:15:10 25923 3

原创 Recovery模式下/cache/recovery/目录下创建文件,开机后文件被删除

在一次需求的实现过程中需要在remcovery模式下,在/cache/recovery/目录下创建一个日志文件用于记录相关的日志信息,以便于在开机后读取这些日志信息,再根据日志信息做出相应的处理,但是奇怪的是每当开机完成该文件不被系统自动删除,而系统中原有的日志文件(如升级log---last_l...

2015-03-17 10:42:34 7888 0

原创 用Meta工具查看IMEI和IMEISV保存的位置

1.首先我们先来使用Meta工具查看IMEI保存的位置 我们打开meta工具,找到NVRAM_EF_IMEI_IMEISV_LID,如图: 2.我们打开meta工具找到System related LID,找到NVRAM_EF_SYS_CACHE_OCTET_LID下第十个字节...

2015-03-16 15:03:57 5416 0

提示
确定要删除当前文章?
取消 删除