昨天在一个偶然的不小心中,出现了一个问题,如图
翻译过来就是“安装失败,参数非法”,我也就是换了个图片文件夹,为什么会出现这种错误呢?
一.错误原因猜想
之前都是好的,没有问题的,我只是从svn上更新了个图片文件夹,然后本地少了图片,懒得找,就把原来的 Remove Reference
,再重新拉取,怎么就不行了了?那么问题肯定出现在这个图片上,于是我就再看了下文件夹,发现
看到没,之前的文件夹都是黄色的,这个文件夹怎么变成蓝色的了?不过应该没有问题吧,里面有图片啊,如图
查了这个错误都是清缓存,重置模拟器等,试了试,都不行,于是搜了下这个蓝色文件夹和黄色文件夹的区别。
二.跟踪问题
原来是这样子,黄色的文件夹是group
,蓝色的是folder
group
:一般只在你的工程中是文件夹的形式,但是在本地的目录中还是以散乱的形式放在一起的,除非你是从外部以group
的形式引用进来的。
folder:
只能作为资源,整个引用进项目,不能编译代码,也就是说,以folder形式引用进来的文件,不能被放在complie> sources
列表里面。
我们比如拉图片或者第三方进工程的时候,会出现如下:
我们会发现在第二个选项Added folders
这儿有两个选择
Create groups
Create folder references
这里我们一般选择的都是第一项Create groups
,没有发现任何问题。而这次我选择的是第二项Create folder references
,点击完成,如下图所示,文件夹是蓝色的,并且编译文件列表里面没有 MBProgressHUD.m
这个文件,证明文件夹引用,只会引用文件夹,文件夹里面的东西都会直接拷贝到 bundle
包,不参与编译。
而如果我选择group
,会发现
Co‘mpile Sources
里面是有MBProgressHUD.m
的。
这里就是group
和folder
的区别了,原来folder
是这个样子的,不知道苹果搞出来哥folder
有什么意义,这里我们平时用的大多都是group
的,所以估计平时都没注意这儿,现在可以有一定了解了。
三.解决问题
OK,问题找到了,那么解决吧,把这个蓝色的也就是folder
文件夹删除重新拉一个,选择group
,然后运行编译,竟然还是这个问题
installation failed invalid argument
oh,my god !这什么情况,于是重置模拟器,clean工程,都没用,后来在这里发现一个帖子
里面讲了
这才恍然大悟,既然folder
参与了编译,只是里面的文件没有被引用,重置模拟器肯定是没有用的,把本地文件里面的缓存清了然后重新运行肯定就是新的group
的路径了,要不运行的还是folder
的缓存路径,果然,清完缓存后Build Succeeded
,到此,这个问题就解决了。
四.最后
最后总结一下,遇到问题首先找到问题的根结,然后分析解决,对于平时没有在意的地方这种错误也需要注意,因为惯性思维可能使你没有往这方面的原因上面想,总之,写程序还是要小心啊!
版权声明:本文为博主原创文章,转载请注明出处,谢谢。