Q:
手里的项目是走了 Pods 组件化的,在主项目里调试组件库里的东西,pod 路径走本地。
但是每次修改库里的代码,运行并不会生效,得 cmd+l 清理一下,然后 cmd+r 运行才生效。
但是我发现,创建 Pods 时,系统默认创建的 Example 项目,针对库里的修改,是及时生效的。于是考虑,可能是编译配置的原因,通过比对两个项目的编译配置,得出解决方案1。
然后又跟组里大佬讨论下,大佬教了解决方案2。
建议大家根据自己的实际场景,自行选择。
A:
方案1:
你实际的项目 target -> Build Phase -> Embed Pods Frameworks,在 Input Files 里,添加你需要每次都重新编译的库:${BUILT_PRODUCTS_DIR}/YourPodsSDK/YourPodsSDK.framework
方案2:
大家确认下项目的 Podfile ,是否有 use_frameworks!
参数,这个参数指的是,把库当成静态库来处理,所以造成了本地修改后并不会及时更新。因此可以把 use_frameworks!
参数删掉就可以了;
👆方案2订正:
use_frameworks!
参数确实可以解决最开始的问题,但上面这段话的解释错了。use_frameworks!
指的是把库当成动态库(.framework)来处理,如果注释的掉,表示把库当成静态库(.a)来处理。他会影响 Xcode 编译你引用的库的时机。链接指路👉:stackoverflow
Cocoa Touch Frameworks:当你clear项目的时候,会重新编译;
Cocoa Touch Static Libraries:如果podfile指定了本地路径,那么当本地的文件改变了,那么就会重新生成.a。你可以在‘Products文件夹’下,找到对应的.a,然后show in Finder,看这个.a文件的生成时间,就可以看出来。
PS:
方案1:上线前删除,开发时添加,用起来会有点麻烦;但不影响其他库的编译策略;
方案2:方便简单,随时注释随时用;但有些库,为了编译速度,或者库本身的限制,可能会需要use_frameworks!
参数;大家可以根据场景,自行选择;