通过Swift Package Manager安装Firebase SDK后,未使用的子依赖是否会在构建时被排除?
通过Swift Package Manager安装Firebase SDK后,未使用的子依赖是否会在构建时被排除?
嘿,我来帮你把这个事儿捋明白~
你遇到的这个情况完全是正常的,不用慌!咱们拆开来理:
- 首先,Swift Package Manager(SPM)添加Firebase的时候,会把整个Firebase的仓库克隆到本地,所以你在项目导航里能看到所有Firebase的子依赖(比如FirebaseFirestore、FirebaseStorage这些),但这只是本地存储的包文件而已,不代表它们都会被打包进你的IPA。
- 真正决定哪些会被包含进App的,是你在Target的「Frameworks, Libraries and Embedded Content」里添加的依赖——你只加了FirebaseAuth,那Xcode只会处理这个模块,以及它自身必须的底层依赖(比如FirebaseCore,毕竟Auth得依赖它才能跑起来)。
再给你讲下背后的逻辑:Xcode的构建系统和SPM是会做「依赖树修剪」和「死代码剥离」的——
- 那些你没关联到Target、代码里也没引用的Firebase子模块,构建时根本不会被编译,自然也不会出现在最终的IPA里。
- 项目导航里显示完整的Firebase文件夹,其实是SPM的贴心设计:以后你要是想加其他Firebase功能(比如云存储),直接在SPM里选对应的子模块关联Target就行,不用再重新添加整个Firebase包了。
要是你还是不放心,完全可以自己验证:把构建好的IPA解压,查看里面的Frameworks目录,只会看到FirebaseAuth和它依赖的必要框架,其他没用到的Firebase子模块肯定不在那儿。
内容来源于stack exchange
相关产品推荐
相关产品推荐

