![](https://img-blog.csdnimg.cn/2020022717174278.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Android10.0 源码修改
文章平均质量分 78
Android 10.0源码修改
cczhengv
android ROM 定制开发
展开
-
android10.0(Q) AOSP 增加应用锁功能
前言应用锁的功能可以说是很普遍了,大致就是在 startActivity 对应代码处进行拦截就行。最开始在网上找了点资料,没有能合适直接用的,就自己搞了下,这里简单做个笔记。Android应用锁实现那就给大伙先来个效果图先康康思路分析由于我们的目标应用是系统 Settings ,这家伙的入口不唯一,一开始是想着在 Launcher3 中进行拦截就行,最终效果不太完美,后来改到 ActivityStarter 中 startActivity()是怎么找到这个地方的呢?因为之前改过一个 Q 版原创 2021-12-03 12:10:21 · 2297 阅读 · 0 评论 -
AndroidQ(10.0) MTK平台添加新分区
65 平台增加一个新分区,用于保存特殊数据,修改文件列表如下 modified: build/make/core/Makefile modified: build/make/core/config.mk modified: build/make/core/envsetup.mk modified: build/make/core/main.mk modified: build/make/tools/releasetools/build_image.py modified:原创 2021-05-14 19:48:51 · 3836 阅读 · 7 评论 -
Android10.0 OTA 错误解决办法(@/cache/recovery/block.map‘ failed)
最开始犯的低级错误验证安装包的时候出现了 java.security.SignatureException: no signature in file (no footer) 这个错误这个是由于拷贝的 update.zip 文件不对引起的 校验的时候 RecoverySystem 会读取zip文件前6个字节判断正确的完整升级包拷贝 out 目录下 system.img 同级下 full_xxxx-ota-mp1xx.zip错误的升级包我拷贝了 obj\PACKAGING\target_files_原创 2021-04-02 11:12:22 · 4267 阅读 · 1 评论 -
android10.0(Q) Camera2 保存图片角度不对和镜像问题
找到最终保存照片的方法 saveDataToStorage()vendor\mediatek\proprietary\packages\apps\Camera2\common\src\com\mediatek\camera\common\storage\MediaSaver.java增加 rotatePicture() 方法private void saveDataToStorage(Request request) { LogHelper.d(TAG, "[saveDataToSt原创 2021-03-09 16:27:53 · 1273 阅读 · 0 评论 -
Android10.0 压力测试--恢复出厂自动测试工具
知识储备1、恢复出厂接口调用从系统设置中重置页面入手,很容易找到packages/apps/Settings/src/com/android/settings/MasterClearConfirm.java其实就是发送 ACTION_FACTORY_RESET 广播,通知 framework 进行重置,所以我们的工具也可以调用 private void doMasterClear() { Intent intent = new Intent(Intent.ACTION_FAC原创 2021-02-24 13:11:17 · 1984 阅读 · 4 评论 -
Android10.0(Q) 实现通话中播放音乐/通话背景音(答录机/魔音功能)
前言这个功能大体意思类似机器人交互的效果,一般多应用到客服接听场景中,电话接通自动播放一段录音给对方听,根据选项操作录音解析等完成一整个流程。这里面电话接通播放声音给对方听普通应用是做不到的,因为这关系到音频焦点分配的问题。Android 电话拨入音频焦点(Audio Focus)谷歌默认的策略,当电话响铃或接通后,电话的音频焦点使用优先级是最高的,其它应用是无法抢占的。但我们有源码啊,可以跳过这个地方,但是尝试后你会发现依旧不行。因为这还关系到 audio 驱动部分的上下行。修改方案fram原创 2021-02-16 18:54:47 · 7792 阅读 · 12 评论 -
Android10.0(Q) 6765 USB 摄像头调试记录
过程开整之前,按习惯去 FAQ 上一顿搜索,都是些低版本的改动记录,后来得知高版本对 USB Camera这块的支持太少了。FAQ 上淘到一个6.0的改动方法,照着试了试发现不行呃。后来经过一番搜索后,找到 MTK USB CMAERA 调试记录,按照这哥们的修改可行。编译后重新烧写,插入USB摄像头执行ls -l /dev/v*,发现了 /dev/video0 设备,那么第一步算是走通了。alps\kernel-4.9\arch\arm64\configs\k62v1_64_bsp_debug_原创 2021-02-10 10:38:33 · 1138 阅读 · 0 评论 -
提供 NvramService 给 AS 直接调用(基于android10)
最近对 Nvram 研究上瘾了,要读写 nvram 需要在安卓源码中编译才能调用相关 API,这样局限性太大。本文的目的就是给系统增加一个 NvramService 让普通 APP 可直接读写 nvram,类似这样的调用。WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);Display defaultDisplay = windowManager.getDefaultDispla原创 2021-02-04 14:57:27 · 1546 阅读 · 2 评论 -
AndroidQ(10.0) MTK 开机 Logo 动态替换
前言之前写过一篇关于androidO版本的开机logo切换地表最强之Android开机Logo动态替换,最近正好在研究 NVRAM 相关的东西,那就稍带手加一下这个功能。开始以为照着之前 O 的修改来就行,没想到 Q 版本相关部分改动还挺大,前前后后折腾了快半个月才搞定。开机Logo加载原理1、u-boot logo显示原理Little Kernel 会在 platform_early_init 阶段首先会获取 lcm params,其工作流程就是透过读id找到现在插入的LCM,根据 LCM原创 2021-01-15 16:41:44 · 2733 阅读 · 0 评论 -
Android10.0(Q) 默认应用设置(电话、短信、浏览器、主屏幕应用)
有些时候系统里预装了两个电话、桌面这样的应用,开机启动后系统会弹框让你选择使用那一个。在系统设置中应用和通知里发现有默认应用选项,点进去发现是在 PermissionController 中默认列表界面adb shell dumpsys window | findstr mCurrentFocusmCurrentFocus=Window{ffb6aca u0 com.android.permissioncontroller/com.android.packageinstaller.role.ui.D原创 2021-01-03 13:12:42 · 6835 阅读 · 20 评论 -
Android10.0(Q) 网络自动校时bug修改
问题现象联网后系统时间依旧显示不对,和系统校时服务器有关系,之前低版本也修改过这个问题来着修改方法和之前低版本比对发现,以前的 NetworkTimeUpdateService 已经更名为 NewNetworkTimeUpdateService,而且代码变动不小,根据之前修改问题不大。frameworks/base/services/core/java/com/android/server/NewNetworkTimeUpdateService.javaimport java.io.PrintWr原创 2020-12-12 09:36:22 · 1346 阅读 · 4 评论 -
android10.0(Q) Nvram 新增节点
第一步:nvram lib id定义vendor\mediatek\proprietary\custom\k71v1_64_bsp\cgen\inc\Custom_NvRam_LID.htypedef enum{ .... AP_CFG_RDCL_FILE_AUDIO_WB_PARAM_LID, AP_CFG_REEB_PRODUCT_INFO_LID, AP_CFG_CUSTOM_FILE_LOGO_INDEX_LID,//cczheng add for logo nvra原创 2020-11-30 17:45:59 · 2571 阅读 · 4 评论 -
AndroidQ(10.0) SystemUI 增加Notification控制白名单
前言定制系统一般都会要求状态栏左上角只显示固定的通知消息,避免预装其它app乱发通知消息解决办法找到 SystemUI 中控制消息现实的地方,将其拦截frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\NotificationListener.java private boolean isNeedAddNotification(String pkgName){ java.util.Lis原创 2020-11-14 11:36:29 · 1085 阅读 · 1 评论 -
AndroidQ(10.0) 增加包名安装、卸载白名单
实现思路1、提供 ContentProvider 存储 app 包名2、找到系统安装、卸载 apk 核心代码,查询 app 包名列表,实施拦截安装卸载的核心代码都在 PackageManagerService.java 中其中手动点击 apk 调用安装代码在 PackageInstaller 中文件清单frameworks\base\packages\PackageInstaller\AndroidManifest.xmlframeworks\base\packages\PackageInst原创 2020-11-12 18:14:50 · 2121 阅读 · 2 评论 -
AndroidQ(10.0) 预制客供壁纸和铃声
预制客供壁纸之前这个功能在 6.0 上修改过,已经是三年前了,之前壁纸选择还集成在 Launcher3 中,当时参考这篇https://blog.csdn.net/jspping/article/details/50569097 进行的修改Q 版本中已经独立出来了,在 WallpaperPicker 中进行修改制作缩略图,将客户提供的壁纸丢给美工制作对应的缩略图,然后将所有资源图片放置到vendor\mediatek\proprietary\packages\apps\WallpaperPicke原创 2020-11-05 13:14:18 · 980 阅读 · 0 评论 -
AndroidQ(10.0) 手机锁屏炫酷充电动画————html方案
效果图知识储备1、WebView加载html,并通过JS传值在网上随便搜索找到了这个炫酷的充电动画,可惜是css实现的,想在Android中使用那只能通过 WebView 来加载了,要传递当前系统电量需要在Java和JS中传值,具体可参考下面的文章Android如何使用HTML做界面——WebView控件Android:你要的WebView与 JS 交互方式 都在这里了2、SystemUI 中使用 WebView 控件排错开始在普通工程中使用WebView是没有问题的,但移植到System原创 2020-10-06 09:51:34 · 2026 阅读 · 3 评论 -
AndroidQ(10.0) 手机锁屏炫酷充电动画————lottie方案
效果图知识储备1、Lottie动画使用指南Lottie开源动画库介绍与使用示例Android Lottie动画初探Lottie动画免费下载网站2、SystemUI 中引入AAR库编译因为在源码中加载aar或者jar包编译坑太多,我们先在 AS 中通过本地aar方式成功运行项目后,排除各种依赖库报错问题再移植到 SystemUI 中进行编译,Android.bp 文件中引入aar、jar、so库正确编译方法(值得收藏)以下是我整理的 lottie 依赖资源lottie和html充电动画相原创 2020-10-05 18:56:11 · 1498 阅读 · 2 评论 -
AndroidQ(10.0) system app 增加访问 sys/class/ 权限
问题由来System app 需要读取网卡地址,而网卡地址存储在 sys/class/net/eth0/address所以通过 cat sys/class/net/eth0/address 就能获取设备网卡地址但是安全等级越来越高,1|HTC5K:/ $ cat sys/class/net/eth0/addresscat: sys/class/net/eth0/address: Permission deniedHTC5K:/ $ ifconfigifconfig: ioctl 8927:原创 2020-09-27 11:32:33 · 3576 阅读 · 11 评论 -
AndroidQ(10.0) SystemUI 修改踩坑汇总
上来先吐槽下,Q 的 SystemUI真的太奇葩了,搞了好几天jar包还没成功导入,同样jar包在其它模块下导入是没问题的,唉,真是太难了。总结下这几天尝试的各种方法,也算是填坑了。坑一、采用 Android.bp 方式编译Android.bp 是从 7.0 之后引入的,但在10.0之前源码中大多模块都还是采用 Android.mk 配置编译,到了Q中几乎全都是。虽然有 androidmk 工具可将 mk 转为 bp,但复杂的mk转换后大概率是错的。androidmk 工具路径 out/soong原创 2020-08-25 12:23:14 · 3066 阅读 · 9 评论 -
Android Preference 卡片圆角风格定制
效果图实现步骤在网上查找这块的资料,发现并未找到相关的,大多都是通过修改 Preference style 来设置背景色什么的,和我们预想的效果不太一样,那就去看看 Preference 源码吧,说不定能有什么收获。先看下 Preference 类继承关系结构图,在AS中通过快捷键 ctrl + h 即可调出视图基本上我们常用的简单显示控件都继承自 Preference,系统设置界面也不例外,全都是用的 Preference通过分析 Preference 源码发现了默认布局文件为 pref原创 2020-08-19 11:09:55 · 1512 阅读 · 6 评论 -
AndroidQ(10.0) Settings DatePick bug修改
问题现象上图展示的很清楚,在系统->日期和时间选项页面中,点击日期 Preference,左边的上一月显示都透出来了修改历程一开始觉得是 DatePick 系统控件出问题了吧,自己新建了android工程,同样的调用方式显示发现是正常的,这么说排除系统控件的锅,上网找了一堆 DatePick 相关bug的文章,但都不是同样的bug。开始尝试在 settings 中其它地方调用 DatePick 显示,发现也出现同样显示bug,找啊找,试啊试最终定位到样式上,和 android:clip原创 2020-08-10 14:50:42 · 504 阅读 · 2 评论 -
AndroidQ(10.0) 内核版本增加linux编译用户信息
版本对比O 版本设置界面中内核信息Q 版本设置界面中内核信息解决办法frameworks\base\packages\SettingsLib\src\com\android\settingslib\DeviceInfoUtils.java@@ -88,11 +88,15 @@ public class DeviceInfoUtils { return context.getString(R.string.status_unavailable); }原创 2020-07-27 11:28:14 · 2122 阅读 · 0 评论 -
android10.0(Q) Launcher3 去掉抽屉
效果图修改思路1、增加变量 launcher3.is_full_app,用来动态切换2、增加两套布局,对应有抽屉和无抽屉3、去除 allAppsButton4、将 AllAppsContainerView 中的图标加载到 Workspace5、新安装的 app 自动添加图标到 Workspace6、替换 Workspace 图标长按删除选项为取消7、屏蔽上拉显示抽屉页面手势8、修改页面指示线为圆点上代码1、Settings 中增加字段 launcher3.is_full_apppu原创 2020-07-21 10:48:38 · 6753 阅读 · 24 评论 -
androidQ(10.0) Launcher3 修改PageIndicator为小圆点
修改workspace最后一列图标长按ArrowPopup显示位置不对bugbug现象图修正效果图解决办法packages\apps\Launcher3\src\com\android\launcher3\popup\ArrowPopup.java protected void orientAboutObject() { measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); int width原创 2020-07-19 12:20:40 · 1301 阅读 · 0 评论 -
AndroidQ(10.0) 自带音乐APP正在扫描中bug修改
bug现象进入音乐APP,点击艺术家Tab页中专辑项目下歌曲信息,自动跳转至正在扫描SD卡,一直卡在扫描界面,无法退出解决办法对比 9.0 看了之前的效果是点击歌曲信息后就跳转至歌曲详情界面 TrackBrowserActivity,再点击条目就直接播放了操作效果和从专辑Tab页中点击歌曲跳转流程一样,10.0 中专辑Tab页点击歌曲跳转也正常,那么解决思路就是我们在艺术家Tab中点击时也跳到 TrackBrowserActivity 界面就好了,不去进行扫描操作。后来分析日志发现,一直在扫描是原创 2020-07-15 15:07:48 · 916 阅读 · 2 评论 -
AndroidQ(10.0) 默认铃声修改
Q 版本之前修改方法新增预制铃声文件至 frameworks/base/data/sounds/ringtones/ogg/ 目录,注意文件格式为 .ogg编译时拷贝文件至 out 中frameworks/base/data/sounds/AllAudio.mkLOCAL_PATH := frameworks/base/data/soundsPRODUCT_COPY_FILES += \ $(LOCAL_PATH)/newwavelabs/OrganDub.ogg:system/med原创 2020-07-13 11:38:58 · 3152 阅读 · 14 评论 -
androidQ(10.0) 读取蓝牙设备当前电量并显示
效果图华为手机顶部状态栏我们客制化后最终效果实现步骤1、获取蓝牙设备连接成功后的电量值2、跟踪蓝牙图标显示流程3、制作蓝牙带电量图标4、获取电量后显示对应电量值图标文件修改清单 vendor/mediatek/proprietary/packages/apps/SystemUI/res/drawable/ic_bluetooth_connected_super.xml vendor/mediatek/proprietary/packages/ap原创 2020-07-06 13:50:10 · 6325 阅读 · 1 评论 -
androidQ(10.0) 预装集成apk到data分区
前情提要关于预装APK相关知识可参考Android 源码编译如何确定模块安装的位置Android O、P、Q 版本如何预装 APK遇到问题当我按照 Android O、P、Q 版本如何预装 APK 一文将 PMS 中 patch 回退,并在 Android.mk 中指定LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS) 输出到 data/app 目录下,编译后apk也确实位于data/app/中,而且 userdata.img 大小也明显变大了,但是当烧写原创 2020-07-02 13:48:39 · 6321 阅读 · 4 评论 -
android10.0(Q) 后台启动Activity白名单
问题log2020-06-08 10:00:05.600 1110-1654/system_process W/ActivityTaskManager: Background activity start [callingPackage: com.android.callthird; callingUid: 10109; isCallingUidForeground: false; isCallingUidPersistentSystemProcess: false; realCallingUid: 1原创 2020-06-12 18:13:49 · 7562 阅读 · 0 评论 -
android10.0(Q) Settings 添加设置项——动态方式
为什么要这样做?上一篇通过静态方式添加配置项,应用场景太局限。所以继续研究加载原理,终于发现了动态加载的奥秘。效果图文件清单frameworks\base\packages\SettingsLib\Tile\src\com\android\settingslib\drawer\TileUtils.javavendor\mediatek\proprietary\packages\apps\MtkSettings\src\com\android\settings\dashboard\Dashbo原创 2020-06-08 17:24:15 · 8800 阅读 · 1 评论 -
android10.0(Q) Settings 添加设置项————静态方式
前言之前写过一篇6.0Settings配置项动态添加和静态添加,已经是很久以前了,从8.1后Settings加载方式进行了较大改动,到了10.0又和8.1不大一样了,最近刚好又用到这个功能,那就整理分享下。效果图一级菜单二级菜单文件清单vendor/mediatek/proprietary/packages/apps/MtkSettings/res/xml/top_level_settings.xmlvendor/mediatek/proprietary/packages/apps/Mt原创 2020-06-05 16:59:00 · 7045 阅读 · 21 评论 -
Android10.0(Q) MTK平台增加以太网静态IP功能
前言朋友们,网卡功能真的是太太太太常用了,这次我又带着 10.0 的以太网静态IP功能来了,相比 9.0 而言,framework 没啥大变化,可以直接对比移植。Settings 部分也没啥大变化,preference 对应的包由 v7变成 androidx,这个导报的时候注意下就行。效果图效果图就不贴了,和 9.0 一样都是横屏,差别不大。上代码app层Settins 源码和9.0无差别,完整代码资源链接这里列下差异地方。vendor\mediatek\proprietary\pack原创 2020-06-01 13:30:53 · 6256 阅读 · 34 评论 -
Android Q MTK平台开关机铃声
google 默认开机动画代码在framework/base/cmds/bootanimationMTK 开机动画代码在vendor/mediatek/proprietary/operator/framework/bootanimation/MtkBootanimation一、启用 MtkBootanimation,编译 libmtkbootanimation关闭 bootanimation,打开 mtkbootanimationdeleted: frameworks/base/cmds/bo原创 2020-05-26 18:29:44 · 2983 阅读 · 1 评论 -
androidQ Permission 权限破解合集
前言androidQ 中权限部分做了略微改动,MTK 又增加了访问数据和 WLAN 网络权限控制,app 首次请求网络时会弹出权限框询问,大致原理就是第一次启动时扫描设备上已经安装的apk包名维护一个数据库,初始化时都为 CheckedPermRecord.STATUS_FIRST_CHECK,当首次请求网络时,拦截弹框授权。后面会详细分析,这里先跳过。系统的运行时权限弹框风格做了调整,以前源...原创 2020-04-24 16:42:24 · 5022 阅读 · 8 评论 -
Android10.0 导航栏和状态栏动态控制合集
add vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/SharedConfig.java modified: vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/sys...原创 2020-04-13 16:11:17 · 4469 阅读 · 12 评论 -
Android10.0 MTK 平台 Launcher3 修改定制
前言按照惯例 Launcher3 源码存在两份,分别位于 package/app/和vendor/mediatek/proprietary/packages/apps/下,vendor下的mk中使用 LOCAL_OVERRIDES_PACKAGES 属性覆盖 package 下的源码,所以我们要改的源码就是 vendor 下的。但是在 Q 中并不是这样的,编译后的Launcher3 app 路径...原创 2020-04-07 17:35:39 · 7044 阅读 · 29 评论 -
Android10(Q) GMS 全家桶移植
1、将平台厂商提供的 GMS 包解压后所有文件扔到 vendor/google/ 目录下,没有 google文件夹自己创建下2、修改如下文件,编译烧写device/mediatek/common/BoardConfig.mk@@ -201,7 +201,8 @@ ifeq ($(BUILD_GMS),yes) ifeq ($(strip $(MTK_AB_OTA_UPDATER)...原创 2020-04-02 16:14:47 · 4225 阅读 · 3 评论 -
Android10.0 MTK 平板横屏方案修改(强制app横屏 + 开机logo/动画+关机充电横屏 + RecoveryUI 横屏)
拆解步骤1、app 强制横屏显示,无视 android:screenOrientation=“portrait” 属性2、开机动画横屏3、开机logo、关机充电动画横屏4、RecoveryUI 横屏上代码1、app 强制横屏显示DisPlayContent 显示 mRotation 默认改为 3 (270)frameworks\base\services\core\java\com...原创 2020-03-31 17:59:25 · 8190 阅读 · 29 评论 -
Android10 动态分区介绍
分区概览下面列出标准Android系统中存在的分区,供应商可能对分区进行增减和更改。需要注意的是,Android 9开始对分区结构增加新的技术(A/B 设备、system-as-root等),它们对分区作用有很大影响。boot:包含通过 mkbootimg 组合在一起的kernel镜像和 ramdisk。使能system-as-root后,该分区仅存放kernel镜像。system:...转载 2020-03-24 16:58:35 · 30075 阅读 · 3 评论 -
Ubuntu18.04 编译 Android10.0 系统源代码
编译环境1、Ubuntu18.04 系统2、三星500G SSD EVO系列3、内存8G,cpu 4核,I5(8年老本了凑合着用用)准备工作1、下载 gitsudo apt-get install git开始遇到的问题,git 下载不了,提示下面的信息Some packages could not be installed. This may mean that you have...原创 2020-02-02 14:38:23 · 9947 阅读 · 17 评论