> 文章列表 > mac压缩文件多了__MACOSX目录问题

mac压缩文件多了__MACOSX目录问题

mac压缩文件多了__MACOSX目录问题

文章目录

      • 背景
      • 原因
      • 解决方案:更换压缩方式
      • 分析问题
      • 拓展(.DS_Store)

背景

项目中有一个场景,需要把目录压缩为app离线包的zip

但是压缩之后一致打不开,别人上传的zip是好的

原因

如图,我上传的在安卓设备或者是windows上解压出来多了__MACOSX的一个目录,根据识别的顺序,在Android 10的设备上是会有问题的
mac压缩文件多了__MACOSX目录问题

解决方案:更换压缩方式

之前我一直用的是mac电脑的默认压缩方式,也就是归档管理工具

经验证,这种方式压缩出来就会有隐藏文件

  1. 使用命令行压缩的时候删除__MACOSX

    zip -d XxXx.zip "__MACOSX*

  2. 更换其他的压缩软件,比如keba

    https://www.keka.io/en/

  3. 如果是可以在windows或者android上进行解压的场景的话,也可以手动删除多余的这个目录

分析问题

在mac系统上压缩文件时,会自动将一些缓存的内容一起压缩,而这些在mac系统中是不可见的,对于其他系统如windows和andorid来说其实没有任何作用,一些特定的场景还会影响数据读取

拓展(.DS_Store)

类似的,mac电脑还会多产生.DS_Store文件

这个文件是用来记录该目录的一些属性,如文件夹的排序方式、图标大小等

这些功能在显示选项功能可以看到

  1. 禁止生成.DS_Store文件

    defaults write com.apple.desktopservices DSDontWriteNetworkStores true

    这个命令可以禁止生成一切前面带.的隐藏文件

    如果是想指定目录不生成(-m之后的是你指定的目录)

    /usr/sbin/dot_clean -m ~/your_working_dir

  2. 删除已经生成的.DS_Store文件

    当前目录

    find . -name ‘.DS_Store’ -type f -delete

    所有目录

    sudo find / -name “.DS_Store” -depth -exec rm {} ;

  3. 恢复.DS_Store生成

    defaults delete com.apple.desktopservices DSDontWriteNetworkStores