Android 11.0 支持exFAT文件系统

U盘常见文件系统类型有FAT32、NTFS、exFAT, Android默认支持FAT32,  一般也有NTFS类型编译选项, 但是exFAT由于版权或者其他原因,默认是不支持的。网上已有android N、P exFAT文件系统支持的移植,但是过程中可能会遇到不少小问题。为了方便有Android 11支持exFAT需求的你快速完成, 结合其他优秀作者的文章,写下此篇供遇到坑的你参考。与Android 9移植该功能基本一样,下面记录一下移植过程。

不知道前人是不是有说过只需要移植nofuse即可, 我是同时移植nofuse和fuse, 才完成exfat支持的。

系统信息:

Android 11

kernel: 4.19.172

过程分两大步骤:

步骤一:kernel中移植nofuse

源码:https://github.com/dorimanx/exfat-nofuse

将代码下载解压后,更名exfat放到kernel/fs下, 修改kernel下Kconfig、Makefile:

在kernel默认编译配置文件中,修改编译选项打开:

在系统配置devices.mk中增加,一般在device/vendor/xxx.mk中

完成上述, 编译kernel, 升级。串口查看cat /proc/filesystems(如果没有exfat 将会mount失败, PublicVolume.cpp中的内容,不做展开):

命令dmesg | grep FAT,查看有如下信息:(如果无mount信息,后面再说)

另外要注意system/vold/fs/Exfat.cpp中的内容:

步骤二:移植fuse

https://github.com/Shawnsongs/Android_P_external_exfat_ntfs-3g/tree/master/external-exfat-fuse

下载上述源码,并放到external下, 修改两个路径下的Android.mk。一般会有一些警告和错误,不过上述源码前面作者已经debug过, 所以我这里不需要修改。编译时,可以source build/envsetup.sh;lunch后,在exfat路径下mm单独编译节省时间,如果编译通过,则可以编译整包升级查看。

其他文章没有提到这个修改,参考ntfs配置,我在下面加了下面的修改:

编译警告或错误, 可以阅读文末连接,看看是否有你遇到的情况。我是换了上述的源码去编译,无报错和异常。都正确的话,输入命令 ls -l /system/bin/*.exfat, 可以看到下图打印

如果一切顺利,主板插入exFAT格式U盘有如下打印:

-----------------------附---------------------------

如果不那么顺利,遇到前文提到的挂载失败,就要阅读system/vold下的代码了。可以输入:clear;logcat -c;logcat -s vold,  查看相关代码分析是否是mount失败. 下图是mount成功的打印

参考链接:

https://blog.csdn.net/an_times/article/details/106858104

https://blog.csdn.net/wolfnx/article/details/106745236

Android 11.0 支持exFAT文件系统相关推荐

  1. Android 11.0 支持exfat格式

    点滴积累,记录自己的成长. 最近系统要支持exfat格式,参考了大佬们的帖子之后,终于搞定了. 由于之前都是Android.mk,自己系统中使用的Android.bp,而且要求以模块的形式调用对应的k ...

  2. Android 7.0支持exfat文件系统

    网上看了一圈,关于Android移植exfat支持的文章大多停留在Android 4.x,Android 6.0或7.0以上的基本空缺,所以决定自己写一篇,本文实践环境是MTK的Android 7.0 ...

  3. Android 9.0 支持NTFS和Exfat 格式U盘开发

    前言 最近有个需求要求在Android 9.0上面支持NTFS和Exfat 格式的U盘.网上有很多资料都是基于Android 4.4 的系统,系统版本太陈旧没有办法借鉴,通过两周的摸索终于搞定了这个功 ...

  4. Android11还能自定义相机吗,安卓用户又少了一项自由,Android 11不再支持更改默认相机程序...

    原标题:安卓用户又少了一项自由,Android 11不再支持更改默认相机程序 来源:量子位 关注前沿科技 萧萧 发自 凹非寺 量子位 报道 | 公众号 QbitAI 萧萧 发自 凹非寺 量子位 报道 ...

  5. Android 11.0 Settings源码分析 - 主界面加载

    Android 11.0 Settings源码分析 - 主界面加载 本篇主要记录AndroidR Settings源码主界面加载流程,方便后续工作调试其流程. Settings代码路径: packag ...

  6. Android 11.0 无源码apk授予QUERY_ALL_PACKAGES权限

    目录 1.概述 2.Android 11.0 无源码apk授予QUERY_ALL_PACKAGES权限的核心类 3.Android 11.0 无源码apk授予QUERY_ALL_

  7. Android 11.0 锁屏页面时钟显示样式

    一.需求分析 Android 11.0系统默认的锁屏时钟 年月日 显示的样式不符合需求,现在需要定制化.下图是系统默认的时间样式. 目标是改成这样: 二.核心代码路径 frameworks/base/ ...

  8. MTK Android 11.0:充电低电指示灯会被未读消息信号灯灭掉,无优先级控制。

    MTK Android 11.0:充电低电指示灯会被未读消息信号灯灭掉,无优先级控制: 1.电池充电.低电状态提示(红绿双色).(LIGHT_ID_BATTERY) 小于15%时: A 正在充电 亮红 ...

  9. android不装电池打开无线,你用或者不用,Android 11都支持反向无线充电

    原标题:你用或者不用,Android 11都支持反向无线充电 谷歌刚正式发布的Android 11开发者预览版中被XDA大神发现了名为"Battery share"的隐藏新功能.B ...

最新文章

  1. GitHub 报告显示香港码农大爆发,诚实的程序员:转行只因工资高!
  2. ASP.NET Calendar 控件
  3. mysql的三大引擎是什么_MySQL常用三大存储引擎
  4. STM32F10x之RCC
  5. .NET 4.0 任务(Task)
  6. Lua 操作 MongoDB 数据库实例
  7. 高性能服务器 - window篇
  8. TP3.2之WHERE组合条件处理
  9. Vue菜单栏边框参差不齐,修整完美
  10. 通过注册表修改我的文档等系统文件夹默认位置
  11. python自动生成报告_python实现自动生成oracle awr报告
  12. 黑马程序员-学习日记(单例设计模式的两种类型)
  13. 实例化Spring容器的两种常用方式
  14. #今日论文推荐# 莫纳什大学最新《长文档摘要》综述,39页pdf长文档摘要的实证研究:数据集、模型和指标
  15. java 屏蔽广告js_用js屏蔽被http劫持的浮动广告实现方法
  16. 移动通信技术发展历程及未来趋势
  17. Django Rest_framework 4(APIView、GenericAPIView、ViewSet)
  18. css动画——语音播报小喇叭动效
  19. 灰度重心法提取光条纹中心
  20. 南邮计算机科学与技术专业本科2014级课程设计II题目

热门文章

  1. CAD看图软件如何画线?
  2. 智能电视如何设置电视直播开机自启动?
  3. Python 怎样导入自己另外的py文件?
  4. WinHex数据恢复笔记-数据恢复与硬件维护-MBR格式--MBR,EBR系统结构
  5. 磁盘管理-基本磁盘、动态磁盘、GPT磁盘、MBR磁盘/CHS(cylinder柱面-head磁头-sector扇区)
  6. 【VOS】各种vos疑难杂病
  7. 禅道项目管理工具部署
  8. springboot集成springsecurity 使用OAUTH2做权限管理
  9. 云e办前端项目--前端VUE跨域配置
  10. EMNLP 2021事件相关(事件抽取、事件关系抽取、事件预测等)论文汇总