Android 11.0 支持exFAT文件系统

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

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值