Android平台
文章平均质量分 89
帅得不敢出门
省略1万字
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android各芯片平台日志打开及获取
展锐(Unisoc)和联发科(MTK)芯片平台日志管理工具对比:展锐使用YLog机制和com.sprd.logmanager应用收集底层日志,可通过拨号暗码*##83781##*或adb命令激活,日志存储在/sdcard/ylog或/data/ylog;联发科平台则通过com.mediatek.mtklogger应用抓取系统日志,存放于/sdcard/mtklog。两者均提供工程模式工具(如com.sprd.engineermode)用于设备调试,是芯片厂商和OEM进行故障诊断的重要工具。原创 2026-01-06 14:54:01 · 908 阅读 · 0 评论 -
Android Framework不弹窗默认授予所有权限
本文介绍了在Android系统中自动授予权限的修改方法。通过分析PermissionManagerService.java源码,重点修改了restorePermissionState函数中的权限授予逻辑,将运行时权限(Runtime Permissions)的GRANT_RUNTIME改为GRANT_INSTALL,实现安装时自动授予权限而不需要用户交互。对于普通权限、运行时权限和签名权限,统一设置为GRANT_INSTALL模式,从而避免弹窗请求权限。这种修改适用于Android 11系统,涉及frame原创 2026-01-06 10:17:35 · 590 阅读 · 0 评论 -
MTK Android11获取真实wifi mac地址
摘要:本文探讨了在Android系统应用中获取真实WiFi MAC地址的问题及解决方案。由于Android 10+引入的MAC随机化机制,传统方法如读取/sys/class/net/wlan0/address或通过WifiManager获取的均为随机MAC。针对MTK平台Android 11设备,作者发现真实MAC存储在/mnt/vendor/nvdata/APCFG/APRDEB/WIFI文件中,通过读取偏移量为4的6字节数据可获取真实MAC。但系统应用访问该文件需修改system_app.te添加SEL原创 2025-12-23 11:45:36 · 1062 阅读 · 0 评论 -
Android Framework不弹窗设置默认sim卡
本文分析了Android系统中处理多SIM卡选择弹窗的机制,并提出了修改方案。原系统通过SimSelectNotification.java类中的startSimSelectDialogIfNeeded方法在检测到多张SIM卡时会弹出选择窗口。为实现默认选择特定SIM卡的需求,建议修改该方法的实现逻辑:屏蔽数据卡选择弹窗,直接设置SIM卡2为默认数据卡。具体修改方案包括注释掉弹窗启动代码,替换为直接设置默认SIM卡的逻辑,通过SubscriptionManager获取激活的SIM卡信息并进行默认配置。这种修原创 2025-12-23 11:44:10 · 838 阅读 · 0 评论 -
精简Android SDK(AOSP)的git项目提高git指令速度
Git执行卡顿问题分析与解决 问题现象:Git命令执行缓慢,如git commit卡住13分钟。通过性能分析发现preload index阶段耗时过长,原因是.git/index文件过大(175MB)。 原因分析: 项目包含大量大文件(如175MB的wlan.ko) 多个50MB+的文件被纳入版本控制 解决方案: 使用repo工具拆分大项目 精简Android SDK源码(本文采用) 重点精简device目录下非必要厂商配置 保留当前开发平台所需文件 优化后可显著提升Git命令执行速度。原创 2025-12-12 10:50:43 · 1022 阅读 · 0 评论 -
MTK Android11 APP调用OTA升级
本文分析了MTK平台Android系统中RecoverySystem.installPackage() API的工作原理及调用流程。该API是触发OTA升级的关键接口,系统应用通过调用此接口传递OTA包路径,引导设备进入Recovery模式进行升级。文章详细解析了原生SDK中该函数的实现逻辑,包括关键路径变量设置、数据分区处理流程以及安全更新判断机制。同时提供了应用层调用示例代码及所需权限配置,并指出在实际应用中可能遇到的SELinux权限问题,特别是不同存储路径下会产生的差异化错误。最后展示了将升级包放在原创 2025-12-12 10:50:40 · 883 阅读 · 0 评论 -
Android11~13 Framework实现Ntp服务器多域名轮询同步时间
本文介绍了在Android AOSP中实现多NTP服务器轮询的方法。首先分析了原生NTP同步机制,包括NetworkTimeUpdateService、NtpTrustedTime和SntpClient三个核心类的作用。然后详细说明了修改步骤:1)在config.xml配置多个国内NTP服务器;2)修改NtpTrustedTime.java,添加服务器列表管理功能;3)重写forceRefresh方法实现服务器轮询,包括初始化服务器列表、优化服务器顺序、失败重置等辅助函数。该方法通过多服务器轮询提高了时间同原创 2025-12-04 09:51:14 · 1014 阅读 · 0 评论 -
Android8 Framework实现Ntp服务器多域名轮询同步时间
本文介绍了在Android AOSP中修改NTP时间同步服务的实现方法。通过增强SntpClient类使其支持多服务器轮询,修改config.xml添加备用NTP服务器配置,并调整NtpTrustedTime类以支持主备服务器切换机制。关键改动包括:为SntpClient新增支持服务器数组的requestTime方法,在配置文件中定义主备NTP服务器地址,以及在NtpTrustedTime中实现服务器轮询逻辑。这些修改可提高时间同步的可靠性和容错能力,特别适用于网络环境不稳定的场景。原创 2025-12-04 09:51:03 · 791 阅读 · 0 评论 -
mtk安卓生成keystore
mtk安卓8。制作keystore的脚本原创 2023-07-25 18:34:07 · 431 阅读 · 0 评论 -
[MTK]安卓8 ADB执行ota升级
本文介绍了在MTK平台Android 8系统上通过adb推送update.zip进行OTA升级的方法。首先需要解锁设备并获取root权限,然后执行一系列adb命令完成升级包推送和系统更新。同时提供了Java代码实现方式及所需权限配置。文中特别提醒该方法仅适用于Android 8系统,在Android 11上使用可能导致设备变砖。最后附带了多篇MTK平台相关技术文章的链接,涵盖烧录工具、开机动画修改、SELinux配置等内容。原创 2023-11-30 19:54:02 · 1299 阅读 · 0 评论 -
Android单独编译Framework、Services、SystemUI等模块
本文介绍了Android系统开发中单独编译特定模块的方法,包括Framework、Services、SystemUI和电话应用等核心组件。详细说明了不同Android版本的编译指令差异(如framework-minus-apex命令),并提供了模块替换到设备的完整流程(adb命令操作)。文章还包含实用技巧,如处理模块依赖关系、更新API等注意事项,并给出了各模块编译后的文件路径。最后推荐了作者关于Android Framework学习的系列文章,涵盖系统框架、启动过程、Binder原理等核心知识。这些方法能原创 2025-11-26 14:06:50 · 1093 阅读 · 0 评论 -
Android13 Framework修改壁纸与网格样式
本文介绍了Android 13系统中修改壁纸和网格样式的配置方法。壁纸部分包括可选壁纸的配置(通过WallpaperPicker2模块的xml文件)和默认壁纸的替换路径。网格样式修改则通过Launcher3模块的device_profiles.xml文件实现,其中详细说明了4x4和4x5等不同网格布局的配置参数。文章提供了具体的文件路径和示例代码,指导开发者如何自定义Android系统的壁纸和桌面布局样式。原创 2025-11-26 09:44:16 · 249 阅读 · 0 评论 -
Android Framework在原生Settings设置中添加界面
Android设置中Preference是构建交互界面的核心组件,用于创建开关、列表选择、文本输入等设置项。常用子类包括SwitchPreferenceCompat、ListPreference和EditTextPreference等。实现步骤包括创建PreferenceFragmentCompat、定义XML布局以及在Activity中加载片段。 实战部分演示了在Android 13设备"关于手机"页面添加"认证信息"选项的方法:先在AndroidManifest.原创 2025-11-25 12:27:21 · 763 阅读 · 0 评论 -
MTK Android设备unlock解锁
摘要:本文详细介绍了使用ADB命令解锁MTK设备Bootloader的方法。首先需要安装MTK USB驱动和ADB工具,配置fastboot环境(包括Windows/macOS/Linux系统)。具体步骤包括开启开发者选项和USB调试,验证设备连接后重启至Fastboot模式,最后通过fastboot flashing unlock或fastboot oem unlock命令完成解锁。解锁成功后设备首次启动较慢并会显示解锁提示。整个过程需严格按步骤操作,确保设备数据已备份。原创 2025-11-20 09:46:11 · 714 阅读 · 0 评论 -
Android监听运行应用的任务变化包含Activity及Service
本文介绍了两种监听安卓应用运行状态变化的方案:使用IActivityManager和IActivityTaskManager。第一种方案通过注册IProcessObserver回调来监听进程活动变化,但获取包名较复杂。第二种方案从Android 10开始引入,使用registerTaskStackListener回调,能更清晰地获取任务栈变化信息。两种方案都需要引入framework.jar并申请相应权限(SET_ACTIVITY_WATCHER或MANAGE_ACTIVITY_TASKS)。文章通过序列图原创 2025-11-11 14:32:20 · 913 阅读 · 0 评论 -
Android Framework SD卡格式化流程及代码实现
摘要 本文分析了Android系统中格式化SD卡的操作流程代码。主要涉及storage_dialog_unmountable弹窗提示,该字符串定义在Settings/res/values-zh-rCN/strings.xml中,用于提示用户"此存储设备已损坏,需要先进行设置"。代码流程包含存储设备状态检测、格式化确认界面以及格式化进度显示等环节。系统通过StorageManager服务完成,代码反射调用StorageWizardFormatConfirm.showPublic进行格式化。原创 2025-10-23 09:45:47 · 637 阅读 · 0 评论 -
Android监听第三方播放获取音乐信息及包名
摘要: Android通过NotificationListenerService可监听应用通知,包括媒体播放状态。本文介绍了利用该服务获取音乐播放信息的方法:1) 在清单文件中声明权限和服务;2) 实现NotificationListenerService,通过MediaController回调获取播放进度、曲目信息等数据。当检测到媒体通知时,会注册回调监听播放状态和元数据变化。该方案适用于大多数媒体应用,但某些后台播放场景可能需要改用MediaSessionManager轮询。代码演示了如何建立监听、处理原创 2025-10-13 15:57:18 · 1089 阅读 · 1 评论 -
Android Framework用Activity作为原生Launcher3桌面
文章摘要: 本文介绍了原生Launcher3桌面应用的实现原理。通过分析AndroidManifest.xml文件,指出默认首页是Launcher.java,并展示了其作为主Activity的配置属性。文章重点解析了Launcher.java的布局结构,包括DragLayer、Workspace、Hotseat等核心组件的XML定义和功能说明。其中Workspace包含5个屏幕单元格,Hotseat作为快捷栏,PageIndicator用于页面指示,ScrimView提供背景遮罩效果。这些组件共同构成了An原创 2025-10-10 09:34:05 · 587 阅读 · 0 评论 -
Android电池库仑计计算、容量校准、电池曲线详解
Android设备充电过程主要分为三个阶段:预充电(低电流激活)、恒流充电(大电流快速充)和恒压充电(电流递减至满)。充电器类型包括标准SDP、专用DCP和混合CDP,系统需根据类型调整充电策略。库仑计用于精确测量电量,配合OCV电压表计算电池容量。温控采用Jeita策略,根据温度调节充放电参数,确保安全。电池容量计算通过安时积分法和开路电压法实现,并具备自学习功能以校准老化误差。充电管理还包括预充电保护、电量显示校准等机制,通过硬件检测和软件算法共同保障充电安全与效率。原创 2025-10-10 09:08:55 · 1224 阅读 · 0 评论 -
Android各版本运行时权限(Runtime Permission )表现
安卓不同版本运行时权限(Runtime Permission )表现可能会不同,为了安全,目前大部分安卓版本某些敏感权限比如:录音,摄像头,发送短信等都,APP调用前都需要先申请对应权限,用户选择“同意”则可正常使用否则对应功能将不能使用。CTA认证要求低版本的如Android5的apk必须要支持运行时权限,但是其功能是Android6才引入的,需要对Runtime Permission不同版本的表现有个初步认识,好方便针对CTA要求进行修改。原创 2023-02-07 11:32:49 · 1868 阅读 · 0 评论 -
MTK Android修改selinux允许system APP可读写sys与proc
MTKAndroid 11需要为内置的APP打开读写/sys与/proc的权限。原创 2023-03-17 18:04:40 · 1267 阅读 · 2 评论 -
MTK Android隐藏NavigationBar
摘要:本文介绍了在MTK安卓设备上屏蔽NavigationBar的方法。通过修改系统配置文件,将config_showNavigationBar值设为false,并调整system.prop中的qemu.hw.mainkeys参数即可实现。文章提供了详细的搜索指令和代码修改示例,并附带了10篇相关MTK开发的技术文章链接。该方法适用于大部分MTK芯片和安卓版本,可帮助开发者快速隐藏导航栏。原创 2023-08-12 22:03:21 · 962 阅读 · 0 评论 -
MTK Android非常用分辨率修改充电动画
非标准分辨率的屏,配置MTK Android的关机充电动画.。原创 2023-08-15 23:34:29 · 899 阅读 · 0 评论 -
安卓8预装可卸载应用
系统:Android 8CPU:MTK理论上改法适用于其他平台,比如展讯。不适用于安卓11。安卓11请参照。原创 2023-11-30 19:47:38 · 1351 阅读 · 0 评论 -
Android哪些权限属于Privileged Permissions特许权限许可名单
摘要: Android特许权限是安全级别最高的系统权限,包括signature和signatureOrSystem两种级别。这些权限默认授予由平台密钥签名并安装在特定目录(如/system/priv-app)的应用。Android 10引入了强制白名单机制(privapp-permissions.xml),要求显式授权,取代了Android 8.1及之前版本的隐式授权方式。特许应用需满足签名、安装位置及白名单要求,不同Android版本在授权机制上存在差异。signatureOrSystem权限因安全隐患在原创 2025-09-29 14:30:46 · 1075 阅读 · 0 评论 -
Android Framework默认给应用添加dangerous级别权限
摘要:本文分析了Android系统中系统应用获取权限的机制。系统应用安装在/system/app目录下时,需满足特定条件才能获得不同级别权限:signature权限需平台密钥签名;signatureOrSystem权限需同时满足特权目录和平台签名;normal权限自动授予。dangerous权限涉及用户隐私,需通过修改DefaultPermissionGrantPolicy.java源码手动授予。文章还指出Android 10引入的特许权限白名单机制,并提供了在源码中实现权限授予的具体方法,包括修改原创 2025-09-29 14:28:59 · 1057 阅读 · 0 评论 -
Docker安装Ubuntu搭建Android SDK编译环境
本文介绍了在Docker中安装和使用Ubuntu 18.04镜像的详细步骤,包括镜像安装、容器运行、SSH服务配置、中文乱码解决、命令补全安装等。文章还提供了Android编译环境的配置方法,包括JDK版本选择、常见编译错误的解决方案(如setup-jack-server失败、权限问题等)。最后说明了如何配置docker命令免密执行。内容涵盖从基础镜像安装到复杂编译环境搭建的全过程,适合需要在Docker容器中进行Android开发的用户参考。原创 2025-09-06 12:26:25 · 1061 阅读 · 0 评论 -
Android Framework打电话禁止播放运营商视频彩铃
本文介绍了在展锐平台安卓13系统中屏蔽运营商视频彩铃的方法。通过分析Dialer应用的logcat日志和源代码,定位到视频彩铃控制的关键变量isSupportVideoRingTone。研究发现该变量由UniCarrierConfigManager管理,通过修改vendor/sprd/platform/packages/apps/SprdDialer中InCallPresenter.java的代码,将isSupportVideoRingTone数组值强制设为false,即可实现屏蔽视频彩铃广告的功能。该方法原创 2025-09-01 10:21:16 · 891 阅读 · 0 评论 -
Android大话省电管理之Doze
安卓Doze是Android 6.0引入的电池优化机制,通过限制后台活动节省电量。主要分为Light Doze和Deep Doze两种模式:Light模式在屏幕关闭后3分钟进入,限制网络和任务;Deep模式需设备静止30分钟,会暂停网络、闹钟、同步等。系统定期开放30秒维护窗口允许任务执行。不同版本特性不同,Android 6.0仅支持Deep模式,7.0后新增Light模式。开发者可通过ADB调试Doze状态,使用白名单机制让关键应用豁免限制。该机制会降低CPU频率和核心数,显著影响后台任务执行。原创 2025-09-01 10:19:01 · 1078 阅读 · 0 评论 -
Android Framework代码拦截陌生人来电
Android 7.0引入的BlockedNumberProvider为系统提供了统一管理骚扰电话和短信的解决方案。文章介绍了该内容提供程序的核心功能,包括号码的增删查改操作,并通过adb命令演示了具体使用方法。针对屏蔽陌生号码需求,提出了两种实现方案:一是修改BlockedNumberProvider中的isBlocked函数,增加对通讯录的检查逻辑;二是通过修改DialpadFragment来阻止拨打非联系人号码。此外还介绍了BlockChecker类的功能,它是系统底层用于管理黑名单和拦截通话的重要组原创 2025-08-27 10:57:53 · 913 阅读 · 0 评论 -
Android Framework微信保活后台收消息设置
本文介绍了Android系统下防止微信被后台杀死的保活方案。主要通过修改系统配置实现:1)将微信加入省电模式白名单(allow-in-power-save-except-idle);2)配置系统黑名单防止被终止;3)设置第三方持久化进程和服务。修改涉及platform.xml和arrays_ex.xml文件,添加微信包名"com.tencent.mm"。成功保活后,关键的微信推送服务(com.tencent.mm:push)将保持运行,确保能接收离线消息。该方案需要系统级权限修改,会带来原创 2025-08-26 11:23:47 · 1148 阅读 · 0 评论 -
Android12 Framework读写prop属性selinux报错解决
Android系统应用读取属性值时需SELinux权限,否则会报denied错误。解决方案为:1)在system_app.te中添加allow规则(不同平台策略不同);2)修改property.te中的neverallow规则,添加system_app例外;3)处理treble_sysprop_neverallow冲突。需注意修改多个相关文件,包括system/sepolicy下的property.te及对应版本的prebuilts文件。编译报错需根据具体提示调整策略,逐步解决neverallow冲突问题。原创 2025-08-23 01:00:00 · 695 阅读 · 0 评论 -
Android 按钮获取焦点时高亮边框并动态放大
Android中为ImageButton添加焦点高亮效果的方法:通过创建自定义Drawable实现黄色边框高亮显示,使用stateListAnimator控制焦点状态下的缩放效果。关键步骤包括:1) 在res/drawable下创建XML文件定义焦点状态下的黄色边框样式;2) 在布局中引用该背景并确保ImageButton可获取焦点。特殊场景下可叠加触摸反馈效果,通过layer-list实现焦点边框和点击水波纹的共存。此外,还可为点击状态添加深黄色背景等视觉效果,增强交互反馈。原创 2025-08-22 00:15:00 · 666 阅读 · 0 评论 -
Android Framework定制长按电源键关机的窗口
Android系统长按关机流程解析:通过config.xml配置长按电源键行为(0-5对应不同操作),默认显示全局操作菜单。系统通过PhoneWindowManager处理按键事件,最终调用GlobalActions显示关机对话框。实现分为SystemUI和Legacy两种方式,其中SystemUI通过GlobalActionsDialog加载布局文件global_actions_grid_v2.xml,并根据config_globalActionsList数组动态添加功能按钮(如关机、飞行模式等)。开发者原创 2025-08-13 15:50:11 · 935 阅读 · 0 评论 -
Android12 Framework电话功能UI定制
Android 12展锐平台通话界面分析,重点介绍了InCallActivity及其核心Fragment(VideoCallFragment、InCallFragment、DialpadFragment)的功能与交互逻辑。通过代码定位,发现通话录音按钮在VideoCallFragment.java中实现,根据录音状态动态更新按钮文本("通话录音"/"录音中")。InCallActivity通过InCallPresenter管理不同Fragment的显示状态,根据通话场原创 2025-08-12 18:27:25 · 1090 阅读 · 0 评论 -
Android Framework不弹窗直接关机
Android长按电源键直接关机实现方案 本文分析了Android系统长按电源键的处理逻辑,通过修改PhoneWindowManager.java中的powerLongPress()方法实现直接关机功能。关键修改是将长按行为直接设置为LONG_PRESS_POWER_SHUT_OFF_NO_CONFIRM常量,绕过系统默认的弹窗确认流程。该方法会触发触觉反馈后直接执行关机操作,无需用户二次确认。文章详细解析了原始代码中各case分支的处理逻辑,包括全局操作菜单显示、语音助手启动等不同行为,并提供了具体的代码原创 2025-08-08 10:16:40 · 834 阅读 · 0 评论 -
Android12 Framework Sim卡pin与puk码解锁
本文分析了Android 12系统中SIM卡PIN码输入界面的实现机制。当插入启用PIN码的SIM卡时,系统会弹出包含顶部提示文本和底部输入框的锁定窗口。顶部提示文本(如"请输入SIM 1 PIN")由KeyguardSimPinViewController控制,通过getPinPasswordErrorMessage方法动态生成提示信息,内容来自系统资源文件strings_ex.xml中定义的字符串模板。该界面分为KeyguardMessageArea(顶部提示)和KeyguardSi原创 2025-08-08 09:46:28 · 938 阅读 · 0 评论 -
Android Framework代码屏蔽未接来电振动及声音通知
本文介绍了屏蔽安卓设备未接来电通知的两种方法。第一种是通过广播方式清除通知,但普通应用缺乏必要权限且adb指令在Android11上报错。第二种是直接修改Framework代码,通过分析logcat定位到通知来源(com.android.dialer包),找到MissedCallNotifier.java中创建通知的代码位置。建议修改该处代码,将未接来电通知改为不发出。该方法在展锐平台的Android11和12上验证有效。原创 2025-08-05 15:20:52 · 1089 阅读 · 0 评论 -
Android12 Framework定制音量等级与音量曲线
本文介绍了在Android 12系统中定位和修改音频策略引擎配置文件audio_policy_engine_stream_volumes.xml的方法。通过md5校验可确定正确的源文件,该XML文件定义了不同音频流类型的音量控制参数,包含多个音量组(如voice_call、system)及其对应的设备类别(耳机、扬声器等)的音量曲线。文章详细解析了音量曲线的配置格式(百分比和dB值),对比了通话和系统音量的差异,并提供了定制音量等级和曲线的方法,包括修改indexMax值和调整曲线点参数。最后还附上了And原创 2025-07-09 11:13:02 · 883 阅读 · 0 评论 -
Android OTA升级更新SettingsProvider值修改默认输入法
OTA升级后默认输入法不会自动更新,需通过修改系统配置实现。Android系统通过Settings.Secure存储默认输入法配置,其中default_input_method和enabled_input_methods两个值决定当前输入法。正确的OTA升级修改方法包括:1) 在defaults.xml中更新输入法配置;2) 修改SettingsProvider.java中的SETTINGS_VERSION版本号;3) 在onUpgradeLocked函数中插入新的输入法配置。注意直接修改数据库版本号或Da原创 2025-07-09 10:53:18 · 1204 阅读 · 0 评论
分享