静态库没有更新


最近测试sdk时,在测试工程中将最新编译的库替换掉,运行程序,发现并不是自己编译的版本,就开始一段奇怪折腾的旅程:


1. 首先为了验证编译的时间,也是为了定位是不是最新编译的库,在库里加了编译时间的log,

使用c语言支持的宏定义__DATE__和 __TIME__,注意是双下划线,这样可以获取到编译时刻的时间和日期,奇怪的java中并不支持类似的编译。

重新打包放进去,发现log还是以前编译的版本...


2.开始怀疑__DATE__和 __TIME__没有作用,就加入了一些固定字符串的打印log,还是没有打印出来


3.这时猜测可能时xcode又淘气了,clean工程,删掉sdk,编译,果然找不到sdk,说明它引用的就是放进去的这个,

这时再把新编译的库放进去,编译过了,更加验证引用的就是这个。然并卵log还是打不出来,说明运行的还不是放进去这个。


4.到这里有点费解了,第三步明明证明肯定引用的是刚放进去的!!

这时找到头文件,点击进入头文件,发现头文件并不是我加进去的sdk的路径,居然是个不显示路径的头文件!!

这时猜测这个头文件可能是存在系统某个路径,也就是说sdk也存在系统里,这时查看xcode中工程的路径配置,

发现工程引用的地址里面都没有发现我的sdk!!


5. 在我近乎绝望的时候,想起生成的可执行文件app里面会包含sdk,只能去app路径看看了。

由于工程是模拟器版本,发现test.app使用show in finder打开的并不是它实际路径,

这应该是xcode一个bug,不管是可执行文件还是framework,如果是模拟器版本,show in finer是找不到的,

必须改到真机模式编译一下,打开show in finder才能找到真机的app,相邻的文件夹里放着的就是模拟器版本的app


6. 打开一看 乖乖,真的在这里!!!

这个路径就是

/Users/chenmingming/Library/Developer/Xcode/DerivedData/xxxx/Build/Products/Debug-iphonesimulator

其中xxxx是你的工程名字

其中/Users/chenmingming/Library/Developer/Xcode/DerivedData/ 时总路径


综上:

需要通过工程中生成的app文件(真机模式才会有)找到保存app的位置,到模拟器的app位置,删除那里的framework,然后bingo~ 

shit xcode!

猜你喜欢

转载自blog.csdn.net/mingming24/article/details/48295207