一怎诫、報錯與警報
1虐唠、錯誤代碼:No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=armv7 armv7s)
build 這個target的時候命令行報錯∩偬可以在 build setting 中城侧,搜索bitcode,并吧 enable bitcode 設置為 NO.
2、ld:framework not found IOKit
終端輸入以下2行內容:
cd/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/IOKit.framework
sudo ln -s Versions/A/IOKit .
其中况增,如果不行赞庶,從文件夾中慢慢打開看下路徑對不對训挡,如果像有修改Xcode名稱的澳骤,注意如 “xcode 5” ?[有空格" “的記得在終端中加上 “\”這個符號];
3澜薄、程序沒問題为肮,運行報錯:Directory not empty
位于/Users/你電腦名/Library/Developer/Xcode/DerivedData下的緩存文件占很大的緩存空間,如果長時間不刪除xcode下的緩存文件肤京,就會導致硬盤空間越來越小直到Directory not empty颊艳。刪除了緩存文件再運行就不會再報錯。
或者忘分,直接clean一次就可以了棋枕。
4、如果遇到編譯錯誤類似:Undefined symbols for architecture armv7:
"_OBJC_CLASS_$_ASIHTTPRequest"妒峦,先檢查上述的依賴代碼是否已加入編譯列表重斑,如未加入,依次點擊Target->Build Phases->Compile Sources肯骇,點擊底部“+”添加上述代碼窥浪。
如果遇到編譯錯誤類似:Undefined symbols for architecture armv7:?? "_inflateEnd", referenced from笛丙,則應該是缺少依賴libz.dylib胚鸯,添加方法:依次點擊Target->Build Phases->Compile Sources,點擊底部“+”镜豹,在彈出的列表中輸入libz趟脂,添加搜索結果中最新版本即可昔期。
5.but did not return a nonzero exit code to indicate failure
日志類似:
解決:
選擇 Build Settings 菜單硼一,把compress PNG files 改成NO般贼。
6.Undefined symbols for architecture i386:
日志類似:(缺少BJGKPaintMapViewController文件的引用)
原因:xcode項目import文件時哼蛆,會根據(jù)project.pbxproj來查找腮介,查找不到文件的引用則會有上述的錯誤端衰。圖中就是BJGKPaintCommand文件對BJGKPaintMapViewController類的引用找不到旅东。常常在多人合作開發(fā)的時候抵代,svn提交不規(guī)范導致的project.pbxproj發(fā)生錯誤主守,使得文件的引用不在project.pbxproj文件中参淫。
解決方案:
a.點擊Build Phases涎才,如果是缺少的xxx是類名,則在Complie Sources中加入該文件跌前。若缺少類庫抵乓,則在Link Binary With Libraries中加入該類庫灾炭。例如圖中是缺少 “BJGKPaintMapViewController”蜈出,這個是類名涛酗。
b.或者直接把需要引用這個缺少類/庫的原文件去掉引用商叹,筆者就是多調用了BJGKPaintCommand類文件沈自,所以把它去掉枯途,也就不需要補上BJGKPaintMapViewController類的引用了酪夷。
---第6點 2016年08月25日補充---
遇到類似以下報錯:
Undefined symbols for architecture i386:
"_sqlite3_bind_blob", referenced from:-[FMDatabase bindObject:toColumn:inStatement:]inFMDatabase.o"_sqlite3_bind_double", referenced from:-[FMDatabase bindObject:toColumn:inStatement:]inFMDatabase.o"_sqlite3_bind_int", referenced from:-[FMDatabase bindObject:toColumn:inStatement:]inFMDatabase.o"_sqlite3_bind_int64", referenced from:-[FMDatabase bindObject:toColumn:inStatement:]inFMDatabase.o"_sqlite3_bind_null", referenced from:-[FMDatabase bindObject:toColumn:inStatement:]inFMDatabase.o"_sqlite3_bind_parameter_count", referenced from:-[FMDatabase executeQuery:withArgumentsInArray:orDictionary:orVAList:]inFMDatabase.o-[FMDatabase executeUpdate:error:withArgumentsInArray:orDictionary:orVAList:]inFMDatabase.o
.........
上面的意思是Link Binary With Libraries 中沒有添加 “l(fā)ibsqlite3.dylib”,但是Xcode7中只有對應的“*.tbd”坦报,而沒有“*.dylib庫”片择,怎么辦呢字管?
方法①:
“Link Binary With Libraries”中點擊 “+”嘲叔,點“Add Other”硫戈,這時候按下“Command+Shift+G”丁逝,輸入“/usr/lib”進行搜索果港,可以看到?“l(fā)ibsqlite3.dylib”辛掠,雙擊添加完畢萝衩。
方法②:
點項目猩谊,TAGERT ->?Build Setting?-> Lingking ->?Other Linker Flag 牌捷,在里面添加一行字符: “-lsqlite3”暗甥。 添加完畢撤防。
7辜膝、問題: ld/ warning/ directory not found for option從項目中刪除了某個目錄厂抖、文件以后验游,編譯出現(xiàn)警告信息:ld: warning: directory not found for option“XXXXXX”:
有時候已經從項目中刪除了文件和文件夾還是報這個警告耕蝉,雖然沒有發(fā)生錯誤蒜魄,但是看著很不舒服谈为。伞鲫。
去掉警告的辦法如下:
1選擇工程, 編譯的 (targets)
2選擇 Build Settings 菜單
3如下查找 Library Search Paths 和 Framework Search Paths, 刪掉編譯報warning的路徑即OK吠架。
更新-->
8.Xcode7打包拐辽,iOS9真機閃退薛训,如何解決?
答:點擊鏈接->【Xcode7打包,iOS9真機閃退出吹,如何解決】
----------------2016年7月1日更新---------------
9.報錯如下:
Undefined symbols for architecture i386:
"std::__basic_file::is_open() const", referenced from:...
或者“std::basic_string, std::allocator >::find(wchar_t const*, unsigned long, unsigned long) const", referenced from:”...
然后后面一大堆的以“std:”開頭的描述...
解決方案:項目名 -> Build Phases -> Link Binary With Libraries鸠珠,
將libstdc++.dylib換成libstdc++.6.0.9.dylib就可以了。
二驯耻、常見問題:
1.模擬器的目錄:
點擊“Finder->前往->資源庫->Developer->Xcode->DerivedData”可缚,【看不到“資源庫”?點擊“前往”测柠,看到菜單欄時,按“Option”就看到了.】
或者點擊“Finder->前往->前往文件夾”赃阀,輸入:
”/Users/你當前登陸的用戶名/Library/Application Support/iPhone Simulator/“
2.Xcode構建項目多,內存占用大驮俗,如果清除緩存?
a.App被XCode Build在這里:
點擊“Finder->前往->資源庫->Developer->Xcode->DerivedData”,
或者,點擊“Finder->前往->前往文件夾”垒拢,輸入: “/Users/你當前登陸的用戶名/Library/Developer/Xcode/DerivedData”(冒號沒有的)
b.連接真機生成的文件奔垦,可以全部刪掉或者把不常用的版本刪掉,再次連接設備會自動生成:
"~/Library/Developer/Xcode/iOS DeviceSupport"
c.app打包生成的文件,可以刪掉不需要的項目打包文件:
"~/Library/Developer/Xcode/Archives"阔逼。
以上都可以把不需要的app項目刪除嗜浮。或者定時刪除舊的項目。
3.Xcode項目模擬器上png格式的本地圖片正常顯示蛋勺,真機調試不顯示:
可能有2個原因:
(1).圖片的初始狀態(tài)刃泡,不是png的家卖,被自己直接就改成png了趴樱。這樣模擬器OK逛薇,真機就有問題卧秘。
可以使用Mac 系統(tǒng)自帶的圖片預覽導出一下,(就是雙擊圖片蚯涮,點擊左上角:文件->導出->png格式)治专,再重新導入就行了。
(2).真機上文件名是區(qū)分大小寫的遭顶,而模擬器上面是不區(qū)分的张峰,所以模擬器可以,真機不行;
更新-->
4.項目更改一部分資源或者修改部分數(shù)據(jù)后棒旗,再次運行模擬器還是原來的效果喘批,沒有發(fā)生變化:(例如提示找不到某些頭文件。)
按一下:Product -> Clean ,應該是清除一下再編譯嗦哆;
每次項目有數(shù)據(jù)修改谤祖,重新運行前,我都會clean一下老速,避免因為緩存出現(xiàn)的錯誤...這個經常用粥喜,但是clean真正的意思我還沒讀懂它.
(轉載請標明原文出處,謝謝支持 ~ ^-^ ~)
? by:啊左~