You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode 中 App 项目与 Framework 项目的区别及使用优势是什么

Xcode App 项目与 Framework 项目相关问题解答

1. App 项目与 Framework 项目的区别

  • 产物属性差异:App 项目编译生成 .app 可执行包,自带 @main 标记的程序入口,具备独立的应用配置(应用图标、启动页、权限配置等),可直接安装到模拟器或真机独立运行;Framework 项目编译生成 .framework 二进制封装包,无独立程序入口,本身无法直接运行,仅作为依赖库供其他 App 或 Framework 引入调用。
  • 访问控制规则不同:App 项目内部代码默认是 internal 权限,项目内全局可访问;Framework 项目代码默认仅内部可访问,若要对外暴露给依赖方使用,需要显式将类、方法、属性标记为 public/open 权限。
  • 配置项侧重点不同:App 项目配置围绕终端应用的运行需求配置,包括 Bundle ID、版本号、设备适配规则等应用专属配置;Framework 项目配置围绕代码编译架构、对外暴露接口、依赖项管理为主,不需要配置应用相关的专属属性。

2. 将项目转为 Framework 形式的优势

  • 代码复用:封装为 Framework 后,同一套 SwiftUI 组件和业务逻辑可以被多个 App 项目同时依赖,不需要在多个工程中重复拷贝代码,只需维护一份代码即可实现多端复用。
  • 模块化隔离:将独立功能模块封装为 Framework 后,不同模块之间仅通过暴露的公共接口交互,降低代码耦合度,方便多团队并行开发、问题定位和功能迭代。
  • 分发便捷:如果需要对外提供这套组件,封装为 Framework 后可以直接通过 CocoaPods、Swift Package Manager 等包管理工具分发,使用者只需在依赖配置中添加对应条目即可快速集成,不需要手动导入大量代码文件。
  • 编译效率提升:预编译的 Framework 不会在主项目每次编译时重复编译,大幅提升大型项目的整体编译速度。

补充:Framework 项目实现模拟器运行的方案

你可以在当前 Framework 工程中新增一个 App 类型的 Target,设置该 App Target 依赖你的 Framework Target,将需要测试交互的 SwiftUI 页面放到该 App Target 的入口文件中调用,即可正常在模拟器中运行调试交互逻辑,不会影响原有 Framework 的封装逻辑。


内容的提问来源于stack exchange,提问作者Joshua Maza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:27:02