Framework
文章平均质量分 74
小路塔
目前发量还行
展开
-
(Ubuntu 18.04) Android framework R版本S版本环境配置及使用 ninja 快速编译
Android R 和S版本的编译,首先是环境配置,配置好环境之后,需要的不仅仅是push framework.jar 这么简单,需要push的还有其生成的附属文件。如果是make framework 后面只能编译一个寂寞,需要 make framework-minus-apex services,才能生成对应的jar包。1.环境配置(Ubuntu 18.04)安装openjdk8-jdksudo apt-get install openjdk-8-jdk安装fastbootsudo原创 2021-12-15 13:15:10 · 3163 阅读 · 0 评论 -
Android Studio 导入源码
目前做framework开发,仅仅导入framework源码进行查看,发现很多跳转并不能跳转,得益于公司配备的电脑性能超好,查看的时候导入源码进行查看比较方便。1.拷贝android.iml 和android.ipr 放到源码根目下面如下路径development/tools/idegen/templates/android.imldevelopment/tools/idegen/templates/android.ipr2.打开 根目录下拷贝的android.iml 文件 用如下.原创 2021-12-15 11:22:56 · 2828 阅读 · 0 评论 -
Android R 系统设置导航模式NavigationBar的流程分析
系统设置中会设置手势导航模式 在Setting中可以进行设置查看原生代码发现系统导航类设置为SystemNavigationGestureSettings 其中SystemNavigationGestureSettings是Preference定义在accessibility_settings.xml中在XML中对应的控制类是SystemNavigationPreferenceController通过代码查看到SystemNavigationGestureSettings.java继承之RadioButt.原创 2021-09-21 11:41:46 · 3168 阅读 · 0 评论 -
Android R Navigationbar的创建,图标更新,加载流程
本文是基于R代码分支编写,S暂时未涉。手机导航栏是手机系统的一个重要功能,导航栏随着系统功能的不同会有不同状态,熟悉他们的创建和状态改变有助于我们遇到类似问题的总结。Navigationbar 绘制流程涉及代码路径:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.javaframeworks/base/packages/SystemUI/src/com/android原创 2021-09-21 09:24:52 · 2280 阅读 · 1 评论 -
Android系统Activity的显示原理
本文查看的源码是Android 7.1所有方法中的代码只保留了本文关注的代码。抽空研究了一下Activity的显示过程,主要是熟悉Android中的Activiy从设置布局到绘制显示的整个流程。按照老惯例先上时序图涉及的文件路径:frameworks/base/core/java/android/app/Activity.javaframeworks/base/core/java/android/view/ViewRootImpl.javaframeworks/base/.原创 2021-07-07 18:00:56 · 939 阅读 · 3 评论 -
Android 11 锁屏调用相机android.permission.SYSTEM_CAMERA报错
遇到一个问题,在锁屏状态下调用相机被杀掉,查看了一下日志在调用相机的时候报了一句权限拒绝的语句为android.permission.SYSTEM_CAMERA 当时看到这个权限之后感觉mei原创 2021-06-12 10:02:01 · 5313 阅读 · 3 评论 -
Android 7.1 高德导航和蓝牙音乐卡顿问题 & 蓝牙电话和高德语音播报混音问题
此文章主要解决三个问题1.高德导航的时候打电话会出现混音问题。2.蓝牙音乐在播放的时候导航界面语音播报蓝牙音乐会暂停,播报结束会恢复播放不能同时输出问题。3.蓝牙音乐在播放的时候和导航界面的语音播报混音输出的时候会有蓝牙音乐非常频繁且非常短暂卡顿的问题。涉及的路径:packages/apps/Bluetooth/src/com/android/bluetooth/hfpclient/HeadsetClientStateMachine.javapackages/apps/Blueto.原创 2021-01-19 17:15:40 · 3357 阅读 · 0 评论 -
Android 蓝牙启动流程(以及设置蓝牙为作为sink模式 & 接收端模式)
本文以Android 7.1为基础最近在做蓝牙开发,研究了一下蓝牙的启动流程,总结一下Google在Android源码中推出了它和博通公司一起开发的BlueDroid以替代BlueZ。BlueZ的创始者,高通公司也将在基于其芯片的Android参考设计中去除BlueZ,支持BlueDroid。相比BlueZ,BlueDroid最值得称道的地方就是其框架结构变得更为简洁和清晰。对我们工程师来说这也是个不错的福利,清晰、简洁的架构使我们在debug过程中思路更清晰;蓝牙的总体流程图从流程图我们可原创 2020-08-29 13:20:30 · 9626 阅读 · 0 评论 -
Android 7.1 系统 部分功能修改 汇总
1.修改蓝牙为从端device/qcom/msmxxx/system.prop//设置成从模式persist.service.bt.a2dp.sink=truepersist.service.bt.hfp.client=truedevice/qcom/msmxxx/overlay/packages/apps/Bluetooth/res/values/config.xml<?xml version="1.0" encoding="utf-8"?> <resour.原创 2020-06-18 10:47:43 · 1710 阅读 · 0 评论 -
Android 7.1 APP 启动流程分析
本文是基于 Android 7.1 系统进行探讨的.我们都知道Launcher 其实也是一个APP ,安装好的应用的快捷方式都被放在了Launcher中.很多的厂家或者厂商都在定制自己的Launcher,目前我们知道Android现在使用的是Launcher3的版本,下图是 Java应用层创建Activity的过程我们可以在如下路径找到Launcher.javapackages/apps/Launcher3/src/com/android/launcher3/Launcher.j.原创 2020-06-17 10:02:24 · 1172 阅读 · 1 评论 -
Android Studio 生成含第三方jar包 以及引入指定的jar
对于一些要使用修改了系统的API的应用 ,使用AndroidStudio不能编译APK,导入自己编译的framework.jar 进行编译APK整体编译系统后找到classes.jar包classes.jar包就是 framework.jar 如下:fclasses.jar 路径out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jarbuild.gradle 添加dependencies {..原创 2020-05-27 17:57:10 · 1357 阅读 · 0 评论 -
Android Q存储SD卡-Android29 存储外置SD卡
最近公司相机升级到AndroidQ 遇到无法存储SD卡,原来是Goole抛弃了原有的API(不是过时,是抛弃,导致之前的存储API不能用)查看Google API 进行了代码更换, 在在更换过程中遇到了比较多的坑,将部分关键代码记录下来,方便下次使用。如果不使用外置可插拔SD卡的AndroidQ存储可以使用如下方法暂时不用 AndroidQ的存储方式在AndroidManifest.xml...原创 2019-08-14 18:37:58 · 5394 阅读 · 4 评论 -
生成Image对象
Image对象在 拍照的时候在底层可以获取到,主要是拍照的时候用的ZSL拍照需要两次处理,当第一次拍照获取到Image之后然后设置用ImageWrite 的queueInputImage 方法进行降噪处理和曝光值处理,目前公司的需求是需要 第一次拍照的时候 就将一个Image传递下去,Image不能直接获取,最后想到了一个方法,读取一个byte 然后再填充到 Image里面具体关键代码...原创 2019-08-22 15:36:21 · 1365 阅读 · 0 评论 -
Android 7.1 车机 下载 Android 系统 在线升级,将安装包放到/data/下进行升级
最近按项目要求,需要做一个车机Android在线升级操作,但是cache内存太小了,最后只能寄存希望在 data/文件夹下,但是data/目录在6.0之后禁止recovery读取data文件.最后的解决方案是在/data/文件下创建一个系统app能够操作的文件夹,进行升级操作.1.升级流程Android自带升级流程 API RecoverySystem.java(framewo...原创 2019-10-14 17:48:57 · 25925 阅读 · 2 评论 -
Ubuntu下 生成系统签名以及给APK直接签名
最近在做系统升级,需要很多的系统级别的权限,需要在应用的AndroidManifest.xml中package下面声明如下android:sharedUserId="android.uid.system"当我们使用了如上声明,而有没有给系统进行签名的时候可以就汇报如下错误INSTALL_FAILED_SHARED_USER_INCOMPATIBLE~$ adb install -...原创 2019-10-28 17:38:33 · 1838 阅读 · 0 评论 -
开发一款抓取Android系统Log的APP(logcat, kernel, Memory, cpu)
近期项目需要一款抓取系统log的实用工具,具体的内容包括kernel中的log, cpu中的log, memory 中的log, 以及system中的log,在Android4.1之后 认为应用读取系统的log是不安全的,所以要对apk进行系统签名才能读取系统log,如果不能进行系统签名,那么就通过相应的adb命令进行读取.通过功能分析,做的步骤分为如下大概几步:1.工具可以开启自启动进...原创 2019-11-06 16:02:27 · 4271 阅读 · 4 评论 -
Ubuntu 命令行 安装 OpenJDK ,JDk 以及JDK版本切换
Ubuntu 编译源码必须使用 OpenJDK,而且每个Android版本对应的OpenJDK版本各不相同,因此需要配置多个OpenJDK,配置比较耗时和麻烦,使用命令行安装省时又方便.默认JDK 安装:~$ sudo apt-get update~$ sudo apt-get install default-jreOracle JDK : 6, 7, 8, 版本...原创 2019-12-09 20:30:16 · 1363 阅读 · 0 评论 -
Android 7.1 修改源码实现app的静默安装 & 安装完成之后自动打开安装的应用.
真正的静默安装是不需要用户进行任何点击操作的,目前大部分博客所说的静默安装还是需要弹出确认界面,让用户点击授权安装,我认为真正的静默安装应该是不需要用户任何确定操作,就比如现在的好多应用市场安装软件才是真正的静默安装.目前公司也想要实现和应用市场类似的安装方式,我们不难发现 像小米和华为 google都有个人的应用市场,而这写应用市场的app并不互通,比如我将小米应用市场app安装到华为手机上...原创 2019-12-17 11:41:07 · 2202 阅读 · 1 评论 -
Android 7.0 & 9.0 修改源码去掉动态权限 & 权限白名单设置
最近公司集成很多第三方APP,有很多的APP并没有进行动态权限申请,导致很多低版本的应用在大于6.0的系统上不能进行运行的问题,为此公司做出了让步,决定去到弹窗,只要是应用在AndroidManifest.xml进行申请的权限都可以使用.预装的第三方app有两种:一种是adb push 到 pri-app下的另一种是直接把代码放在package下编译出来的app。我们是要所有app都不弹出...原创 2019-12-25 20:25:36 · 4642 阅读 · 0 评论 -
Android 7.1添加一个 系统底层服务
受疫情影响,自己工作目前又比较忙,很长时间没有更细博客了,最近看了一下底层服务,尝试着添加了一个地城服务,之前写过一个文章是 Android在java层添加服务进行通讯,对Java层服务感兴趣的同学可以去看一下Android 7.1 添加一个进程间通讯的系统服务(java层)本次添加一个底层服务,目的是为了应用程序可以获取此服务 与 底层服务通讯分为大概几个步骤1.添加文件2...原创 2020-04-19 15:39:59 · 2478 阅读 · 0 评论 -
Android 系统启动流分析 & Zygote启动流程分析
本文是给予Android 7.1进行分析 Zygote在Android系统扮演着不可或缺的角色,Android系统的启动首先需要Zygote参与,比如启动SystemService , 还有一个就是孵化应用的进程,比如我们创建一个Activity也是需要Zygote参与. 那么Zygote是怎么启动的? 首先是开机的时候会Linux会先...原创 2020-04-22 21:13:21 · 1830 阅读 · 0 评论 -
MTK Android User版本实现 root 功能 & 可进行APK的删减 和 系统img的替换
最近项目需要,需要实现一个功能需要Android在user版本的状态下可以进行烧制system.img和 可以进行对系统的system/app下面的APK 以及 data/* 下所有的文件进行烧录.修改过程中也遇到了很多的坑能,在此记录一下,方便后期翻阅,也让修改的同学们别踩到我遇到的坑.遇到最大的坑就是 User版本编译出来之后 可以root 也可以remount$ adb rootadbd is already running as root$ adb remountremount su..原创 2020-05-08 17:32:32 · 3793 阅读 · 0 评论