Android平台
文章平均质量分 90
帅得不敢出门
省略1万字
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android Studio同一个工程根据不同芯片平台加载不同的framework.jar及使用不同的代码
本文介绍了在Android Studio项目中根据不同芯片平台引入不同framework.jar的实现方法。通过配置productFlavors定义不同平台(如platformA和platformB),在dependencies中使用flavor-specific依赖配置(如platformACompileOnly)引入对应的jar文件。同时修改build.gradle脚本,通过applicationVariants动态设置-Xbootclasspath参数。对于平台特定的Java代码调用问题,建议采用多目原创 2026-03-30 11:06:36 · 527 阅读 · 0 评论 -
Android Framework中调用由java编译成的jar接口
本文介绍了两种将Java代码编译成JAR文件的方法:手动编译和AOSP编译。手动编译方法包括创建项目目录、编写Java代码、引入framework.jar依赖文件,并通过javac和jar命令完成编译打包。AOSP编译方法则推荐在Android源码环境中集成JAR文件,通过修改Android.mk配置文件和反射调用来实现功能集成。文章提供了详细的目录结构说明和代码示例,重点介绍了EdgeGestureHelper类如何通过反射机制调用JAR中的方法,包括初始化、系统就绪、滑动开始/取消/完成等操作的实现。A原创 2026-03-30 11:05:46 · 447 阅读 · 0 评论 -
Android Framework MTP模式限定访问目录不暴露sdcard所有内容
本文摘要: 针对安卓AOSP系统修改MTP功能,实现仅允许电脑访问/sdcard/路径下的指定文件夹(如MyShare)。通过分析MTP工作机制,重点修改了MtpStorage.cpp和MtpServer.cpp两个核心文件: 在MtpStorage构造函数中强制创建MyShare目录,并处理路径存在性检查、类型校验及异常情况; 在MtpServer层通过doGetObjectHandles方法实现文件夹访问过滤逻辑。该方案在MTK Android11实测有效,通过底层存储路径控制与协议层拦截,实现了MTP原创 2026-03-16 10:30:14 · 464 阅读 · 0 评论 -
Android8 Didn‘t find class “com.android.settings.SettingsApplication“ on path: DexPathList
摘要 在RK Android 8.1系统中内置超过3个自定义系统应用时,会出现Settings应用崩溃问题,报错"Didn't find class com.android.settings.SettingsApplication"。错误日志显示系统无法从Settings.apk中找到SettingsApplication类,同时提示"No original dex files found"。该问题仅在预装超过3个自定义系统应用时出现,预装3个或以下则正常。可能的解决原创 2026-03-10 18:12:46 · 419 阅读 · 0 评论 -
Android Framework新设备超详细基础功能定制
本文摘要介绍了Android系统开发中的几项关键配置修改方法:1) 分区大小调整(展锐和MTK平台分别通过修改.mk和.xml文件实现);2) 时区设置(通过buildinfo.sh或.mk文件配置);3) 语言设置(修改full_base.mk和buildinfo.sh文件,调整PRODUCT_LOCALES顺序);4) 屏幕密度(LCD_density参数修改);5) 开机动画与Logo(MTK平台通过device.mk文件配置)。文中提供了各配置项的具体修改示例和路径指引。原创 2026-03-04 11:17:39 · 615 阅读 · 0 评论 -
MTK Android11 Sim卡pin码界面源码分析
本文分析了MTK Android11设备上SIM卡PIN码锁定窗口的触发流程。当启用PIN码锁定的SIM卡插入设备时,系统会通过KeyguardUpdateMonitor检测SIM卡状态变化,触发KeyguardViewMediator显示锁屏界面。KeyguardSecurityModel判断需要SIM PIN验证后,KeyguardSimPinPukMeView负责显示PIN码输入界面,并提示用户输入相应SIM卡的PIN码。整个过程通过logcat日志可追踪到系统UI组件间的交互,包括SIM卡状态更新、原创 2026-03-04 11:07:07 · 419 阅读 · 0 评论 -
Android Framework usb默认开启MTP模式电脑可访问
本文介绍了如何修改Android AOSP源码,使设备通过USB连接电脑时默认进入MTP模式而非仅充电模式。主要修改方法包括:1) 确保系统已启用MTP功能;2) 修改frameworks/base/services/usb/java/com/android/server/usb/UsbDeviceManager.java文件中的handleMessage和finishBoot函数,将默认功能从FUNCTION_NONE改为FUNCTION_MTP;3) 或通过设置系统属性persist.sys.usb.c原创 2026-03-02 10:30:51 · 912 阅读 · 0 评论 -
MTK Android11修改音量曲线
摘要:本文详细介绍了安卓设备修改音量等级曲线的方法,重点针对MTK和原生Android平台的不同修改方式。对于原生Android设备,可通过修改audio_policy_volumes.xml或default_volume_tables.xml文件实现;而MTK平台则需修改私有audio_param数据库中的PlaybackVolDigi_AudioParam.xml文件。文章提供了具体操作步骤,包括文件定位、修改方法及生效验证,并解释了MTK平台音量控制的特殊机制。适用于Android 8-12不同版本的原创 2026-03-02 10:29:36 · 992 阅读 · 0 评论 -
Android Framework查看system应用使用的哪个签名
本文介绍了Android APK签名方案的版本差异及检查方法。主要内容包括:1) 传统v1签名使用CERT.RSA文件,而v2/v3/v4签名将信息嵌入APK结构中;2) 通过apksigner工具或解压APK检查签名方案;3) 从系统APK提取证书文件并使用keytool查看详细信息;4) 在AOSP源码中定位签名密钥文件;5) 高版本APK使用apksigner或Python工具分析签名。文章还提供了相关命令示例和签名验证方法,帮助开发者解决签名不一致导致的安装问题。原创 2026-02-10 14:49:48 · 741 阅读 · 0 评论 -
Android Framework仅允许预置指定的ADB key密钥连接
本文介绍了在Android系统中限制ADB连接的方法,目标是仅允许预置公钥的主机连接。主要内容包括:1) 生成新的ADB密钥;2) 修改adbd源码禁用动态密钥添加,但实测无效;3) 在授权弹窗中检查adb key白名单,成功实现非白名单密钥拒绝连接;4) 尝试通过开机拷贝adbkey实现自动授权,但因权限问题失败;5) 最终发现密钥验证实际在frameworks/native/libs/adbd_auth中处理。修改方案重点是通过弹窗拦截非授权密钥,而非修改认证流程。原创 2026-02-10 14:48:45 · 1162 阅读 · 0 评论 -
Android Framework修改Settings省电模式默认值
安卓系统在充电时会自动关闭省电模式,这是基于电源管理的默认设计。当检测到充电状态时,系统会解除省电限制以提供更好的性能体验。该功能通过监测充电信号触发,相关配置存储在Settings.Global的LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED参数中。不同厂商可自定义设置,如小米支持"充电后自动关闭"选项。代码层面,该功能由PowerManagerService管理,默认值为1表示启用此特性。这种设计平衡了充电时的性能需求和日常续航优化。原创 2026-02-09 10:20:22 · 974 阅读 · 0 评论 -
Android定位RK编译的system.img比MTK大350M的原因
本文分析了RK与MTK平台Android 8.1系统镜像的存储差异问题。通过挂载和对比system.img文件,发现RK系统比MTK多占用约300MB空间。主要差异集中在三个目录:priv-app(多118MB)、framework(多67MB)和lib64(多166MB)。进一步分析表明,RK系统同时包含了32位和64位支持文件,而MTK仅保留32位。为解决该问题,提出了两个优化方向:移除64位支持文件或裁剪系统应用。文章提供了详细的对比方法和数据支撑,为Android系统存储优化提供了可行方案。原创 2026-02-03 10:06:32 · 866 阅读 · 0 评论 -
RK Android8系统应用裁剪
在 RK Android 8.1 编译过程中,生成系统镜像时出现空间不足错误,原因是 system 目录大小(1651 MB)超出了镜像的 1536 MB 限制。解决方案是通过裁剪非必要的系统应用来减小 system 分区体积。文章详细列举了 system/app 和 system/priv-app 下可删除的应用程序,例如屏保(BasicDreams)、Android彩蛋(EasterEgg)、计算器(ExactCalculator)、打印服务(PrintSpooler)原创 2026-02-03 10:01:29 · 813 阅读 · 0 评论 -
Android Framework在mk中新增类似PRODUCT_MODEL的变量并传递给buildinfo.sh及prop属性中
本文介绍了在Android设备mk文件中定义新变量并传递到系统build.prop的方法。首先分析了prop属性的生成流程,指出buildinfo.sh脚本会读取PRODUCT_MODEL等变量生成ro.product.model属性。要新增自定义属性(如TEST_MODEL),需要在产品配置文件中定义变量,并在buildinfo.sh中添加echo语句输出。但直接添加无效,因为自定义变量未被加入_product_var_list白名单,且需要通过product.mk和product_config.mk进行原创 2026-01-26 16:07:39 · 792 阅读 · 0 评论 -
Android代码实现录音时显示振幅柱状动态图
摘要:本文介绍了在Android中基于AudioRecord实现音频波动动画的方法。通过录音回调获取音频数据,计算振幅值并驱动自定义View绘制柱状波动图。关键步骤包括:1)从音频数据计算RMS值;2)通过主线程更新UI;3)创建MultiBarAudioWaveView自定义视图,实现平滑动画效果;4)根据音量动态调整柱状高度和颜色(从绿到红渐变)。提供了完整的实现代码,包括录音回调处理、振幅计算和视图绘制逻辑,以及XML布局集成示例。原创 2026-01-26 11:13:15 · 642 阅读 · 0 评论 -
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 · 771 阅读 · 0 评论 -
Android各芯片平台日志YLog、MtkLogger打开及获取
展锐(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 · 1641 阅读 · 0 评论 -
Android Framework不弹窗默认授予所有权限
本文介绍了在Android系统中自动授予权限的修改方法。通过分析PermissionManagerService.java源码,重点修改了restorePermissionState函数中的权限授予逻辑,将运行时权限(Runtime Permissions)的GRANT_RUNTIME改为GRANT_INSTALL,实现安装时自动授予权限而不需要用户交互。对于普通权限、运行时权限和签名权限,统一设置为GRANT_INSTALL模式,从而避免弹窗请求权限。这种修改适用于Android 11系统,涉及frame原创 2026-01-06 10:17:35 · 1013 阅读 · 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 · 1247 阅读 · 0 评论 -
Android Framework不弹窗设置默认sim卡
本文分析了Android系统中处理多SIM卡选择弹窗的机制,并提出了修改方案。原系统通过SimSelectNotification.java类中的startSimSelectDialogIfNeeded方法在检测到多张SIM卡时会弹出选择窗口。为实现默认选择特定SIM卡的需求,建议修改该方法的实现逻辑:屏蔽数据卡选择弹窗,直接设置SIM卡2为默认数据卡。具体修改方案包括注释掉弹窗启动代码,替换为直接设置默认SIM卡的逻辑,通过SubscriptionManager获取激活的SIM卡信息并进行默认配置。这种修原创 2025-12-23 11:44:10 · 1022 阅读 · 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 · 1072 阅读 · 0 评论 -
MTK Android11 APP调用OTA升级
本文分析了MTK平台Android系统中RecoverySystem.installPackage() API的工作原理及调用流程。该API是触发OTA升级的关键接口,系统应用通过调用此接口传递OTA包路径,引导设备进入Recovery模式进行升级。文章详细解析了原生SDK中该函数的实现逻辑,包括关键路径变量设置、数据分区处理流程以及安全更新判断机制。同时提供了应用层调用示例代码及所需权限配置,并指出在实际应用中可能遇到的SELinux权限问题,特别是不同存储路径下会产生的差异化错误。最后展示了将升级包放在原创 2025-12-12 10:50:40 · 991 阅读 · 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 · 1122 阅读 · 0 评论 -
Android8 Framework实现Ntp服务器多域名轮询同步时间
本文介绍了在Android AOSP中修改NTP时间同步服务的实现方法。通过增强SntpClient类使其支持多服务器轮询,修改config.xml添加备用NTP服务器配置,并调整NtpTrustedTime类以支持主备服务器切换机制。关键改动包括:为SntpClient新增支持服务器数组的requestTime方法,在配置文件中定义主备NTP服务器地址,以及在NtpTrustedTime中实现服务器轮询逻辑。这些修改可提高时间同步的可靠性和容错能力,特别适用于网络环境不稳定的场景。原创 2025-12-04 09:51:03 · 846 阅读 · 0 评论 -
mtk安卓生成keystore
mtk安卓8。制作keystore的脚本原创 2023-07-25 18:34:07 · 494 阅读 · 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 · 1478 阅读 · 0 评论 -
Android单独编译Framework、Services、SystemUI等模块
本文介绍了Android系统开发中单独编译特定模块的方法,包括Framework、Services、SystemUI和电话应用等核心组件。详细说明了不同Android版本的编译指令差异(如framework-minus-apex命令),并提供了模块替换到设备的完整流程(adb命令操作)。文章还包含实用技巧,如处理模块依赖关系、更新API等注意事项,并给出了各模块编译后的文件路径。最后推荐了作者关于Android Framework学习的系列文章,涵盖系统框架、启动过程、Binder原理等核心知识。这些方法能原创 2025-11-26 14:06:50 · 1365 阅读 · 0 评论 -
Android13 Framework修改壁纸与网格样式
本文介绍了Android 13系统中修改壁纸和网格样式的配置方法。壁纸部分包括可选壁纸的配置(通过WallpaperPicker2模块的xml文件)和默认壁纸的替换路径。网格样式修改则通过Launcher3模块的device_profiles.xml文件实现,其中详细说明了4x4和4x5等不同网格布局的配置参数。文章提供了具体的文件路径和示例代码,指导开发者如何自定义Android系统的壁纸和桌面布局样式。原创 2025-11-26 09:44:16 · 308 阅读 · 0 评论 -
Android Framework在原生Settings设置中添加界面
Android设置中Preference是构建交互界面的核心组件,用于创建开关、列表选择、文本输入等设置项。常用子类包括SwitchPreferenceCompat、ListPreference和EditTextPreference等。实现步骤包括创建PreferenceFragmentCompat、定义XML布局以及在Activity中加载片段。 实战部分演示了在Android 13设备"关于手机"页面添加"认证信息"选项的方法:先在AndroidManifest.原创 2025-11-25 12:27:21 · 813 阅读 · 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 · 1008 阅读 · 0 评论 -
Android监听运行应用的任务变化包含Activity及Service
本文介绍了两种监听安卓应用运行状态变化的方案:使用IActivityManager和IActivityTaskManager。第一种方案通过注册IProcessObserver回调来监听进程活动变化,但获取包名较复杂。第二种方案从Android 10开始引入,使用registerTaskStackListener回调,能更清晰地获取任务栈变化信息。两种方案都需要引入framework.jar并申请相应权限(SET_ACTIVITY_WATCHER或MANAGE_ACTIVITY_TASKS)。文章通过序列图原创 2025-11-11 14:32:20 · 992 阅读 · 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 · 715 阅读 · 0 评论 -
Android监听第三方播放获取音乐信息及包名
摘要: Android通过NotificationListenerService可监听应用通知,包括媒体播放状态。本文介绍了利用该服务获取音乐播放信息的方法:1) 在清单文件中声明权限和服务;2) 实现NotificationListenerService,通过MediaController回调获取播放进度、曲目信息等数据。当检测到媒体通知时,会注册回调监听播放状态和元数据变化。该方案适用于大多数媒体应用,但某些后台播放场景可能需要改用MediaSessionManager轮询。代码演示了如何建立监听、处理原创 2025-10-13 15:57:18 · 1272 阅读 · 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 · 640 阅读 · 0 评论 -
Android电池库仑计计算、容量校准、电池曲线详解
Android设备充电过程主要分为三个阶段:预充电(低电流激活)、恒流充电(大电流快速充)和恒压充电(电流递减至满)。充电器类型包括标准SDP、专用DCP和混合CDP,系统需根据类型调整充电策略。库仑计用于精确测量电量,配合OCV电压表计算电池容量。温控采用Jeita策略,根据温度调节充放电参数,确保安全。电池容量计算通过安时积分法和开路电压法实现,并具备自学习功能以校准老化误差。充电管理还包括预充电保护、电量显示校准等机制,通过硬件检测和软件算法共同保障充电安全与效率。原创 2025-10-10 09:08:55 · 1619 阅读 · 0 评论 -
Android各版本运行时权限(Runtime Permission )表现
安卓不同版本运行时权限(Runtime Permission )表现可能会不同,为了安全,目前大部分安卓版本某些敏感权限比如:录音,摄像头,发送短信等都,APP调用前都需要先申请对应权限,用户选择“同意”则可正常使用否则对应功能将不能使用。CTA认证要求低版本的如Android5的apk必须要支持运行时权限,但是其功能是Android6才引入的,需要对Runtime Permission不同版本的表现有个初步认识,好方便针对CTA要求进行修改。原创 2023-02-07 11:32:49 · 1941 阅读 · 0 评论 -
MTK Android修改selinux允许system APP可读写sys与proc
MTKAndroid 11需要为内置的APP打开读写/sys与/proc的权限。原创 2023-03-17 18:04:40 · 1385 阅读 · 2 评论 -
MTK Android隐藏NavigationBar
摘要:本文介绍了在MTK安卓设备上屏蔽NavigationBar的方法。通过修改系统配置文件,将config_showNavigationBar值设为false,并调整system.prop中的qemu.hw.mainkeys参数即可实现。文章提供了详细的搜索指令和代码修改示例,并附带了10篇相关MTK开发的技术文章链接。该方法适用于大部分MTK芯片和安卓版本,可帮助开发者快速隐藏导航栏。原创 2023-08-12 22:03:21 · 1027 阅读 · 0 评论 -
MTK Android非常用分辨率修改充电动画
非标准分辨率的屏,配置MTK Android的关机充电动画.。原创 2023-08-15 23:34:29 · 973 阅读 · 0 评论 -
安卓8预装可卸载应用
系统:Android 8CPU:MTK理论上改法适用于其他平台,比如展讯。不适用于安卓11。安卓11请参照。原创 2023-11-30 19:47:38 · 1405 阅读 · 0 评论
分享