
Framework
文章平均质量分 77
Framework+底层
Ansen360
从事android手机系统开发7年,就职过2家国内知名手机公司
展开
-
DevicePolicyManagerService之DeviceAdmin
目录1.DevicePolicyManagerService的初始化2.DeviceAdminDevicePolicyManagerService是Android提供的一个可管理和操作设备的系统服务,通过DevicePolicyManager为应用层提供操作设备的对应策略.目前推出了三种设备管理方案:Device Administration,Profile Owner,Device Owner.DeviceAdmin是Android2.2中引入,用户可以授权自己的应用设备管理权原创 2022-04-09 22:45:45 · 4746 阅读 · 0 评论 -
DevicePolicyManagerService之DeviceOwner和ProfileOwner
1.ProfileOwnerProfileOwner是Android5.0系统推出.ProfileOwner包含了所有DeviceAdmin用户的管理能力.系统只能设置一个Profile Owner程序,并且设置为ProfileOwner后应用无法卸载.设置ProfileOwner具有MANAGE_PROFILE_AND_DEVICE_OWNERS权限和shell uid的应用程序才能调用此方法publicbooleansetProfileOwner(ComponentName,S...原创 2022-04-09 22:22:47 · 5290 阅读 · 1 评论 -
Android权限管理--权限类型
目录1.普通权限(normal)2.运行时权限(dangerous)3.签名权限(signature)4.特殊权限(privileged)查看android权限的等级判断应用是否拥有对应权限Android 将权限分为不同的类型,包括安装时权限、运行时权限和特殊权限。每种权限类型都指明了当系统授予应用该权限后,应用可以访问的受限数据范围以及应用可以执行的受限操作范围。1.普通权限(normal)此类权限允许访问超出应用沙盒的数据和执行超出应用沙盒的操作。但这些数据和操作对.原创 2022-03-14 17:28:35 · 15120 阅读 · 0 评论 -
四.Activity的启动流程-ActivityThread启动Activity的过程
Activity的启动一般分为普通Activity的启动,根Activity的启动.而根Activity是指应用启动的第一个Activity过程,所以也可以理解为应用的启动过程.相关内容链接:android系统启动流程Activity的启动过程(应用的启动流程)原创 2020-07-14 21:42:13 · 1687 阅读 · 1 评论 -
三.Activity启动流程-AMS请求Zygote启动进程过程
Activity的启动一般分为普通Activity的启动,根Activity的启动.而根Activity是指应用启动的第一个Activity过程,所以也可以理解为应用的启动过程.相关内容链接:android系统启动流程Activity的启动过程(应用的启动流程)原创 2020-07-14 21:41:41 · 1189 阅读 · 1 评论 -
二.Activity启动流程-ATMS到ApplicationThread的调用过程
Activity的启动一般分为普通Activity的启动,根Activity的启动.而根Activity是指应用启动的第一个Activity过程,所以也可以理解为应用的启动过程.相关内容链接:android系统启动流程原创 2020-07-14 21:38:12 · 1459 阅读 · 0 评论 -
Activity的启动流程(基于Android 10.0源码)
应用的启动流程大致分为如下四个阶段:一.应用进程(Launcher)调用ATMS系统进程的过程二.ActivityTaskManagerService到ApplicationThread的调用过程三.AMS向Zygote发送启动应用进程的过程四.ActivityThread启动Activity的过程原创 2020-05-13 00:41:08 · 1415 阅读 · 1 评论 -
Android Framework面试题
Framework面试题 Android 系统基础 JVM、Dalvik和ART是什么以及他们的关系 01 Binder机制 02 系统级app和第三方应用级app分别在什么目录下?system/priva-app和system/app目录的权限有什么...原创 2019-11-01 09:36:31 · 12862 阅读 · 1 评论 -
android 7.0低电耗Doze模式
从 Android 6.0(API 级别 23)开始,Android 引入了两个省电功能,可通过管理应用在设备未连接至电源时的行为方式为用户延长电池寿命。 低电耗(Doze)模式通过在设备长时间处于闲置状态时推迟应用的后台 CPU 和网络 Activity 来减少电池消耗。 应用待机(App Standby)模式可推迟用户近期未与之交互的应用的后台网络 Activity。低电耗模式(Doze模式)...原创 2017-04-13 16:01:46 · 4529 阅读 · 1 评论 -
Android屏幕截图实现方式 系统截屏源码分析和三指截屏
Android截屏的方式:1.获取DecorView截屏通过获取DecorView的方式来实现截屏(前提是当前Activity已经加载完成),DecorView为整个Window界面的最顶层View,因此截屏不包含状态栏(SystemUI)部分. View view = getWindow().getDecorView(); // 获取DecorView // 方式一: ...原创 2015-11-16 16:45:10 · 13075 阅读 · 4 评论 -
Android屏幕录制源码Demo下载
Android实现屏幕录制的方式介绍两种,第一种是通过adb shell命令,还一种使用SDK的提供的方法实现.adb shell 命令语法: screenrecord [options] <filename>Sample: adb shell screenrecord /sdcard/demo.mp4 开始录制(录制手机屏幕; 视频格式为mp4,存放到手机...原创 2015-11-07 17:36:55 · 8713 阅读 · 7 评论 -
AndroidStudio导入系统源码DeskClock编译生成系统签名apk
DeskClock源码路径:/repo/packages/apps/DeskClock/导入DeskClock源码到AndroidStudio1.拷贝源码到AS工程使用AndroidStudio创建DeskClock工程,指定Android源码相同的包名把DeskClock中src、res、AndroidManifest.xml、assets复制到创建的AS工程中...原创 2015-09-23 01:45:49 · 6356 阅读 · 1 评论 -
Android OTA差分包升级失败
升级失败log如下:I update_engine: [0530/162336:INFO:delta_performer.cc(359)] Applying 21701 operations to partition "system"E update_engine: [0530/162336:ERROR:delta_performer.cc(1060)] The hash of the sour...原创 2018-06-01 15:24:04 · 7920 阅读 · 12 评论 -
Android系统卡顿问题分析笔记
卡顿问题描述 引起用户投诉主要问题如下:1.游戏卡顿问题; 2.待机唤醒慢问题; 3.升级后系统没有升级前好用; 4.自研应用反应慢 5.系统长时间使用变慢 6.后台进程多 7.运行内存少卡顿关键因子分析应用问题 Layout布局问题 列表界面滑动效果及数据加载问题 应用冷启动速度慢 应用异常引起卡顿 内存泄漏 系统问题...原创 2015-09-23 01:47:40 · 5317 阅读 · 0 评论 -
AB 系统OTA升级介绍
A/B System 概述Android从7.0开始,引入了新的OTA升级方式 A/B System UpdatesA/B系统是指设备上有A和B两套可以工作的系统(用户数据只有一份,为两套系统共用),我们可以理解为一套系统分区,另外一套为备份分区.其系统版本可能一样,也可能不一样;通过升级,可以将旧版本也更新为新版本.当然,设备出厂时这两套系统肯定是一样的.Android 7.0上传统OTA方式和...原创 2016-02-05 18:27:24 · 15908 阅读 · 1 评论 -
Android Runtime (ART)和apk的预编译
什么是Android Runtime (ART)2014年的Google I/O大会上,Google发布了Android 4.4操作系统,其中有一个环节着重介绍了ART (Android runtime),ART 是 Android 上的应用和部分系统服务使用的托管式运行时环境.从Android 5.0开始,ART替换了Dalvik虚拟机,同时ART也完全兼容Dalvik.Java的几种虚拟机介绍...原创 2015-09-24 00:31:37 · 6757 阅读 · 1 评论 -
Fastboot命令
Fastboot,英语翻译意思是快速启动。在安卓手机中fastboot是一种比recovery更底层的刷机模式(俗称引导模式)。Fastboot源码路径: \bootable\bootloaderFastboot编译后路径: out/host/linux-x86/bin/fastboot进入Fastboot目前主流Android手机进入Fastboot的方式为【音量-】+【电源键】;...原创 2015-09-24 01:05:56 · 6103 阅读 · 1 评论 -
Framework添加权限,系统服务AMS,PMS添加存储权限
查看当前进程所属的用户组1.通过过top命名查看,发现system_server PID 为2559xxx_ansen:/ #xxx_ansen:/ # topTasks: 225 total, 2 running, 208 sleeping, 0 stopped, 13 zombieMem: 8002760k total, 1630336k used, 63724...原创 2015-11-07 17:40:31 · 6831 阅读 · 3 评论 -
Android 8.0刘海屏适配
由于刘海屏设备上市时运行的是 Android O 设备,而 Android O 没有标准接口来适配刘海屏设备,因此各大厂商针对Android O刘海屏适配方案也各有差异,具体如下:华为刘海屏手机安卓O版本适配指导小米刘海屏 Android O 适配OPPO凹形屏适配说明VIVO全面屏应用适配指南后来 Android P 中新增了刘海屏适配的API,因此开发者需要针对 An...原创 2015-09-24 01:01:13 · 7084 阅读 · 0 评论 -
Android自定义相机,切换前后摄像头,照相机拍照
Android自定义相机,切换前后摄像头,照相机拍照Ctrl +C Ctrl+V 可以直接 run 起来,注释比较详细;源码下载原创 2015-11-09 18:16:21 · 13414 阅读 · 5 评论 -
JNI实现Java调用C代码Demo AndroidStudio
JNI(Java Native Interface)的本意是Java本地调用,它是为了方便java调用C/C++等本地代码所封装的一层接口 Android NDK(Native Development Kit )是一套工具集合,通过NDK可以在Android中更加方便的使用JNI来访问本地代码使用JNI的好处: - 1.提高代码安全性,本地C代码反编译困难 - 2.方便的使用成熟C开原创 2015-09-19 01:57:40 · 4939 阅读 · 0 评论 -
Shell脚本
Shell Samples:#!/bin/bash //"#!" 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shellecho "Hello World !" //echo命令用于向窗口输出文本>> 加法运算脚本#! /bin/bashecho "input first number:"read param1echo "input sec原创 2015-09-24 00:42:02 · 5844 阅读 · 0 评论 -
APK的安装流程及PackageManagerService源码解析&静默安装
Android APK的安装卸载流程及PackageInstall源码解析&静默安装原创 2015-09-19 01:36:02 · 6938 阅读 · 0 评论 -
制作OTA升级整包增量包
制作OTA升级包 OTA包有整包和差分包之分.顾名思义,所谓整包就是包含整个system分区的数据文件;而差分包则仅仅包含两个版本之间改动的部分.使用整包升级就好比对电脑进行重装系统,格式化系统分区,然后将新系统数据写入分区,而差分包升级不会格式化system分区,只是对其中差异部分内容进行重写.OTA 软件包工具build/tools/releasetools 中提供的 ota...原创 2015-09-23 01:54:35 · 7795 阅读 · 0 评论 -
Android长截屏(滚动截屏)实现原理
Google原生Android系统到目前为止均没有长截屏这一功能,而对于用户而言,这是一个非常实用的功能,如聊天记录,新闻页面等较长的页面想通过一张图片的形式保存起来.好在国内主流手机厂商均已实现了该功能,接下来聊聊我们长截屏的实现原理.长截屏原理概述:我们简单的把一个屏幕分成三分,上中下,中间区域最大,中间区域也就是滑动区域;长截屏开始,我们截取顶部的图片保存到集合中,截取长度如下,然后...原创 2015-09-24 01:07:50 · 23597 阅读 · 5 评论 -
Android系统Framework定制默认值预置修改
1. 配置SELinux权限SELinux(或SEAndroid)主要将app划分为三种类型(根据user不同,也有其他的domain类型):1)untrusted_app 第三方app,没有android平台签名,没有system权限2)platform_app 有android平台签名,没有system权限3)system_app 有android平台签名和system权...原创 2015-09-24 00:38:31 · 9528 阅读 · 0 评论 -
Android开机向导setupwizard,设置系统语言,WiFi向导
Android的框架设计有考虑到开机向导这一场景,因此我们实现开机向导参考Android的Provision.apkProvision: MSM8976/repo/packages/apps/Provision它的主要作用是作为开机引导用户进行一些基本设置.在原生的 android 系统中,provision非常的简单,只有一个空白的 activity,这个主要就是留给 厂商自己定制开机向原创 2015-09-23 01:42:45 · 23243 阅读 · 6 评论 -
android自动更新时间时区机制
名词解释:NITZ:NITZ(Network Identity and Time Zone)或网络标识和时区,是一种用于自动配置本地的时间和日期的机制,同时也通过无线网向移动设备提供运营商信息。NITZ是自从PHASE 2+ RELEASE 96 的GSM中的可选功能,经常被用来自动更新移动电话的系统时钟。NTP:NTP(Network Time Protocol)提供准确时间原创 2015-11-07 17:39:36 · 14212 阅读 · 5 评论 -
Android内存进程管理,Low Memory Killer机制
Android内存管理原创 2015-09-19 02:03:29 · 6213 阅读 · 0 评论 -
Android_PackageInstall源码
PackageInstall阅读packageInstall源码我们的突破口是从程序的窗口开始,首先查看AndroidManifest文件中activity的定义PackageInstallerActivity: 窗口指定了两个IntentFilter,因此两种方式调用该窗口,两种方式都定义了action:android.intent.action.INSTALL_PAC原创 2015-09-24 00:40:53 · 10462 阅读 · 1 评论 -
Settings7.0添加新菜单列表项源码分析 Fragment配置Activity启动入口
Android6.0 Settings是通过加载dashboard_categories.xml,获取显示列表,所以在6.0上可以直接在dashboard_categories.xml添加icon、title、summary,同时也可以添加目标fragment和Intent.Android 7.0是通过在Androidmanifest.xml中配置intent-filter的Action,然后对指...原创 2017-06-08 17:43:34 · 3563 阅读 · 1 评论 -
Linux常用基本命令&Android系统编译命令
Linux命令:touch 创建文件touch framework/base/Android.mk // 创建文件夹mkdir 创建文件夹cat 显示文件所有内容(合并文件)cat aa文件 bb文件(可以多个) > 合并到的aabb文件cat framework/base/Android.mk // 查看文件echo // 输出原创 2015-12-09 01:05:47 · 4565 阅读 · 1 评论 -
Android Mms短信的发送流程,短信发送源码解析
发送前的校验从短信的点击按钮开始着手:// packages/apps/Mms/src/com/android/mms/ui/ComposeMessageActivity.java @Override public void onClick(View v) { mIsRTL = (v.getLayoutDirection() == View.LAYOUT原创 2015-10-28 02:00:27 · 6995 阅读 · 1 评论 -
Android系统源码Settings导入eclipse
## 导入Settings到eclipse&amp;gt; Settings路径: cm13.0/repo/packages/apps/Settings## 一、通过Android.mk文件查找依赖库原创 2015-09-23 01:51:21 · 7374 阅读 · 1 评论 -
Android系统源码framework SystemUI导入eclipse编译
Android系统源码framework SystemUI导入eclipse编译原创 2015-09-23 01:53:47 · 8967 阅读 · 0 评论 -
Android.mk编译脚本 & AndroidManifest.xml编写及注释
更新时间: 2019.04.17AndroidManifest.xml:android:sharedUserId="android.uid.systemui" //SystemUI属于系统apkcoreApp="true" //SystemUI属于核心apkandroid:persistent="true" //SystemUI不会被KILL,即被KILL后会自动重...原创 2015-09-23 01:34:36 · 12666 阅读 · 8 评论 -
AndroidIPC进程间通信 binder机制&aidl远程服务demo
Android系统中大量使用了基于C/S架构的通信方式,例如发送短信,拨打电话,视频音频捕获,传感器等都以服务(Service)的形式提供,并由相应的Server负责管理;应用程序作为Client只需要与这些Server建立连接并发送请求便能使用这些服务;因此,开发者完全不必关心Service的实现细节,直接与Server建立连接然后使用其提供的接口即可;Client和Server一般是运行在不同原创 2015-02-25 12:14:11 · 5537 阅读 · 2 评论 -
ActivityManagerService启动源码
ActivityManagerService是AndroidFramework的核心,它管理着Android系统中的4大组件:Activity、Service、ContentProvider和BroadcastReceiver,同时也管理和调度所有用户进程.AMS代码结构:ActivityManagerProxy是ActivityManagerNative的内部类,是Activit...原创 2015-10-28 01:59:39 · 3703 阅读 · 0 评论 -
android系统启动流程
Android系统的启动流程一、init进程启动1.按下Power键,引导芯片代码从预定义的地方(固化在ROM(read only memory)的预定义位置) 开始加载引导程序 BootLoader到RAM(random access memory),然后执行引导程序(bootloader)引导程序BootLoader是Android系统运行前的第一个程序,它的主要作用是把系统OS拉起...原创 2015-09-23 01:52:09 · 7163 阅读 · 0 评论