不使用Pods引入Charts库并可修改源码的正确配置方法咨询
解决Charts子工程依赖+源码可修改+团队共享配置方案
看起来你之前踩了「预编译框架覆盖子工程源码」的坑——当你把Charts.framework加入Embedded Binaries时,Xcode会优先使用这个预编译产物,而非你修改后的子工程代码。下面是一套能同时满足源码可修改、团队克隆即能用的配置方案:
第一步:清理错误配置
先把之前的冲突项移除,避免后续混淆:
- 打开主项目的「General」标签,找到「Embedded Binaries」,移除里面的
Charts.framework - 切换到「Build Phases -> Link Binary With Libraries」,如果有手动添加的
Charts.framework也一并删除
第二步:正确配置子工程依赖
现在让主项目真正依赖Charts子工程的编译产物:
- 确保
Charts.xcodeproj已经拖入主项目(建议放在项目根目录的Vendor文件夹下,方便团队统一管理) - 进入主项目的「Build Phases -> Target Dependencies」,点击
+号,选择Charts子工程里的Chartstarget(注意选iOS平台的那个,别选错macOS/watchOS的target) - 回到「Link Binary With Libraries」,再次点击
+号,这次从Charts子工程的Products目录下选择Charts.framework(这个是子工程编译生成的框架,不是外部下载的)
第三步:确保源码修改实时生效
做完上面的配置,你直接修改Charts.xcodeproj -> Charts -> Source里的代码,编译主项目后修改会立刻生效。如果还是不生效,检查这两个点:
- 查看主项目「Build Settings -> Framework Search Paths」,确保包含Charts子工程的路径(Xcode通常会自动添加,如果没有,手动加
$(PROJECT_DIR)/Vendor/Charts,勾选「Recursive」) - 清理缓存:按下
Command+Shift+K清理构建产物,再按Command+Option+Shift+K清理Derived Data,重新编译
第四步:让团队成员无需重复操作
为了让其他开发者克隆项目后直接能用,需要做这两件事:
- 用Git子模块管理Charts:在终端执行
git submodule add https://github.com/danielgindi/Charts.git Vendor/Charts,把Charts作为子模块引入。这样团队成员克隆项目后,只需执行git submodule update --init就能拉取到对应版本的Charts代码,不用手动下载 - 提交配置文件:把主项目的
.xcodeproj文件提交到Git,里面已经包含了子工程的依赖配置。其他开发者打开主项目时,Xcode会自动识别并加载Charts子工程
常见问题排查
- 如果出现
duplicate symbol错误:检查主项目里是否手动复制过Charts的源码文件,有的话全部删除,避免类重复定义 - 如果编译报错版本不兼容:确保主项目的Deployment Target和Charts子工程的Deployment Target保持一致
- 如果还是SIGABRT崩溃:检查主项目的「Info.plist」是否有缺失的配置(比如Charts用到的权限,但这种情况很少见)
内容的提问来源于stack exchange,提问作者alexxj
相关产品推荐
相关产品推荐

