不好意思祭刚,標題有點長了辛孵,今天拾起了一個老項目丛肮,調(diào)試了一下,出現(xiàn)如下錯誤魄缚。
慣例Google了一下宝与,搜索的關(guān)鍵字為:invalid bitcode signature,解決的方案很多冶匹,如下所示:
invalid bitcode signature解決方案
1.Clean重啟
首先要做的就是網(wǎng)管的終極套路习劫,關(guān)機重啟,所以我們遇到問題當(dāng)然就是Clean Project and Build徙硅,不行就Restart Xcode榜聂,其實很多莫名奇怪的問題都可以通過這樣的方案搞定,畢竟Xcode確實bug不少嗓蘑,不知道是不是我的mac性能差须肆,我的Xcode就經(jīng)常出現(xiàn)找不到頭文件或者聯(lián)想不出關(guān)鍵字的問題。
2.修改Bitcode檢測
3.Build Active Architecture Only設(shè)置
我把所有的組合搭配都試過了桩皿,Debug -> YES/NO豌汇,Release -> YES/NO,各種搭配泄隔,各種配搭拒贱,無奈,It doesn't work。
4.刪除DerivedData文件夾
打開xcode找到Products文件夾 -> Products文件夾里的.app文件逻澳,show in Finder 選擇三欄顯示模式 -> 往前滑找到DerivedData文件夾闸天, 刪除 。
It doesn't work斜做。
5.Custom Compiler Flags
在Building Seting -> 中 -> Custom Compiler Flags加 -> -fembed-bitcode
It doesn't work苞氮。
至此,基本上Google上所有的方案都是這幾個瓤逼,然而都沒有解決我的問題笼吟,所以果斷換關(guān)鍵字搜索,也就是linker command failed with exit code 1霸旗,可能出現(xiàn)的兩個Error都是因為linker command failed with exit code 1贷帮。
linker command failed with exit code 1解決方案
1,看看是不是有新添加的文件跟之前文件同名
2诱告,錯誤信息中出現(xiàn)了某個類的名字撵枢,去原文件中看看#import了哪些第三方庫,把這些庫挨個注釋排除蔬啡,找到出錯的那個庫诲侮,然后按照官方提供的步驟重新添加一遍。
3.SVN或git忽略了某些文件箱蟆,如.o 等文件沒能update下來,查看.o文件可能是紅色的刮便,可以重新添加或者修改SVN(git)的忽略設(shè)置
4.把.a文件刪除再重新拖到項目中解決問題
5.可能重復(fù)添加了文件(也可能沒勾選 Copy items if neded 這個選項)空猜,建議刪除后重新添加
6.工程中文件名重復(fù)了 也會出現(xiàn)同樣的錯誤
7.”Build Settings”->”Enable Bitcode”設(shè)置為NO ,因為有些SDK不支持Bitcode
8.可能在引用的時候 可能寫的是#import "XXXXX.m" 恨旱,如果是改為#import "XXXXX.h"
9.可能你導(dǎo)入的SDK只能在真機下才能運行辈毯,模擬器會報錯!
10.找到 Build settings->Linking->Other Linker Flags將此屬性修改成-all_load 或者 -ObjC
11.Build settings->Search Path->Library Search Paths 添加靜態(tài)庫的相應(yīng)路徑
我的解決方案
以上方案我基本上都做了搜贤,無奈還是沒搞定谆沃,我就在猜測是不是靜態(tài)庫版本的問題,因為我的Xcode已經(jīng)升級到了最新的版本仪芒,而項目是挺老的項目了唁影,所以秉承著打破砂鍋問到底的精神果斷去下載老版本的Xcode,通常我們可以在App Store應(yīng)用商店中免費下載Xcode的最新版本掂名,但如果我們想要獲取特定版本呢据沈?蘋果在開發(fā)者網(wǎng)站中提供了歷史所有版本的系統(tǒng)和開發(fā)工具的下載,網(wǎng)址:https://developer.apple.com/download/more/饺蔑。
幸運的是公司的網(wǎng)絡(luò)比較快锌介,Xcode7很快下載下來了,然后及時如何讓兩個版本共存,其實直接給Xcode改名即可孔祸,可以一個版本保留原名隆敢,另一個版本加上版本號。也可以給多個版本都加上版本號崔慧,例如Xcode7和Xcode8筑公。需要注意的是,如果你有使用第三方開發(fā)工具尊浪,請盡量避免在名稱中出現(xiàn)空格匣屡。
Xcode安裝好了以后,果斷真機調(diào)試拇涤,你猜的沒錯Could not find Developer Disk Image捣作,公司最低版本的手機為iOS 9.3.5的iPhone4s,而我下載的Xcode7最高支持的設(shè)備為iOS 9.0鹅士,此時解決的辦法有兩個券躁,要么升級Xcode,要么下載該Disk Image掉盅,兩者相比較當(dāng)然是厚顏無恥的去問別人要了一個9.3版本的Disk Image也拜,然后放到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport目錄下,重啟Xcode趾痘,編譯運行通過慢哈。