Android 11源码 Framework修改默认usb连接模式为MTP模式

  • Android 11源码 Framework修改默认usb连接模式为MTP模式
    • 修改Framework层源码
    • 编译修改后的源码
    • 更新到手机系统

目标:Framework定制开发,修改Framework层代码,编译查看修改效果。本节我们修改USB默认选项,将USB默认充电模式改为默认MTP模式。

效果图: 默认情况下USB选项为不进行数据传输

修改Framework层源码

  1. 执行环境编译:
cd ~/aosp
source build/envsetup.sh
lunch


2. 用编辑软件打开源码目录,并修改源码:
将USB默认选项改为MTP文件传输。修改文件为:frameworks/base/services/usb/java/com/android/server/usb/UsbDeviceManager.java。

 // 省略部分代码...@Overridepublic void handleMessage(Message msg) {switch (msg.what) {case MSG_UPDATE_STATE:mConnected = (msg.arg1 == 1);mConfigured = (msg.arg2 == 1);updateUsbNotification(false);updateAdbNotification(false);if (mBootCompleted) {updateUsbStateBroadcastIfNeeded(getAppliedFunctions(mCurrentFunctions));}if ((mCurrentFunctions & UsbManager.FUNCTION_ACCESSORY) != 0) {updateCurrentAccessory();}if (mBootCompleted) {if (!mConnected && !hasMessages(MSG_ACCESSORY_MODE_ENTER_TIMEOUT)&& !hasMessages(MSG_FUNCTION_SWITCH_TIMEOUT)) {// restore defaults when USB is disconnectedif (!mScreenLocked&& mScreenUnlockedFunctions != UsbManager.FUNCTION_NONE) {setScreenUnlockedFunctions();} else {// 20210618 lxy modify usb default value//setEnabledFunctions(UsbManager.FUNCTION_NONE, false);setEnabledFunctions(UsbManager.FUNCTION_MTP, false);}}updateUsbFunctions();} else {mPendingBootBroadcast = true;}break;// 省略部分代码 ...}}protected void finishBoot() {if (mBootCompleted && mCurrentUsbFunctionsReceived && mSystemReady) {if (mPendingBootBroadcast) {updateUsbStateBroadcastIfNeeded(getAppliedFunctions(mCurrentFunctions));mPendingBootBroadcast = false;}if (!mScreenLocked&& mScreenUnlockedFunctions != UsbManager.FUNCTION_NONE) {setScreenUnlockedFunctions();} else {// 20210618 lxy modify usb default value//setEnabledFunctions(UsbManager.FUNCTION_NONE, false);setEnabledFunctions(UsbManager.FUNCTION_MTP, false);}if (mCurrentAccessory != null) {mUsbDeviceManager.getCurrentSettings().accessoryAttached(mCurrentAccessory);}updateUsbNotification(false);updateAdbNotification(false);updateUsbFunctions();}}// 省略部分代码 ...


编译修改后的源码

只修改了部分源码,不用对整个源码进行编译,我们在修改的目录下执行mm命令,对修改模块进行编译即可。

mm

编译后生成services.jar文件,输出到:out/target/product/sargo/system/framework/目录。

cd ~/aosp/out/target/product/sargo/system/framework/
ls -lt

进入到输出目录,通过ls命令查看,可以看到services.jar的日期为当期编译好的时间。

更新到手机系统

  1. 在更新之前我们先查看一下当前手机系统中services.jar文件的信息。
adb devices
adb root
adb remount
adb shell
cd /system/framework
ls -lt


2. 将修改编译后的文件更新到手机系统

cd ~/aosp/out/target/product/sargo/system/framework/
adb push services.jar /system/framework/

  1. 进入手机系统查看是否更新成功
adb shell cd /system/framework
ls -lt

可以看到手机系统中services.jar文件的日期已经更新为编译后的时间。

  1. 重新启动系统服务
adb shell
stop;start
  1. 用USB数据线连接电脑和手机,查看USB选项:可以看到这时候USB默认选项为文件传输

Android 11源码 Framework修改默认usb连接模式为MTP模式相关推荐

  1. Android 11 Framework修改默认usb连接模式为MTP模式

    将USB默认选项改为MTP文件传输.修改文件为:frameworks/base/services/usb/java/com/android/server/usb/UsbDeviceManager.ja ...

  2. 2022-08-29 AndroidR 修改默认usb连接模式为MTP(Media Transfer Protocol)),UsbDeviceManager.java里面处理OTG口usb设备拔插侦听

    一.默认是做为adb 调试功能,实际测试修改persist.sys.usb.config 是没有用. 二.拔插usb设备默认的选项是No data transfer  三.按下面的修改就可以修改默认u ...

  3. Android 11源码——安全策略SELinux关闭

    Android 11源码 安全策略SELinux关闭 SELinux介绍 背景 关闭Android的SELinux 临时关闭 永久关闭 SELinux介绍 作为 Android 安全模型的一部分,An ...

  4. Arch 编译 Android 11 源码

    文章目录 环境准备 下载源码 下载 repo 工具 repo init 原理 初始化仓库 选择同步指定分支 同步代码 切换源 编译代码 遇到的错误 很多人都写,如何在 Ubuntu 下编译 Andro ...

  5. android 11源码开机更改屏幕方向触摸方向

    目录 1.修改屏幕方向 2.配置触摸方向 3.修改触摸相关配置源码 修改屏幕方向以后需要将系统的触摸方向一并配置,否则可能造成坐标错乱情况,修改完毕后重新编译源码烧录后验证结果 1.修改屏幕方向 这里 ...

  6. 修改编译Android 11源码时发现报can‘t find symble的错误

    在/home/wq/android_11_source_repo/packages/apps/Contacts/src/com/android/contacts/activities/ContactS ...

  7. Android P 源码如何修改屏幕密度

    1. device/模块公司名称/模块平台名称/system.prop 比如:device/qcom/sdm660_64/system.prop 这个文件添加字段:ro.sf.lcd_density= ...

  8. Android源码中修改USB默认模式(充电、MTP等)、关闭通知栏的USB通知

    写了几年Android App,公司领导突然叫我在源码中修改USB连接后不能从PC端传数据到设备,这个之前没怎么接触过源码,咱也不知道,咱也不敢问呢,然后百度一搜,多倒是多,直接贴一大篇源码,得了吧, ...

  9. android系统源码7.1.2_r8下载,编译,运行到nexus5X上,修改源码并编译SDK进行测试

    一,学习android系统源码下载,编译的作用 1,可以自己 DIY 自己的rom系统,从系统层面,宏观的加深理解 android系统 2,编译自己的 userdebug(原生root权限) rom, ...

最新文章

  1. WPF窗体置于桌面最底层
  2. 解决Android中No resource found that matches android:TextAppearance.Material.Widget.Button.Inverse问题...
  3. Java实现目的选层电梯的调度
  4. 【转】EntityFramework使用Code First模式创建数据库控制生成单数形式的表名
  5. 互联网晚报 | 3月21日 星期一 |​ 科大讯飞5亿成立科技新公司;新能源车企称采购宁德时代电池成本上涨两万元...
  6. SAP License:定义某一模块的后台配置权限
  7. c语言汉诺塔动画程序,汉诺塔问题算法(c语言控制台动画演示版)
  8. php写dnf脚本,dnf分解机脚本c
  9. 50k热敏电阻温度对照表c语言,50K热敏电阻温度表..doc
  10. 微信小程序后端用python_Python开发微信小程序后端开发小坑
  11. 小型微型计算机系统杂志好投么,小型微型计算机系统杂志
  12. QT QString转16进制
  13. Python核心编程第二版第五章数字(课后习题)----我的答案
  14. 章节六:带参数请求数据
  15. 深度优先搜索中的树边、后向边,前向边和交叉边
  16. 埃森哲带给我们什么启示?
  17. 【漫漫转码路】Python Day 03
  18. Python学习笔记-Day2
  19. Spring Boot 配合搭建 ELK,这才是正确看日志的方式!
  20. 35. 应用监控【监控端点健康信息】

热门文章

  1. win2008 R2 安装VS2003
  2. Linux Tomcat JSP 布署详细教程
  3. Java Swing JTree:树组件
  4. css flew 布局 解决父元素高度不固定,子级居中。
  5. Graylog 中文手册 常用功能和问题整理
  6. 访问HDFS的权限问题:Permission denied: user=xxx, access=WRITE, inode=“xxxxxxxx“:
  7. Go 语言 入门 基于 GoLand 2023.1 创建第一个Go程序
  8. 研发质量保障体系搭建
  9. 瑞幸咖啡贵不贵?咖啡不贵,商业却很贵
  10. 数学/线性代数 {子式,余子式,代数余子式,拉普拉斯展开}