- 博客(460)
- 资源 (22)
- 收藏
- 关注
原创 Android Studio类ChatGpt的免费AI编程助手
ChatGpt大火,带动了AI工具的发展,介绍两款免费的AI编程助手,一款用于输入关键字自动输出代码,一款则是自动补全提示.可支持大部分代码编辑器,这里主要介绍Android Studio上安装使用.。
2023-06-07 21:13:47
7159
3
原创 MTK Android DuraSpeed优化机制导致app应用收不到广播分析解决
摘要:本文分析了Android 8系统中动态注册广播接收器失效的问题。当test应用内置到系统时能正常接收广播,但通过Android Studio运行时却无法接收。日志显示系统拦截了广播分发,关键日志为"suppress to start process of staticReceiver for package:com.test"。通过修改ActivityManagerDebugConfig.java中的DEBUG_BROADCAST标志为true,获取了更详细的广播处理日志,发现系统
2026-01-13 15:26:53
638
原创 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
1158
原创 Android Framework不弹窗默认授予所有权限
本文介绍了在Android系统中自动授予权限的修改方法。通过分析PermissionManagerService.java源码,重点修改了restorePermissionState函数中的权限授予逻辑,将运行时权限(Runtime Permissions)的GRANT_RUNTIME改为GRANT_INSTALL,实现安装时自动授予权限而不需要用户交互。对于普通权限、运行时权限和签名权限,统一设置为GRANT_INSTALL模式,从而避免弹窗请求权限。这种修改适用于Android 11系统,涉及frame
2026-01-06 10:17:35
726
原创 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
1094
原创 Android Framework不弹窗设置默认sim卡
本文分析了Android系统中处理多SIM卡选择弹窗的机制,并提出了修改方案。原系统通过SimSelectNotification.java类中的startSimSelectDialogIfNeeded方法在检测到多张SIM卡时会弹出选择窗口。为实现默认选择特定SIM卡的需求,建议修改该方法的实现逻辑:屏蔽数据卡选择弹窗,直接设置SIM卡2为默认数据卡。具体修改方案包括注释掉弹窗启动代码,替换为直接设置默认SIM卡的逻辑,通过SubscriptionManager获取激活的SIM卡信息并进行默认配置。这种修
2025-12-23 11:44:10
859
原创 精简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
1039
原创 MTK Android11 APP调用OTA升级
本文分析了MTK平台Android系统中RecoverySystem.installPackage() API的工作原理及调用流程。该API是触发OTA升级的关键接口,系统应用通过调用此接口传递OTA包路径,引导设备进入Recovery模式进行升级。文章详细解析了原生SDK中该函数的实现逻辑,包括关键路径变量设置、数据分区处理流程以及安全更新判断机制。同时提供了应用层调用示例代码及所需权限配置,并指出在实际应用中可能遇到的SELinux权限问题,特别是不同存储路径下会产生的差异化错误。最后展示了将升级包放在
2025-12-12 10:50:40
898
原创 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
1029
原创 Android8 Framework实现Ntp服务器多域名轮询同步时间
本文介绍了在Android AOSP中修改NTP时间同步服务的实现方法。通过增强SntpClient类使其支持多服务器轮询,修改config.xml添加备用NTP服务器配置,并调整NtpTrustedTime类以支持主备服务器切换机制。关键改动包括:为SntpClient新增支持服务器数组的requestTime方法,在配置文件中定义主备NTP服务器地址,以及在NtpTrustedTime中实现服务器轮询逻辑。这些修改可提高时间同步的可靠性和容错能力,特别适用于网络环境不稳定的场景。
2025-12-04 09:51:03
801
原创 Android单独编译Framework、Services、SystemUI等模块
本文介绍了Android系统开发中单独编译特定模块的方法,包括Framework、Services、SystemUI和电话应用等核心组件。详细说明了不同Android版本的编译指令差异(如framework-minus-apex命令),并提供了模块替换到设备的完整流程(adb命令操作)。文章还包含实用技巧,如处理模块依赖关系、更新API等注意事项,并给出了各模块编译后的文件路径。最后推荐了作者关于Android Framework学习的系列文章,涵盖系统框架、启动过程、Binder原理等核心知识。这些方法能
2025-11-26 14:06:50
1169
原创 Android13 Framework修改壁纸与网格样式
本文介绍了Android 13系统中修改壁纸和网格样式的配置方法。壁纸部分包括可选壁纸的配置(通过WallpaperPicker2模块的xml文件)和默认壁纸的替换路径。网格样式修改则通过Launcher3模块的device_profiles.xml文件实现,其中详细说明了4x4和4x5等不同网格布局的配置参数。文章提供了具体的文件路径和示例代码,指导开发者如何自定义Android系统的壁纸和桌面布局样式。
2025-11-26 09:44:16
259
原创 Android Framework在原生Settings设置中添加界面
Android设置中Preference是构建交互界面的核心组件,用于创建开关、列表选择、文本输入等设置项。常用子类包括SwitchPreferenceCompat、ListPreference和EditTextPreference等。实现步骤包括创建PreferenceFragmentCompat、定义XML布局以及在Activity中加载片段。 实战部分演示了在Android 13设备"关于手机"页面添加"认证信息"选项的方法:先在AndroidManifest.
2025-11-25 12:27:21
774
原创 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
765
原创 Android监听运行应用的任务变化包含Activity及Service
本文介绍了两种监听安卓应用运行状态变化的方案:使用IActivityManager和IActivityTaskManager。第一种方案通过注册IProcessObserver回调来监听进程活动变化,但获取包名较复杂。第二种方案从Android 10开始引入,使用registerTaskStackListener回调,能更清晰地获取任务栈变化信息。两种方案都需要引入framework.jar并申请相应权限(SET_ACTIVITY_WATCHER或MANAGE_ACTIVITY_TASKS)。文章通过序列图
2025-11-11 14:32:20
933
原创 Linux服务器编译android报no space left on device导致失败的定位解决
摘要:本文记录了在多个Android项目编译过程中遇到的"no space left on device"错误问题。通过排查内存、/tmp分区和磁盘使用情况,发现根分区已满。提供了临时清理方案和长期解决方案,包括迁移/tmp目录、调整swap分区位置等操作步骤,并给出防止再次满盘的建议。最终释放了8GB空间,解决了编译失败问题。
2025-10-23 11:52:24
829
原创 Android Framework SD卡格式化流程及代码实现
摘要 本文分析了Android系统中格式化SD卡的操作流程代码。主要涉及storage_dialog_unmountable弹窗提示,该字符串定义在Settings/res/values-zh-rCN/strings.xml中,用于提示用户"此存储设备已损坏,需要先进行设置"。代码流程包含存储设备状态检测、格式化确认界面以及格式化进度显示等环节。系统通过StorageManager服务完成,代码反射调用StorageWizardFormatConfirm.showPublic进行格式化。
2025-10-23 09:45:47
652
原创 Android监听第三方播放获取音乐信息及包名
摘要: Android通过NotificationListenerService可监听应用通知,包括媒体播放状态。本文介绍了利用该服务获取音乐播放信息的方法:1) 在清单文件中声明权限和服务;2) 实现NotificationListenerService,通过MediaController回调获取播放进度、曲目信息等数据。当检测到媒体通知时,会注册回调监听播放状态和元数据变化。该方案适用于大多数媒体应用,但某些后台播放场景可能需要改用MediaSessionManager轮询。代码演示了如何建立监听、处理
2025-10-13 15:57:18
1099
2
原创 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
596
原创 Android电池库仑计计算、容量校准、电池曲线详解
Android设备充电过程主要分为三个阶段:预充电(低电流激活)、恒流充电(大电流快速充)和恒压充电(电流递减至满)。充电器类型包括标准SDP、专用DCP和混合CDP,系统需根据类型调整充电策略。库仑计用于精确测量电量,配合OCV电压表计算电池容量。温控采用Jeita策略,根据温度调节充放电参数,确保安全。电池容量计算通过安时积分法和开路电压法实现,并具备自学习功能以校准老化误差。充电管理还包括预充电保护、电量显示校准等机制,通过硬件检测和软件算法共同保障充电安全与效率。
2025-10-10 09:08:55
1272
原创 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
1099
原创 Android Framework默认给应用添加dangerous级别权限
摘要:本文分析了Android系统中系统应用获取权限的机制。系统应用安装在/system/app目录下时,需满足特定条件才能获得不同级别权限:signature权限需平台密钥签名;signatureOrSystem权限需同时满足特权目录和平台签名;normal权限自动授予。dangerous权限涉及用户隐私,需通过修改DefaultPermissionGrantPolicy.java源码手动授予。文章还指出Android 10引入的特许权限白名单机制,并提供了在源码中实现权限授予的具体方法,包括修改
2025-09-29 14:28:59
1086
原创 macOS苹果电脑运行向日葵远程控制软件闪退
摘要:macOS系统下向日葵远程控制软件升级后出现闪退问题,表现为启动界面短暂显示后自动退出。经排查,主要原因为登录项设置中未允许向日葵后台运行。解决方法:进入系统设置→通用→登录项,开启SunloginClient的后台运行权限,完全退出后重启软件即可恢复正常。文章还提供了向日葵字体过小和Ctrl键映射问题的临时解决方案,但后者尚未完全修复。作者通过实践验证了登录项设置对软件稳定运行的重要性。
2025-09-10 09:21:03
1826
原创 Docker安装Ubuntu搭建Android SDK编译环境
本文介绍了在Docker中安装和使用Ubuntu 18.04镜像的详细步骤,包括镜像安装、容器运行、SSH服务配置、中文乱码解决、命令补全安装等。文章还提供了Android编译环境的配置方法,包括JDK版本选择、常见编译错误的解决方案(如setup-jack-server失败、权限问题等)。最后说明了如何配置docker命令免密执行。内容涵盖从基础镜像安装到复杂编译环境搭建的全过程,适合需要在Docker容器中进行Android开发的用户参考。
2025-09-06 12:26:25
1070
1
原创 Android Framework打电话禁止播放运营商视频彩铃
本文介绍了在展锐平台安卓13系统中屏蔽运营商视频彩铃的方法。通过分析Dialer应用的logcat日志和源代码,定位到视频彩铃控制的关键变量isSupportVideoRingTone。研究发现该变量由UniCarrierConfigManager管理,通过修改vendor/sprd/platform/packages/apps/SprdDialer中InCallPresenter.java的代码,将isSupportVideoRingTone数组值强制设为false,即可实现屏蔽视频彩铃广告的功能。该方法
2025-09-01 10:21:16
903
原创 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
1102
原创 Android Framework代码拦截陌生人来电
Android 7.0引入的BlockedNumberProvider为系统提供了统一管理骚扰电话和短信的解决方案。文章介绍了该内容提供程序的核心功能,包括号码的增删查改操作,并通过adb命令演示了具体使用方法。针对屏蔽陌生号码需求,提出了两种实现方案:一是修改BlockedNumberProvider中的isBlocked函数,增加对通讯录的检查逻辑;二是通过修改DialpadFragment来阻止拨打非联系人号码。此外还介绍了BlockChecker类的功能,它是系统底层用于管理黑名单和拦截通话的重要组
2025-08-27 10:57:53
940
原创 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
1166
原创 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
714
原创 Android 按钮获取焦点时高亮边框并动态放大
Android中为ImageButton添加焦点高亮效果的方法:通过创建自定义Drawable实现黄色边框高亮显示,使用stateListAnimator控制焦点状态下的缩放效果。关键步骤包括:1) 在res/drawable下创建XML文件定义焦点状态下的黄色边框样式;2) 在布局中引用该背景并确保ImageButton可获取焦点。特殊场景下可叠加触摸反馈效果,通过layer-list实现焦点边框和点击水波纹的共存。此外,还可为点击状态添加深黄色背景等视觉效果,增强交互反馈。
2025-08-22 00:15:00
679
原创 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
961
原创 Android12 Framework电话功能UI定制
Android 12展锐平台通话界面分析,重点介绍了InCallActivity及其核心Fragment(VideoCallFragment、InCallFragment、DialpadFragment)的功能与交互逻辑。通过代码定位,发现通话录音按钮在VideoCallFragment.java中实现,根据录音状态动态更新按钮文本("通话录音"/"录音中")。InCallActivity通过InCallPresenter管理不同Fragment的显示状态,根据通话场
2025-08-12 18:27:25
1107
原创 Android Framework不弹窗直接关机
Android长按电源键直接关机实现方案 本文分析了Android系统长按电源键的处理逻辑,通过修改PhoneWindowManager.java中的powerLongPress()方法实现直接关机功能。关键修改是将长按行为直接设置为LONG_PRESS_POWER_SHUT_OFF_NO_CONFIRM常量,绕过系统默认的弹窗确认流程。该方法会触发触觉反馈后直接执行关机操作,无需用户二次确认。文章详细解析了原始代码中各case分支的处理逻辑,包括全局操作菜单显示、语音助手启动等不同行为,并提供了具体的代码
2025-08-08 10:16:40
856
原创 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
953
原创 Android Framework代码屏蔽未接来电振动及声音通知
本文介绍了屏蔽安卓设备未接来电通知的两种方法。第一种是通过广播方式清除通知,但普通应用缺乏必要权限且adb指令在Android11上报错。第二种是直接修改Framework代码,通过分析logcat定位到通知来源(com.android.dialer包),找到MissedCallNotifier.java中创建通知的代码位置。建议修改该处代码,将未接来电通知改为不发出。该方法在展锐平台的Android11和12上验证有效。
2025-08-05 15:20:52
1108
原创 Android12 Framework定制音量等级与音量曲线
本文介绍了在Android 12系统中定位和修改音频策略引擎配置文件audio_policy_engine_stream_volumes.xml的方法。通过md5校验可确定正确的源文件,该XML文件定义了不同音频流类型的音量控制参数,包含多个音量组(如voice_call、system)及其对应的设备类别(耳机、扬声器等)的音量曲线。文章详细解析了音量曲线的配置格式(百分比和dB值),对比了通话和系统音量的差异,并提供了定制音量等级和曲线的方法,包括修改indexMax值和调整曲线点参数。最后还附上了And
2025-07-09 11:13:02
900
原创 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
1219
原创 Android Framework设置时间为24小时制
修改Android系统默认时间格式为24小时制的操作指南:在系统配置文件中查找def_time_12_24字段(通常在frameworks/base/packages/SettingsProvider/res/values/defaults.xml),将其值从"12"改为"24"。若未找到该字段,需在芯片厂商指定的目录(如MTK平台为vendor/mediatek/...)添加相应配置,并在DatabaseHelper.java中加载设置。修改后系统将默认使用24小时
2025-06-27 16:44:12
1444
原创 Android Framework手势导航左右滑有效区域的判定
摘要:本文分析了Android系统中边缘返回手势的触摸区域判定逻辑,重点解读了EdgeBackGestureHandler.java文件中isWithinTouchRegion方法的实现。该方法通过检查触摸坐标位置,判断是否位于有效的边缘返回触发区域(包括左右边缘宽度、底部区域过滤、排除区域处理等条件)。文章还提供了不同Android版本中该文件的存放位置,并展示了如何修改代码限定只保留右滑功能。最后附带了相关技术文章的参考链接。该分析有助于理解Android手势导航的系统级实现机制。
2025-06-24 09:56:41
834
原创 Android编译curl并内置到设备固件
摘要:本文介绍了curl工具的基本功能及在Android平台上的编译与集成方法。curl作为支持多种协议的强大命令行工具,可用于数据传输、接口测试等场景。文章详细说明了在展锐平台单独编译curl的步骤(环境设置、编译、adb推送),以及将curl集成到固件中的方法(修改mk文件)。同时提供了常用curl命令参数示例,如显示响应头(-i)、POST请求(-d)、保存文件(-o)等。编译完成后生成的可执行文件curl可通过adb指令在设备上运行,为Android开发调试提供便利。
2025-06-11 11:46:03
1120
1
Android内存测试memtester可执行应用
2024-10-08
windows下curl+openssl+zlib 32位与64位dll与lib库及头文件
2024-06-13
硬件设备中麦及喇叭声学自测音频
2023-06-28
安卓手机功耗分析工具battery-historian离线资源
2021-05-25
vim用户手册(完全版)
2009-03-30
binutils-2.14.tar.gz完整版
2009-05-13
opencv的.cache文件
2018-02-02
gcc-3.3.2.tar.gz第一部分
2009-05-13
gcc-3.3.2.tar.gz第二部分
2009-05-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅