自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

kaijiehui

小白

  • 博客(40)
  • 收藏
  • 关注

原创 Google pixel xl 系统定制

SystemUI定制: 

2018-11-22 17:23:01 597

原创 android8.1设置默认输入法

aosp 8.1的原生输入法不支持中文,所以只能内置输入法了 修改如下:/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.javaloadSecureSettings方法中增加下面的内容loadStringSetting(stmt, Secure...

2018-11-21 09:58:41 5348 3

原创 Android8.1内置第三方apk /system/app

没有代码的情况下内置第三方apk有两种方式:我使用的是aosp 8.1源码 刷的pixel xl 第一种是在android-8.1.0_r15/vendor/qcom/marlin/prefabrication/Android.mk目录结构Android.mk 是新建的,下面是mk的内容LOCAL_PATH := $(call my-dir)include $(CLEA...

2018-11-21 00:18:07 5760 1

原创 android设置默认中文

修改:build/target/product/full_base.mk45 # Put en_US first in the list, so make it default. 46 PRODUCT_LOCALES := zh_CN en_US 

2018-11-20 21:37:23 774

原创 反编译apk

 这种方式只针对android9.0以上吧,  尝试了9.0 失败了需要下载工具:https://app.yinxiang.com/shard/s45/res/4f0530fb-b6fa-4f94-9650-6ef044de1244/dex-tools-2.1-SNAPSHOT.ziphttps://app.yinxiang.com/shard/s45/res/511352a2-623...

2018-11-06 17:14:10 291

原创 Android8.1 新增系统自定义服务一 (SELinux权限)

           一开始并没有注意到android8.0以后和之前有多大区别,知道最近有需求要求增加一个自定义服务,一直没有生效报avc权限问题在SystemServer startOthreService中ServiceManager.addService () 出现了AVC权限:SELinux: avc denied {add} for service=gesture pid=...

2018-10-27 15:14:43 11718

原创 Aosp8.1 pixel xl 生成vendor.img

编译android 8.1 marlin ,默认不会生成vendor.img 这个是因为在build/core/MakeFile中 build vendorimage 条件不满足----build/core/MakeFile 是软连接  实际路径在 /system/build/make/下面makefile 缺少参数BOARD_VENDORIMAGE_PARTITION_SIZE 所...

2018-10-27 14:57:51 5138 1

转载 什么时候用抽象类,什么时候用接口

什么时候用抽象类,什么时候用接口“接口是完全抽象的成员集合,它的成员都无法在接口定义时实现,我们可以将它看作是为操作定义合同,接口的实现完全留给开发者去做。它们之间的区别,如果认真分析,还是有不少的:在JAVA中,类只能是从一个基类继承,所以如果要使用抽象类为一组类提供多态性,这些类必须都是从那个类继承的;接口就不一样了,它不但可以用一个类或结构实现多个接口,一个接口还可以有多个实现。”     ...

2018-04-08 16:23:08 273

转载 Android Watchdog机制

Android的SystemServer是一个非常复杂的进程,里面运行的服务超过五十种,是最可能出问题的进程,因此有必要对SystemServer中运行的各种线程实施监控。但是如果使用硬件看门狗的工作方式,每个线程隔一段时间去喂狗,不但非常浪费CPU,而且会导致程序设计更加复杂。因此Android开发了WatchDog类作为软件看门狗来监控SystemServer中的线程。一旦发现问题,Watch...

2018-04-06 15:25:41 1250

原创 Android IPC机制4-ServiceManager的addService与getService实现

普通client或者server在获得servicemanger的proxy对象后,肯定就要使用了。对于server来说,主要是调用addService,向serivceManager注册。而client则是通过serivcemanager查询所需server的信息,然后得到server的proxy对象。注册服务-addService以Native层的服务mediaservice为例,我们先来分析...

2018-03-08 11:11:07 3481

原创 Android进程间通信(IPC)机制Binder简要介绍和学习计划

        在Android系统中,每一个应用程序都是由一些Activity和Service组成的,这些Activity和Service有可能运行在同一个进程中,也有可能运行在不同的进程中。那么,不在同一个进程的Activity或者Service是如何通信的呢?这就是本文中要介绍的Binder进程间通信机制了。《Android系统源代码情景分析》一书正在进击的程序员网(http://0xcc0...

2018-03-06 16:29:23 164

转载 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路

        上一篇文章Android进程间通信(IPC)机制Binder简要介绍和学习计划简要介绍了Android系统进程间通信机制Binder的总体架构,它由Client、Server、Service Manager和驱动程序Binder四个组件构成。本文着重介绍组件Service Manager,它是整个Binder机制的守护进程,用来管理开发者创建的各种Server,并且向Client提...

2018-03-06 16:29:12 300

转载 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路

 在前面一篇文章浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路中,介绍了Service Manager是如何成为Binder机制的守护进程的。既然作为守护进程,Service Manager的职责当然就是为Server和Client服务了。那么,Server和Client如何获得Service Manager接口,进而享受它提供的服务呢?本文将...

2018-03-06 16:29:00 291

转载 Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析

       在前面几篇文章中,我们详细介绍了Android系统进程间通信机制Binder的原理,并且深入分析了系统提供的Binder运行库和驱动程序的源代码。细心的读者会发现,这几篇文章分析的Binder接口都是基于C/C++语言来实现的,但是我们在编写应用程序都是基于Java语言的,那么,我们如何使用Java语言来使用系统的Binder机制来进行进程间通信呢?这就是本文要介绍的Android系...

2018-03-06 16:28:40 158

原创 Framework源码分析(二):Binder

Binder是什么Binder是Android系统提供的一种进程间通信机制,它提供远程过程调用功能(RPC)。而这个机制形成,是通过一些系统组件构成的,分别是Client、Server、ServiceManager和Binder Driver。Binder Driver是Binder驱动程序,运行在Linux内核空间;Client,Server和Service Manager运行在用户空间。Bin...

2018-03-06 16:28:28 169

原创 Framework源码分析(一):ActivityManagerService

从这篇文章开始,我想把自己对于Framework源码的理解详细的进行分析和阐述,当然自己在阅读这些代码的时候也大量的进行了其他资料的阅读和学习。我希望通过我的分享能够带给大家对于Android由浅入深的理解。在这篇博客中,给大家带来AMS的技术分享。AMS(ActivityManagerService)是贯穿Android系统组件的核心服务,负责了系统中四大组件的启动、切换、调度以及应用进程管理和...

2018-03-06 16:28:22 182

原创 framework面试题

ART、Dalvik和JVM的关系及区别是什么?这是道送分题,并不是真的要说出它们的深度区别,但如果你不知道ART是什么,我觉得你不够关注行业发展,靠这个平台吃饭,不关心它,怎么都说不过去。       ART 就是 Android Runtime ,是安卓4.4之后的系统的新的虚拟机模式,改模式提升了运行效率,启用该模式之后,系统在安装APP的时候,会进行一次预编译,把代码转成机器语言存储在本地...

2018-03-06 16:28:17 3178 1

原创 Framework源码分析(三):ActivityThread

在ActivityManagerService这一篇博客中,我们已经了解AMS在Android系统中是管理系统中Activity的重要类,他通过Binder进程间通信的方式去调度Activity,从而操作Activity的生命周期。那么在这一篇博客中,我们继续通过认识ActivityThread来进一步了解Activity的创建和启动的原理。简述App启动流程APP启动流程从图中的流程来看,首先用...

2018-03-06 16:28:12 520

原创 ActivityManagerService简要分析

1、相关类简述1.1、com.android.server.SystemServer本身由zygote进程运行,用来启动各种各样的系统服务(SystemService)1.2、com.android.server.SystemService运行在系统进程中的service,每个SystemService都是有生命周期的,所有的生命周期函数都是运行在SystemServer的主线程当中。1.2.1 ...

2018-03-06 16:28:07 349

原创 Android PackageManagerService详细分析

本篇主要分析了系统启动阶段包管理服务的启动流程,其中的几个接口在 apk 安装时也会被调用。包管理服务启动时主要做的工作大致有如下几方面:     1. 建立 java 层的 installer 与 c 层的 installd 的 socket 联接,使得在上层的 install,remove,dexopt等功能最终由 installd 在底层实现   2. 建 立 PackageHandler ...

2018-03-06 16:28:02 2700

原创 Android多用户之UserManagerService源码分析

Android可以支持多个用户使用系统,通常第一个在系统中注册的用户将默认成为系统管理员。不同用户的设置各不相同,并且不同用户安装的应用及应用数据也不相同。但是系统中和硬件相关的设置则是共用的,如网络设置等。用户切换后前面用户运行的后台进程还可以继续运行,这样进行用户切换时无须中断一些后台进行的耗时操作(如下载)。管理用户的系统服务--UserManagerServiceUserManagerSe...

2018-03-06 16:27:59 2393

原创 WindowManagerService的理解

Android中的窗口概念:屏幕上一块用于绘制各种UI元素并可以响应用户输入的一块矩形区域。从原理上来看,窗口的概念是独自占有一个Surface实例的显示区域。如Dialog、Activity的界面、壁纸、状态栏以及Toast等都是窗口。 上述对窗口的概念性描述,提取出来主要有以下几点信息:用于绘制UI元素响应用户输入独自占有一个surface实例Surface是一块画布,应用通过canvas或者...

2018-03-06 16:27:44 959

原创 Android5.0 Telephony框架初步分析--telecomm

3.2.1          Telecomm简述Android5.0在Telephony的变化又比较大,增加了一个Telecomm模块,它位于界面应用如InCallUI和Phone框架之间,其具体的设计意图尚不明确,从代码分析上来看,流程比原来的架构复杂很多,可能是想把Phone进程独立得更开一些,类似于RIL进程,给应用提供一个扁平的Phone接口,不希望像以前一样,呼叫流程在Phone进程和...

2018-03-06 16:27:39 1082 1

原创 阅读Telephony通信功能笔记2—Android手机上网实现机制

本章介绍DataConnectionTracker对DataConnection手机上网数据连接的管理机制和流程。一、Android网络整体结构        流程结构图如下:        Android网络中,在底层实现了两个虚拟串口:Command命令通道:建立或断开网络连接Data数据通道:基于TCP/IP网络通信协议的数据传输 [可分析下基于TCP/IP网络通信协议的数据传输实现机制]二...

2018-03-06 16:27:34 490

原创 快速解决Android中的selinux权限问题

关于selinux的详细资料,请查阅http://blog.csdn.net/innost/article/details/19299937在Android开发的过程中,遇到关于selinux相关的东西,当时还一下子看不懂,现在好像有点眉目了。比如,内核打印这个提示type=1400 audit(32.939:25): avc: denied { open } for pid=2592 comm=...

2018-03-06 16:27:27 1278

原创 对Android 平台下SElinux的理解及遇到过的相关问题解决方法总结

笔者在工作中多次遇到和SELinux相关的问题,初次遇到时一头雾水,走了很多弯路,也耗费了很多时间精力。后来看了不少资料和博客,也研究了相关代码,对SELinux有了些认识。所以用本文来做个总结,加深理解。本文将从下面五个方面来逐步认识和理解Android 下SELinux。什么是SELinux为什么需要SELinuxSElinux 工作原理android 上的实现曾经遇到过的问题及解决办法一、什...

2018-03-06 16:27:10 1461

原创 Android7.1 Selinux使用

讲Selinux的原理的文章太多了,讲实际使用也是有一些,但是都不够完整,这里举一个在Android7.1下的服务的例子。服务第一步,我们会在init.rc下增加服务。 因为我的设备是freesale sabresd 所以路径是: device/fsl/sabresd_6dq/init.rcservice crondd /system/bin/crondd class late_start...

2018-03-06 16:27:02 641 1

原创 深入理解Android之Java Security第一部分

深入理解Android之Java Security(第一部分)从事Android工作4年以来,只有前1年不到的时间是用C++在开发东西(主要是开发DLNA组件,目前我已将它们全部开源,参考http://blog.csdn.net/innost/article/details/40216763),后面的工作几乎都在用Java。自以为Java相关的东西都见过了,可前段时间有个朋友给我花了1个多小时讲解...

2018-03-06 16:26:56 789

原创 SEAndroid安全机制框架分析

       我们知道,Android系统基于Linux实现。针对传统Linux系统,NSA开发了一套安全机制SELinux,用来加强安全性。然而,由于Android系统有着独特的用户空间运行时,因此SELinux不能完全适用于Android系统。为此,NSA针对Android系统,在SELinux基础上开发了SEAndroid。本文就对SEAndroid安全机制框架进行分析,以便后面可以更好地分...

2018-03-06 16:26:44 127

原创 android中sepolicy, selinux学习笔记

android 权限 DAC MAC #if DAC(Discretionary Access Control) -- 自主访问控制一、DAC(Discretionary Access Control) -- 自主访问控制基于uid的访问权限控制主体:uid/gid标记的进程客体:uid/gid标记的文件1)文件权限上下文文件属性   user  group 大小  修改时间文件名-rw-r--r...

2018-03-06 16:26:36 1779

原创 Android 7.0 SystemUI 之启动和状态栏和导航栏简介

Android 7.0 SystemUI 之启动和状态栏和导航栏简介一、SystemUI 是什么首先SystemUI 是一个系统应用,apk路径位于/system/priv-app源码路径位于:/framework/base/packages/SystemUI它负责的功能如下:状态栏信息的展示:比如电量信息,时间,wifi状态等通知栏消息壁纸管理截图功能近期任务栏显示,比如长按home键显示最近使...

2018-03-06 16:26:18 729

原创 Android 6.0SystemUI启动流程及主体布局介绍

本文将基于Android 6.0代码,分析systemUI的启动加载流程,对systemUI几处关键的视图的布局及功能进行介绍。一. SystemUI主体框架启动流程android设备上电,引导程序引导进入boot(通常是uboot),加载initramfs、kernel镜像,启动kernel后,进入用户态程序。第一个用户空间程序是init, PID固定是1.init的基本功能有:管理设备解析并处...

2018-03-06 16:26:12 457

原创 Android 7.0Settings加载主界面流程

新人一枚,没有整机环境,有什么写的不对欢迎批评指正,万分感谢!Settings主界面加载时序图(这里很多判断逻辑我省略掉了。更多的是想把加载主界面流程跑通。)这张流程图将主fragment DashboardSummary启动,RecyclerView数据加载刷新 显示得较为明白。但是对于主界面tile分类,tile排序,tile对象属性是无法得知的。所以接下我就主要讲讲这两个。(1)先看一下主界...

2018-03-06 16:26:06 512

转载 Android的Audio系统详解

Audio系统详解1       Audio的Framework层功能及用法大全    1.1        多媒体的framework接口预览    1.2        Audio相关的文件预览    1.3        Audio核心        1.3.1         AudioTrack        1.3.2         AudioRecord        1.3.3 ...

2018-03-06 16:25:50 1357

转载 Android 音频系统:从 AudioTrack 到 AudioFlinger

1. Android 音频框架概述Audio 是整个 Android 平台非常重要的一个组成部分,负责音频数据的采集和输出、音频流的控制、音频设备的管理、音量调节等,主要包括如下部分:Audio Application Framework:音频应用框架 AudioTrack:负责回放数据的输出,属 Android 应用框架 API 类AudioRecord:负责录音数据的采集,属 Android ...

2018-03-06 16:25:44 280

转载 Android Media Framework(1): 总纲

Android系统整体架构:我们先看一下多媒体框架在整个Android系统所处的位置Android多媒体框架opencore和stagefright分析从框架图可以看出Media Framework处于Libraries这一层,这层的Library不是用Java实现,一般是C/C++实现,它们通过Java的JNI方式调用。Android多媒体框架opencore和stagefright分析Andr...

2018-03-06 16:25:33 183

转载 Android音视频处理之MediaCodec

Android中可以使用MediaCodec来访问底层的媒体编解码器,可以对媒体进行编/解码。MediaCodec的官方文档真的超详细,基本上所有问题都可以在文档上找到答案。MediaCodec可以处理的数据有以下三种类型:压缩数据、原始音频数据、原始视频数据。这三种类型的数据均可以利用ByteBuffers进行处理,但是对于原始视频数据应提供一个Surface以提高编解码器的性能。Surface...

2018-03-06 16:25:23 720

转载 Android多媒体--MediaCodec 中文API文档

Android多媒体--MediaCodec 中文API文档*由于工作需要,需要利用MediaCodec实现Playback及Transcode等功能,故在学习过程中翻译了Google官方的MediaCodec API文档,由于作者水平限制,文中难免有错误和不恰当之处,望批评指正。*转载请注明出处:http://www.cnblogs.com/roger-yu/从API 16开始,Android提...

2018-03-06 16:24:48 413

转载 InputManagerService分析一:IMS的启动与事件传递

从这一节里面,我们开始介绍InputManagerService部分的知识。它用于管理整个系统的输入部分,包括键盘、鼠标、触摸屏等等。这一章里面我们主要就要介绍IMS。首先从IMS的启动来分析:[java] view plain copyHandlerThread wmHandlerThread = new HandlerThread("WindowManager");  wmHandlerThr...

2018-03-06 16:24:43 412

转载 Android Input流程

一.input 系统初始化安卓系统启动时,会开启SystemServer进程,SystemServer执行main函数,调用startOtherService()初始化windowManagerService和InputManagerService等InputManagerService的构造函数如下,mPtr是一个指向nativeInputManager对象的指针. mPtr = ...

2018-03-06 16:24:04 495

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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