此答案是对here 介绍的解决方案成功实施的总结。
更干净的解决方案是using local paths for dependencies in Cartfile。
环境
步骤 1. 符号链接
1.1 将$(SRCROOT_MAIN)/Carthage/Checkouts/$(DEVELOPING_FRAMEWORK_NAME) 目录更改为指向开发框架$(SRCROOT_DEVELOPING_FRAMEWORK) 的源代码根目录的符号链接,其中$(SRCROOT_MAIN) 是主应用程序的源代码根目录。在此更改之前备份现有目录。
此链接可在您的开发框架中启用版本控制的更改。
使用ln 实用程序时的语法,
$ ln -s "$SRCROOT_DEVELOPING_FRAMEWORK" "$SRCROOT_MAIN/Carthage/Checkouts/$DEVELOPING_FRAMEWORK_NAME"
1.2 将框架中的$(SRCROOT_DEVELOPING_FRAMEWORK)/Carthage/Build 目录更改为指向$(SRCROOT_MAIN)/Carthage/Build 目录的符号链接。在此更改之前备份现有目录。
此链接允许从您的开发框架和您的主应用程序访问 Carthage 构建的所有框架。
使用ln 实用程序时的语法,
$ ln -s "$SRCROOT_MAIN/Carthage/Build" "$SRCROOT_DEVELOPING_FRAMEWORK/Carthage/Build"
步骤 2. 框架替换
2.1 删除Xcode > YOUR_MAIN_APP > General > Linked Frameworks and Libraries中的开发框架(即$(SRCROOT_MAIN)/Carthage/Build/iOS中的那个)。
2.2 将$(DEVELOPING_FRAMEWORK_NAME).xcodeproj(位于$(SRCROOT_MAIN)/Carthage/Checkouts/$(DEVELOPING_FRAMEWORK_NAME) 符号链接指向的目录中)添加到您的主应用中
2.3 构建设备和模拟器的开发框架产品
2.4 在Xcode > YOUR_MAIN_APP > General > Linked Frameworks and Libraries 中添加 Xcode 自动检测到的新开发框架。
2.5 通过在Xcode > YOUR_MAIN_APP > Build Phases > Target Dependencies 中添加$(DEVELOPING_FRAMEWORK_NAME).framework,将$(DEVELOPING_FRAMEWORK_NAME).framework 添加为目标依赖项。
2.6 通过在Xcode > YOUR_MAIN_APP > Build Phases > Run Script of Carthage Embed Framework 中添加一个新的输入文件$(BUILT_PRODUCTS_DIR)/$(DEVELOPING_FRAMEWORK_NAME).framework 和一个新的输出文件$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/$(DEVELOPING_FRAMEWORK_NAME).framework,将$(BUILT_PRODUCTS_DIR)/$(DEVELOPING_FRAMEWORK_NAME).framework 复制到$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/$(DEVELOPING_FRAMEWORK_NAME).framework。
参考
Debugging Carthage Dependencies
https://allocinit.io/ios/debugging-carthage-dependencies/
Build Setting Reference
https://developer.apple.com/library/archive/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html