一個不小心引發的問題,installation failed invalid argument
昨天在一個偶然的不小心中,出現了一個問題,如圖
翻譯過來就是“安裝失敗,引數非法”,我也就是換了個圖片資料夾,為什麼會出現這種錯誤呢?
一.錯誤原因猜想
之前都是好的,沒有問題的,我只是從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
,到此,這個問題就解決了。
四.最後
最後總結一下,遇到問題首先找到問題的根結,然後分析解決,對於平時沒有在意的地方這種錯誤也需要注意,因為慣性思維可能使你沒有往這方面的原因上面想,總之,寫程式還是要小心啊!