Android系统
文章平均质量分 87
峥嵘life
目前职业:android开发工程师
2016年江西农业大学计算机信息工程学院毕业
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android16 EDLA 认证测试安装和卸载应用的监听设置
Android EDLA认证测试中的应用安装卸载监听设置 本文介绍了在Android EDLA认证测试过程中,通过设置系统属性来临时规避自身修改与认证项冲突的方法。主要修改点包括: 在InstallPackageHelper.java中添加应用安装完成后的处理逻辑,调用工具类方法设置相关属性 在DeletePackageHelper.java中添加应用卸载完成后的处理逻辑 在ScanPackageUtils工具类中实现具体的属性设置逻辑,包括: 处理安装和卸载两种情况 设置CTS、CTSV、GTS等相关属性原创 2025-11-26 20:24:20 · 1943 阅读 · 0 评论 -
Android16 EDLA 签名文件替换总结
本文总结了Android EDLA认证过程中需要修改的系统签名文件和应用签名文件。主要内容包括: 介绍了生成签名文件的三个关键命令模板,可生成.pk8、.x509.pem、.pem和.avbpubkey四种签名文件 详细说明了系统签名文件的位置和需要修改的8个关键签名(bluetooth、media等) 提供了蓝牙签名生成的具体示例 指出签名文件需要在EDLA初版提测前完成修改,否则BTS认证会出现大量签名报错 文章重点在于指导如何正确生成和替换EDLA认证所需的签名文件,确保系统能通过BTS认证测试。原创 2025-11-26 20:05:46 · 1537 阅读 · 0 评论 -
Android16 打开热点和有线网后,关闭有线网出现ifconfig网络节点卡死解决
本文分析了Android16系统中同时开启热点和有线网络后,关闭有线网络导致网络节点卡死的问题。解决方法是在内核的stmmac_main.c文件中注释掉设置NETIF_F_HW_TC硬件流量控制特性的代码。该问题可能与资源占用冲突有关,关闭硬件TC功能可规避此异常。文章还解释了TC功能的作用及其禁用对系统的影响,建议不同方案和Android版本需具体验证该解决方案的有效性。原创 2025-11-19 22:22:03 · 1303 阅读 · 0 评论 -
Android16 有线网静态ip和代理设置,全网最详细详解
本文详细介绍了Android16中有线网络的静态IP和代理设置方法。主要内容包括: 设置类型说明: 静态IP设置:支持DHCP和Static两种获取方式 代理设置:支持None、Static(Manual)和AUTO三种类型 API详解: 旧API(setConfiguration):已废弃但可通过反射调用 新API(updateConfiguration):Android13新增,采用Builder模式构建参数 关键参数解析: 网络接口名称("eth0") EthernetNetwor原创 2025-11-19 22:19:51 · 2285 阅读 · 0 评论 -
Android16 EDLA HDMI OUT投屏默认通过设置
摘要 本文记录了Android16 EDLA认证中HDMI OUT投屏功能的适配问题。在整机测试时可通过交互界面确认投屏,但开发板测试需要默认支持HDMI输出。解决方案是通过修改SystemUI的ConnectingDisplayViewModel.kt文件,在检测到显示信号流时自动启用HDMI输出而无需用户确认。修改通过在pendingDisplay不为空时调用enable()方法实现,适用于TV和商显等需要默认开启HDMI输出的设备场景。原创 2025-11-08 23:38:49 · 1253 阅读 · 0 评论 -
Android EDLA项目导入mainline包后蓝牙签名报错分析解决
Android EDLA项目蓝牙崩溃问题分析与解决 在Android EDLA项目中移植GMS和mainline包后出现蓝牙打开崩溃问题,经分析发现是蓝牙应用签名不匹配导致。错误日志显示存在userdebug/test-keys签名冲突和SELinux权限报错(Zygote权限添加失败)。临时解决方案是关闭SELinux,但根本解决方法是重新生成蓝牙签名文件并替换系统源码中对应的签名信息文件后重新编译完整系统包。该问题对开发Android EDLA项目的工程师具有参考价值。原创 2025-10-31 20:24:52 · 1369 阅读 · 0 评论 -
Android EDLA 打开5G热点失败分析解决2
Android EDLA 5G热点开启失败解决方案 在Android EDLA项目中,开启5G热点时出现失败问题,错误日志显示"Can not start softAp with band 5G not supported"。经分析发现这是由于两个关键资源属性config_wifi5ghzSupport和config_wifiSoftap5ghzSupported未正确设置为true所致。 解决方案包括: 在vendor层创建资源覆盖应用,通过overlay机制覆盖谷歌Wifi应用的re原创 2025-10-31 20:20:52 · 2544 阅读 · 0 评论 -
Android14源码移植到Android16的应用报错分析说明
Android14源码移植到Android16的编译问题分析 问题概述 在将Android14的蓝牙应用源码移植到Android16时,出现了一系列编译错误,包括: 未使用final修饰符 未使用的方法或变量 注释格式不正确 广播发送权限问题 分析结论 问题根源在于Android16的bluetooth_framework_errorprone_rules属性启用了更严格的代码规范检查。与Android14相比,Android16的Java版本从JDK17升级到JDK21,并加强了代码规范验证。 解决方案原创 2025-10-18 20:50:34 · 1230 阅读 · 0 评论 -
Android16 wifi启动后自动连接的第一个wifi分析和修改
Android16 Wifi自动连接功能分析与实现 本文分析了Android系统开机后自动连接指定Wifi的可行性及实现方案。主要发现: 系统层面修改难度大:通过设置Wifi优先级或WifiNetworkSuggestion的方式无法实现自动连接指定Wifi,源码分析显示相关逻辑复杂且条件触发机制难以追踪。 应用层解决方案:提出基于系统签名应用的实现方案 监听开机、Wifi开关等广播事件 扫描并检查目标Wifi是否可用 主动连接符合条件的目标Wifi 实现要点 需要系统签名权限 通过属性保存默认Wifi配置原创 2025-09-29 17:35:36 · 1343 阅读 · 0 评论 -
Android16 废弃HIDL调用HAL层代码,开始使用AIDL调用底层逻辑
Android 16 废弃 HIDL 改用 AIDL 调用 HAL 层代码 摘要 Android 16 已完全移除 HIDL(HAL Interface Definition Language),改用 AIDL(Android Interface Definition Language)作为连接上层应用与底层 HAL 层的接口标准。HIDL 曾是 Android 系统调用 HAL 层代码的主要方式,但自 Android 13 起已被标记为废弃。新版本中,AIDL 不仅支持 Java 进程间通信,还能实现 J原创 2025-09-25 19:22:23 · 2016 阅读 · 0 评论 -
Android13 命令启用WLAN详细日志分析
本文分析了Android13中"启动WLAN详细日志记录功能"的实现机制。通过对比开发者模式开关操作前后的系统属性变化,发现传统通过settings put global wifi_verbose_logging_enabled 1命令无效。深入分析WifiServiceImpl源码后,确认该功能通过WifiSettingsConfigStore管理,实际配置存储在/data/misc/apexdata/com.android.wifi/WifiConfigStore.xml文件中。最终原创 2025-09-19 11:30:07 · 1784 阅读 · 0 评论 -
Android16 监听广播崩溃异常报错One of RECEIVER_EXPORTED or...分析解决
本文分析了Android 16系统广播监听崩溃问题,发现与Android 14不同在于系统应用也会报错。通过源码分析,发现Android 16在BroadcastController.java中新增了限制逻辑。解决方案包括: 修改系统源码,添加属性控制开关 默认设置flags为RECEIVER_EXPORTED避免异常 对比了RECEIVER_EXPORTED和RECEIVER_NOT_EXPORTED的区别 验证发现RECEIVER_NOT_EXPORTED会导致无法接收任何广播 建议对需要跨应用通信的广原创 2025-09-19 08:59:25 · 1806 阅读 · 0 评论 -
Android13 系统源码核心目录解析
Android系统源码核心目录解析 本文梳理了Android13系统源码的核心目录结构,重点围绕框架层和应用层展开分析。主要内容包括: 框架层核心(frameworks/) - 包含Android上层框架API和系统服务实现,重点解析了: frameworks/base/:基础API和组件(Activity/Service/Binder) services/:核心系统服务(AMS/WMS/PMS) native/:底层原生实现(Binder/多媒体) 系统应用(packages/) - 预装系统应用和内容提原创 2025-09-05 09:54:53 · 1955 阅读 · 0 评论 -
Android初学者系统开发学习路线参考
这篇文章为Android系统开发初学者提供了一个为期一个月的学习路线规划。第一阶段主要围绕UI开发展开:第一周学习开发环境搭建、四大组件和基础布局;第二周进阶学习RecyclerView、自定义View和动画;第三周掌握Fragment交互和数据存储;第四周重点学习网络请求和Kotlin基础。计划强调每日文档总结和阶段性实战,通过新闻资讯APP项目整合所学知识,帮助新人快速掌握Android开发核心技能。原创 2025-08-08 17:03:03 · 2428 阅读 · 0 评论 -
Android14 通过AMS 实例获取前台Activity 信息
摘要 本文介绍了在Android14系统中通过ActivityManagerService(AMS)获取Activity信息的方法,重点分析了系统签名应用才能获取后台应用信息的限制。文章对比了获取前台Activity(getRunningTasks)、最近任务(getRecentTasks)和存活进程(getRunningAppProcesses)三种方式,指出getRunningTasks仍可有效使用,而新版getAppTasks和UsageStatsManager方法存在局限性。同时解释了后台任务与缓存原创 2025-08-08 09:57:08 · 1869 阅读 · 0 评论 -
Android 蓝牙默认名称设置分析总结
Android蓝牙默认名称设置分析总结 本文分析了Android系统中蓝牙默认名称的设置方法,基于Android 13源码。研究发现蓝牙名称与ro.product.model属性相关,而非常见的def_bluetooth_name或Settings属性。文章提供了四种设置方法: 修改ro.product.model属性值(需在build.prop或.mk文件中配置) 使用Settings.Secure.bluetooth_name记录蓝牙名称(仅用于查询) 应用层通过BluetoothAdapter.set原创 2025-06-14 18:07:27 · 1754 阅读 · 0 评论 -
Android设置界面层级为最上层实现
本文介绍了在Android系统中强制设置特定应用界面为最顶层的方法,通过修改系统底层代码实现,但存在Home键和后台任务失效等后遗症。文章还分析了悬浮框的实现代码、窗口类型层级关系和使用注意事项,包括权限管理、窗口类型选择、进程存活机制等。同时提供了查看当前窗口状态的系统命令,帮助开发者理解悬浮框与系统层级的交互原理。需要注意的是,这种强制置顶方式仅适用于特殊系统应用场景,普通开发建议使用标准悬浮窗实现方案。原创 2025-05-27 19:16:23 · 1867 阅读 · 0 评论 -
Android usb网络共享详解
Android USB网络共享功能允许设备通过USB连接将移动网络或Wi-Fi网络共享给其他设备(如电脑)使用。该功能涉及底层网络协议、USB通信和系统服务等多个层面。使用前提包括设备支持ADB并打开USB开关,原生Settings中显示USB网络共享开关,以及代码中检测USB网络共享是否支持。若开关无法启用,可能是系统USB未开启或未连接ADB等原因。Settings中的相关代码控制USB网络共享的显示与启用,核心组件包括UsbManager、TetheringManager等。原创 2025-05-14 21:47:40 · 4579 阅读 · 0 评论 -
Android 蓝牙开发调试总结
如果开发蓝牙相关功能,必须先掌握基本api知识和相关广播的监听;蓝牙用的功能基本都是系统签名权限的系统应用,比如Settings;本简单介绍蓝牙开发基本知识,有兴趣的可以看看。蓝牙开关和使能开发主要用到:BluetoothService、BluetoothManagerService、BluetoothManager、BluetoothAdapter 这几个系统相关类。某个蓝牙的配对、连接、断开 使用的是 BluetoothDevice 对象。原创 2025-05-07 22:35:43 · 1644 阅读 · 0 评论 -
Android 有线网开发调试总结
如果开发有线网相关功能,必须先掌握基本api知识和相关广播的监听;Android13 之后有线网是有暴露开关控制api的,Android11 之前是需要自己添加开关控制接口的。本简单介绍有线网开发基本知识,有兴趣的可以看看。原创 2025-05-07 22:33:46 · 1461 阅读 · 0 评论 -
Android 热点开发调试总结
如果开发热点相关功能,必须先掌握基本api知识和相关广播的监听;热点用的功能基本都是系统签名权限的系统应用,比如Settings;有些方案中需要设置热点不同的信道值,这个是Settings没有的功能;本简单介绍热点开发基本知识,有兴趣的可以看看。原创 2025-04-28 21:32:48 · 1531 阅读 · 0 评论 -
Android wifi开发调试总结
如果开发wifi相关功能,必须先掌握基本api知识和相关广播的监听;wifi调用的功能基本都是系统签名权限的系统应用,比如Settings;本简单介绍wifi开发基本知识,有兴趣的可以看看。adbshell 的 ifconfig可以获取当前设备网络节点信息;这些信息使用Android代码也是可以获取的;Android 获取网络ip有多种方式,有时候某种方式获取失败的情况下;原创 2025-04-28 21:04:36 · 1844 阅读 · 0 评论 -
Android 下拉栏中的禁用摄像头和麦克风隐藏
Android下拉栏中有摄像头和麦克风禁用功能;但是点击禁用后会有些bug,比方多视窗异常,信源声音异常等问题;所以目前做法是直接隐藏掉禁用功能,算是规避手段了,出现问题就不问题删除,哈哈,当然如果有能力和时间去解决这个问题是更好的;市场上大部分手机上应该是解决了这些问题的,也可能是在某些场景进行了优化;我这里开发的是大屏设备,没有手机那么多顾虑和要求所以隐藏UI是目前最好的做法。如果你也有隐藏下拉栏UI或者简单修改下拉框UI的需要可以看看本文。原创 2025-04-19 19:50:51 · 1468 阅读 · 5 评论 -
Android14 系统左右声音通道设置代码
Android 系统左右声音通道设置在有些场景下会有用,信源或者多音箱的条件下可能需要设置,还有些需求比如:用户偏好设置、将声音定位到特定方向,提升沉浸感。比如耳机接入Android设备后,设置声音通道左平衡,只有左边的耳机出声;设置声音通道右平衡,只有右边的耳机出声;上面这样就可以简单验证系统左右声音通道是否有效。网上基本找不到系统级的设置左右声音通道的代码,即使使用AI工具也搜不到。网上设置左右声音通道都是针对某个播放媒体对象进行设置,并不是全局的。原创 2025-03-19 17:51:50 · 1199 阅读 · 0 评论 -
Android14 Log.isLoggable判断的分析
Android系统代码或者系统应用代码中经常有一些Dug打印,是可以在调试模式中查看的;比如:if(Log.isLoggable(TAG, Log.DEBUG)) {XXX}或者定义 boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);后面有些打印使用这个DEBUG属性来决定是否打印某些日志。之前我不太懂,也有看过源码,但是看到了native再后面就追不下去了,就没管了。后面各种搜索和研究后又有了新的发现。原创 2025-03-19 16:51:21 · 1244 阅读 · 0 评论 -
Android wifi的开关Settings值异常分析
有个项目需要通过开机后另外判断wifi的Settings属性值wifi_on进行wifi的一些处理。但是使用同一个系统软件包,烧录在两个板载有点差异的设备上,发现打开wifi后两个设备的wifi_on的值居然不一样;wifi开启状态一个显示为1;另外一个异常显示为2;代码值中只判断了值为1的处理,导致有些逻辑未执行。但是通过WifiManager获取wifi的开启状态,发现wifi又是开启的;有点奇怪,想分析看看。后面分析了一下系统的代码,有一些发现。下面简单分享介绍一下。原创 2025-03-14 19:14:52 · 1415 阅读 · 0 评论 -
Android adb shell dumpsys audio 信息查看分析详解
Android 如果要分析当前设备的声音通道相关日志,仅仅看AudioService的日志是看不到啥日志的,但是看整个audio关键字的日志又太多太乱了,所以可以看一下系统提供的一个调试指令dumpsys audio 返回的信息进行定位分析,里面主要包含了AudioService启动时间,当前设备的音频流指向,音频流的声音大小,音频外设的连接情况,音频播放记录,音频外设连接断开记录等等信息。不同的Android 系统使用 dumpsys audio 命令返回的日志信息可能会有差异,原创 2024-11-23 16:12:13 · 3007 阅读 · 0 评论 -
Android13、14特殊权限-应用安装权限适配
Android13、14 的源码发现一个问题系统签名应用声明了应用安装权限,但是安装应用的时候还是没有安装应用权限,需要在原生Settings中的特殊权限设置一次权限打开才有安装应用权限。本文只介绍解决方法,里面framework的代码是实际项目的修改中拿来的,不是我自己研究的,不做过多分析。原创 2024-10-24 19:33:56 · 5914 阅读 · 2 评论 -
Android13 授予特殊应用权限代码
Android 权限类别有啥,网上很多是说有普通权限和危险权限,其实是不准确的。Android 权限分为普通权限,动态权限,特殊权限,私有权限。几种权限的简单说明:权限的使用都要在AndroidManifest.xml中声明就行,即使是系统应用也是要声明后才能获取到。1、普通权限: 不用申请直接能获取到;比如:INTERNET 网络权限2、动态权限:普通应用需要动态申请,系统应用直接能获取到;比如:WRITE_EXTERNAL_STORAGE 读写权限。原创 2024-10-19 19:04:30 · 2633 阅读 · 0 评论 -
Android adb 命令查询service相关介绍
adb查询系统中的service用什么命令?很多人会说是service list | grep XXXService但是你会发现四大组件的service并不能这样查询到,四大组件的Service查询,需要用dumpsys activity services | grep XXXService两种Service查询有啥区别吗?需要什么命令可以杀死这个Service。本文讲解一些adb查询和控制Service相关的知识;原创 2024-10-19 11:43:23 · 2625 阅读 · 0 评论 -
Android14 手机蓝牙配对后阻塞问题解决
Android13、14 手机配对蓝牙后会造成阻塞问题。Google 问题。测试了Android13 Google 手机也是有这个问题。具体复现步骤和现象就是:一台Google手机蓝牙配对另外一台手机的蓝牙后,Google 手机重新扫描蓝牙设备就会无法扫描到其他设备,需要等待20多秒超时处理后才能重新看到扫描的蓝牙设备。原创 2024-09-21 19:27:45 · 2226 阅读 · 0 评论 -
Android14 蓝牙启动流程
基于Android14 分析了一下蓝牙的开启流程,本来以为比较简单的,但是发现具体处理会有点绕。主要是从应用上层到cpp层蓝牙的开启过程代码进行的一定的分析。BluetoothAdapter、BluetoothManagerService、AdapterService 是蓝牙开启最相关的上层代码。这个对蓝牙开启失败、或者蓝牙其他流程有问题有一定的分析研究价值,有助于确定是哪个流程出现了问题。这个介绍比较简单一点,没有到后面 AdapterService 的代码。原创 2024-09-21 19:26:04 · 3535 阅读 · 1 评论 -
Android14 待机关机蓝牙自动关闭分析解决
Android14 设备蓝牙开启的情况,待机关机后再开机出现有概率蓝牙关闭的问题。设备开机后手动打开蓝牙是可以正常打开的。通过分析发现是上层的蓝牙服务中有监听关机广播,有关闭蓝牙动作。但是为啥会出现有概率关闭呢,具体原因是因为有时候蓝牙关闭流程没走完或者有些蓝牙关闭流程未走到设置蓝牙关闭属性的情况。原创 2024-09-14 19:14:12 · 3859 阅读 · 0 评论 -
Android14 蓝牙 BluetoothService 启动和相关代码介绍
蓝牙开关和使能开发主要用到:BluetoothService、BluetoothManagerService、BluetoothManager、BluetoothAdapter 这几个系统相关类。某个蓝牙的配对、连接、断开 使用的是 BluetoothDevice 对象。蓝牙开关状态不记忆或者打开异常就可以看看BluetoothManagerService的日志,里面有打开关闭相关过程日志和时间点,这个对问题分析有一定的帮助。本文主要介绍一下 framework 相关的几个类,原创 2024-09-14 19:06:02 · 5056 阅读 · 5 评论 -
Android 源码中jni项目 加载so目录小结
如何实现把so放到Android设备目录system/lib64下面,系统应用apk就能自动获取里面的so?如果实现了这个功能,后续修改了jni具体功能实现,就不用修改这个apk的代码,只要替换这个so就可以完成不同的实现了。其实这个功能不难,只要是系统源码编译的应用就可以;具体如何编译可以看本文最后的介绍。本文主要介绍一下,系统源码应用编译后,load so的顺序:顺序就是优先apk目录下的 lib/arm64/,然后 system/lib64/,有的还会加载 vendor/lib64/原创 2024-09-06 20:19:29 · 1874 阅读 · 0 评论 -
Android 系统源码项目加载预编好的so库
Android 系统开发中会源代码有加载so库的情况,本文进行简单介绍。Android Studio 项目加载so库,已经有介绍过:Android Studio加载so和使用so还是比较方便的,环境OK的情况,几分钟就可以完成验证测试了。但是如果要在系统源代码Java里面加载和使用so就比较麻烦了,主要通过Android.mk或者Android.bp编译加载so,反正网上的代码写的mk/bp基本都是不行的。本来以为只是介绍一下编译使用的Android.mk或者Android.bp就可以了,原创 2024-09-06 20:14:18 · 2444 阅读 · 2 评论 -
Android14 以太网共享功能 相关代码简介
Android 的以太网共享功能是啥?其实就是 Android设备接入一个网线后,再接入电脑,电脑就可以分配到到一个ip;这里的Android 设备就相当于一个路由器。如果Android设备可以正常上网,那么电脑也是可以上网的;Android 的以太网共享功能简单的说就是把Android设备的网络通过网线的形式共享给其他设备。Android手机设备基本没有网口,可以通过usb Hab转接网口;一些调试用的Android 设备是保存有网口的,可以直接接入网线。原创 2024-08-25 19:04:08 · 4677 阅读 · 3 评论 -
Android 系统连接WIFI显示网络连接受限分析处理
Android 系统连接WIFI提示网络受限处理这个是比较常见的问题了,这里简单记录一下。Android原生系统连接国内wifi网络会提示不可用,之后显示网络受限,但是实际可以上网;连接国外VPN网络是没有这个问题的。这个问题的原因就是系统连接上wifi后校验网络的时候,使用的是一个国外的url地址,但是国内外访问这个地址是无法返回数据的,所以系统才会判断该wifi无法连接网络。要解决这个问题,有两种方法:一个是替换了校验网络的url地址,另外一个是去除这个校验过程。原创 2024-08-25 19:02:33 · 8944 阅读 · 0 评论 -
Android14 蓝牙设备类型修改
Android 蓝牙设备类型有啥用?就是显示蓝牙类型作用。Android设备打开蓝牙后,其他手机可以搜到该蓝牙设备,一般显示为电话或者平板。但是很多源码编译出来的系统默认是显示耳机类型,那么如何修改呢?如果是Android11 或者更旧的版本可以参考:XXX.h //不同的方案具体目录不同,一般在device或者system#define BTA_DM_COD {0x5A, 0x02, 0x0C} // 手机端搜索到的蓝牙显示手机图标。原创 2024-08-18 18:40:12 · 3526 阅读 · 0 评论 -
Android14 Settings属性断电上电不记忆问题分析解决
Android 系统如果修改了Settings属性后等几秒再断电上电会有属性未保存的情况。比如,开关wifi和时间同步等开关,修改开关状态后,进行断电上电关开机 会发现有状态不保存的问题。wifi开关或者同步时间开关这些数据都是Settings.Global属性保存在data目录下的文件数据。一般手机和平板断电不换马上关机,是有大屏设备或者机顶盒等设备会出现这个问题。之前Android9不记得是否会有这个问题了,但是Android13 和 Android14 是必现的。原创 2024-08-18 18:37:41 · 2258 阅读 · 0 评论
分享