導航:首頁 > 源碼編譯 > bitcode編譯

bitcode編譯

發布時間:2022-10-17 10:41:47

A. iOS安全編譯器,使用時為什麼要關閉bitcode選項

朋友你好,很高興為你解決問題。
幾維安全的編譯器會自己開啟bitcode
希望能夠幫助到你。
祝你開心每一天。

B. Bitcode是什麼,如何配置

bitcode是被編譯程序的一種中間形式的代碼。包含bitcode配置的程序將會在App store上被編譯和鏈接。bitcode允許蘋果在後期重新優化程序的二進制文件,而不需要重新提交一個新的版本到App store上。
bitcode選項默認是設置為YES的。我們可以在」Build Settings」->」Enable Bitcode」

C. Xcode6的項目放到Xcode7中無法運行

Xcode7是iOS9了,對程序做了一些調整,給程序猿挖了點坑。

一、iOS9 bitcode
首先最大的問題就是坑貨xcode7,xcode7默認是打開bitcode的,bitcode是蘋果為了解決他自己以後的應用可以隨意更換硬體的處理做的准備也就是arm指令集和x64指令集的問題
那麼我們的工程如果你採用了別人封裝的第三方庫,那麼好了,會爆以下錯誤
ld: 『/UsersFramework/SDKs/PolymerPay/Library/mobStat/lib**SDK.a(**ForSDK.o)』does not contain bitcode. You must rebuild it with bitcode enabled (Xcodesetting ENABLE_BITCODE), obtain an updated library fromthe vendor, or disablebitcode for this target. for architecture arm64
上述這段文字說明了我們的第三方庫不支持bitcode,如果你需要支持,就需要這個第三方庫也支持bitcode。蘋果目前給出的臨時解決方案就好比當初MRC和ARC時候的解決辦法,當初xcode5更新時候默認是工程創建是ARC的,你可以關閉ARC改為MRC,經過了一段時間後,大家都開始使用了ARC,那麼bitcode也一樣,在xcode7時候默認是開啟的,我們需要關閉,那麼如何關閉
我引用了一篇文章的gif圖來做演示
在targets裡面選擇BuildSetting中搜索bitcode,然後改為no就ok了
二、iOS9 https問題
如果在Xcode 9之前使用的時http請求,那麼在XCode 9上編譯的App是不能聯網的,會提示如下錯誤:
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app『s Info.plist file.
修 改方法是要麼使伺服器支持https訪問,要麼關閉https的使用。第一種方法對於個人開發者來說代價還是比較大的,因此推薦使用後面一種方法,具體的 做法是:在工程的Info.plist文件里添加NSAppTransportSecurity字典類型的,添加一個元素:key為 NSAllowsArbitraryLoads,值為YES。
三、iOS 9 使用URL scheme必須將其加入白名單(摘抄)
否則會提示類似如下錯誤:
canOpenURL: failed for URL: "mqqopensdkapiV2://qqapp" - error: "This app is not allowed to query for scheme mqqopensdkapiV2」
修正方法是,Info.plist文件中添加一個key為LSApplicationQueriesSchemes的數組值,裡麵包含需要添加白名單的string類型的scheme。特酷吧在項目中使用了qq,微信等分享登錄功能,需要添加的值為:
mqqopensdkapiV2
mqqOpensdkSSoLogin
mqq
mqzoneopensdkapiV2
mqzoneopensdkapi19
mqzoneopensdkapi
mqzoneopensdk
mqzone
weixin
wechat
三、新浪微博的jsonkit在部分機型上面導致崩潰(群友Gemini提供
問題是 程序會奔潰到jsonkit.m void keyObjectISA = ((void **)keys[idx]);這行代碼,因為在os x10.10中,NSString採用了TaggedPointer這項技術,此類型不使用解應用isa來獲取其所屬類,而是通過接下來的三位來查找類表索引的類型,且對象指針最低位置為1。
如何解決:解決方法由群友sun提供參考地址如下
http://blog.csdn.net/woainiliuwei007/article/details/48549103
由於taggedpointer類型不能用isa了,就必須修改為object_getClass(keyObject) ,而且在line:2601處也需要做修改
這里附一個修改過的jsonkit,可以正常使用
http://download.csdn.net/detail/woainiliuwei007/9123789
四 、原來的dylib後綴名的庫全部修改為libz.tbd
五、報錯 Assertion failure in -[UIApplication _runWithMainScene:transitionContext:completion:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3505.16/UIApplication.m:3294 (群友sun提供)
在Info.plist中,可以找到:「Main storyboard file base name」 String 「Main」,刪掉這個條目, 再啟動,屏幕變成了黑屏
手動添加window
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; //全屏window
self.window.backgroundColor = [UIColor whiteColor]; //白色背景
[self.window makeKeyAndVisible]; //
return YES;
}
ok,這個由於更新xcode7報錯已解決!
如果按照上面修改完,發現還在報錯,那麼去看看你的項目是不是加了引導頁
把上面的add方法,變成下面的就好。
這個add方法在xcode7之前是沒有問題的,在xcode7後不能這樣寫了!
六、找不到(丟失).dylib文件,換成.tbd文件而又無法運行,請用下面的方式來解決。
Go to Build Phases >Link Binary with Librairies > + > Add other
Once in the file selection window do "CMD"+Shift+G (Go to folder) and type /usr/lib/
From /user/lib you can add: libz.dylib and more...
Compile and have fun

簡書Xcode7的常見問題
http://www.jianshu.com/p/ef7bbe1c8393

一.Xcode7,iOS9之後傳出來的什麼Xcode有鬼,被植入代碼片段什麼的,可以看看,了解一下http://drops.wooyun.org/news/8864

二.bitcode問題--未正確設置可能導致編譯問題。適配iOS9
1、大部分社交平台介面不支持https協議。
問題描述:在iOS9下,系統默認會攔截對http協議介面的訪問,因此無法獲取http協議介面的數據。對ShareSDK來說,具體表現可能是,無法授權、分享、獲取用戶信息等。還可能造成我們的編輯界面里傳http之類的網路圖片的時候,我們的編輯界面不會顯示圖片截圖,解決的辦法或者全面關閉https,允許使用http請求;或者把圖片的域添加;又或者選擇使用https的圖片
解決方案(以下方法2選1):
(1)、暫時退回到http協議。
具體方法:在項目的info.plist中添加一個Key:NSAppTransportSecurity,類型為字典類型。然後給它添加一個Key:NSAllowsArbitraryLoads,類型為Boolean類型,值為YES;

示例
(2)、設置域。可以簡單理解成,把不支持https協議的介面設置成http的介面。
具體方法:
1)、在項目的info.plist中添加一個Key:NSAppTransportSecurity,類型為字典類型。
2)、然後給它添加一個NSExceptionDomains,類型為字典類型;
3)、把需要的支持的域添加給NSExceptionDomains。其中域作為Key,類型為字典類型。
4)、每個域下面需要設置3個屬性:NSIncludesSubdomains、、。均為Boolean類型,值分別為YES、NO、YES。

示例
2、大部分社交平台SDK不支持bitcode。
問題描述:iOS 9新建項目默認需要支持bitcode,而不支持bitcode的SDK會導致無法編譯運行。解決方案:
(1)、暫時關閉對bitcode的支持(建議),方法如下圖
(2)、移除不支持bitcode的平台SDK。

示例
3、添加Scheme白名單
問題描述:在iOS 9下涉及到平台客戶端跳轉,系統會自動到項目info.plist下檢測是否設置平台Scheme。對於需要配置的平台,如果沒有配置,就無法正常跳轉平台客戶端。因此要支持客戶端的分享和授權等,需要配置Scheme名單。
具體方法:
1)、在項目的info.plist中添加一LSApplicationQueriesSchemes,類型為Array。
2)、然後給它添加一個需要支持的項目,類型為字元串類型;

示例
三.ATS 未正確設置可能導致一些網路請求出問題。
WWDC 2015上了解到iOS 9將要求網路請求使用HTTPS協議。我們知道,Apple在安全及用戶隱私方面做了很多工作,包括沙盒機制、代碼簽名、禁用私有API等。而在今年6月份的WWDC 2015上,Apple又提出了App Transport Security(ATS)的概念。這一特性的主要意圖是為我們的App與伺服器之間提供一種安全的通信方式,以防止中間人竊聽、篡改傳輸的數據。這一特性在iOS 9+和OS X 10.11+中是默認的支持項。這一概念的提出,也將意味著Apple將會慢慢轉向支持HTTPS,而可能放棄HTTP。
App Transport Security技術要求
我們先來看看ATS的技術要求(參考App Transport Security Technote):
1)The server must support at least Transport Layer Security (TLS) protocol version 1.2.
2)Connection ciphers are limited to those that provide forward secrecy (see the list of ciphers below.)
3)Certificates must be signed using a SHA256 or better signature hash algorithm, with either a 2048 bit or greater RSA key or a 256 bit or greater Elliptic-Curve (ECC) key.
可以看到服務端必須支持TLS 1.2或以上版本;必須使用支持前向保密的密碼;證書必須使用SHA-256或者更好的簽名hash演算法來簽名,如果證書無效,則會導致連接失敗。
Apple認為這是目前保證通信安全性的最佳實踐,特別是使用TLS 1.2和前向保密。當然,相信Apple也會與時俱進,不斷的修正ATS,以保證網路通信的安全性。
默認配置
在iOS 9+和OS X 10.11+中,如果我們的App使用了NSURLConnection、CFURL 或者NSURLSession相關的API來進行數據通信的話,則默認是通過ATS的方式來傳輸數據。在此配置下,如果我們使用HTTP來進行通信,則會導致請求失敗,並報以下錯誤:
The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.
這樣意味著如果使用ATS,將無法支持HTTP協議(我們測試了一下,由於我們的登錄服務是使用HTTP協議,目前在iOS 9下已無法正常登錄)。相信目前還有大量的應用是通過HTTP協議來訪問伺服器的。而要讓所有的應用都轉向支持HTTPS,顯然是一件費時費力的事(與今年年頭所有應用必須支持64位ARM不同,那次只是在客戶端層面,而ATS涉及到服務端,影響面更大)。所以蘋果提供了一種兼容方案,下面我們就來看看如何處理。
自定義配置
考慮到現實因素,我們可能並不想使用默認配置,或者至少需要一個過渡時期。為此,Apple允許我們在Info.plist文件中來自行配置以修改默認設置(Exceptions),下表是一些鍵值及對應的類型和說明:

示例

示例

示例

示例

示例
四.Scheme未正確設置可能導致應用程序間跳轉會有問題
同一中的白名單
五.Requires full screen 未正確設置可能導致應用程序上傳會失敗 提示ITMS-90474 ITMS-90475

示例

D. unity怎麼使用bitcode編譯

的視頻(包括透明視頻和流媒體)的播放,支持二維碼識別。
EasyAR支持PC和移動設備等多個平台,EasyAR不會顯示水印,也沒有識別次數限制。
在拿到EasyAR package或EasyAR樣例之後,你需要一個key才能使用。請確保在使用EasyAR之前閱讀以下內容。
這篇文章介紹如何運行EasyAR unity樣例。
工具/原料

操作系統:Windows 7、Mac OS X、Android 4.0、iOS 7.0
Android/iOS GLES2、Unity 3D、
方法/步驟

1
打開樣例
首先你需要打開unity樣例工程並打開樣例中的場景。
Unity 4 如下圖所示,

2

而Unity 5 如下,

3

使用Unity 5打開工程之後,需要按照Unity的說明升級工程。升級之後就可以正常使用,配置和Unity 4相同。

4
輸入Key

找到 『EasyAR』 object 並在inspector中輸入『Key』。如果key是非法的,程序初始化將會失敗,可能顯示黑屏。

5
按照下面的說明在TextArea 中填入Key。

6
就是這么簡單!現在就可以在包括Windows/Mac/Android/iOS所有平台上運行Unity 樣例了。

XCode 配

E. Bitcode是什麼,如何配置

bitcode是被編譯程序的一種中間形式的代碼。包含bitcode配置的程序將會在App store上被編譯和鏈接。bitcode允許蘋果在後期重新優化程序的二進制文件,而不需要重新提交一個新的版本到App store上。
bitcode選項默認是設置為YES的。我們可以在」Build Settings」->」Enable Bitcode」!

F. iOS 編譯報錯怎麼辦

1.編譯iPad真機時,選擇了 Architetures:Standard(armv6) BaseSDK:iPhoneDevice3.2 TargetDeviceFamily:iPad.

若編譯出現如下錯誤:

Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1

則修改 GCC4.2CodeGeneral區域中的ComplieForThumb為非選中.

已經有了開發者證書及私鑰後,可直接在越獄的手機上調試.

2. 編譯鏈接時, "_OBJC_CLASS_$_xxx", referenced from:可能需要重新建立某個類的文件.

或者:選擇項目名,在detail列表中的target列(顯示為一個又圓圈),把這個文件的復選選中,或者再次選中.以把它加入到這個target裡面來.

3.在sdk4.0及以上使用RegexKitLite報'captureCount' was not declared in this scope錯誤,是在非.m文件中使用了它的原因.

4.there is no sdk with the name or path.

從網上down的開源代碼,結果運行的時候常出現這樣的錯,並且在deployment中沒有iosdeploymenttarget選項.

嘗試 Project/Edit Active Target/ 及 Set Active SDK菜單項,來回切換一下Active Configuration。

5. EXEC_BAD_ACCESS,EXC_BAD_INSTRUCTION錯誤,意味著這個app有內存管理的問題,一般是因為訪問野指針對象造成的。

一個和內存相關的崩潰一般很難定位到源代碼,因為這個惡魔可能很早就在程序中做了壞事了。假如一段有問題的代碼混亂了內存結構,這樣產生的蝴蝶效應可能會在之後很久才表現出來,並且總在不同的地方。所以,若有指針類型出現了不可能的變化,很可能就是因為內存結構被野指針調用混亂了。

修復一些警告後,可能就能預防一些內存錯誤。警告在左邊靠近行號的黃色三角指出一個編譯警告,你點擊那個黃色的三角形,xcode可能會彈出一個「Fix-it」的建議。

EXC_BAD_ACCESS崩潰不像SIGABRT,將不會得到很明朗的錯誤消息。然而可以使用一個讓人看到曙光的調試工具:Zombies!死亡對象工具。打開這個項目的scheme editor,選擇Run 選項,然後選擇Diagnosics標簽。勾上Enable Zombie Objects選項。當這個zombie工具被啟用之後,即使這個對象被釋放了,這個對象的內存也不會被清理。所以,那塊內存將會被標記為「長生不死的」。假如你試著之後又去使用這塊內存,這個app能夠意識到你的錯誤操作,並且app將會拋出「messagesent to daellocated instance」錯誤並且終止運行。

在工程中加入NSZombieEnabled 環境變數,並設為啟用,則在 EXC_BAD_ACCESS 發生時,XCode 的 Console 會列印出問題描述中,設置方法:雙擊Executables 下的 可執行模組,在彈出窗口中,Variables to be set in the environment,添加 NSZombieEnabled,並設定為 YES,點擊選中復選框啟用此變數。

可以再加入 MallocStackLogging 來啟用malloc記錄,以獲得更多的提示來幫助定位問題。

在gdb窗口輸入 (格式: shell malloc_history <id> <address>) shellmalloc_history1436 0x5f7fcf0, 也可以在終端中去運行 就要去掉以上的shell 指令 如 malloc_history <id> <address>

應該僅當需要調試內存時,才設置上述環境變數。

注意一點:不應該一直啟用zombie objects。因為這個工具將永遠不會釋放內存,只是簡單標記一下這個內存是不死的,你最終將會在某個時候耗盡所有的內存,因為所有分配過的內存都不會得到重用。因此應該在排查內存相關的錯誤的時候才開啟zombie objects,其他時候應該關閉它。

在xcode4中,To edit environment variables, go to Menu Proct / Edit Scheme…, select the desired configuration (you probably want 'Run') from the left sidebar first and then click on the Arguments tab. Environment variables are configurable there.

6.運行一個IPhone程序時,彈出窗口說「程序運行失敗,預置描述文件已過期」 。 解決辦法是,在Xcode中, window-> Orgnazier -> 你的iphone ->刪除帶有紅*的該程序之前的Profile 。 然後從Xcode運行該程序.

7.真機編譯時報 Code Sign error: The identity doesn't match any valid certificate/private key pair in the default keychain

修改工程和Targets的get infouild 中的code signing identity為空

8.調試列印

CFShow(coreFoundationThingy) will print out a description of coreFoundationThingy to the console. Output looks something like: {value = w:1186.000000 h:687.000000 type = kAXValueCGSizeType}

If NSLog() is printing something out as an NSCFType, try CFShow().

9. 編譯時報 Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang failed with exit code 1,修改C/C++ Compiler Version為gcc4.2

10.this class is not key value coding-compliant for the key viewController

可能在創建了一個基於view的工程,而後把生成的viewcontroller刪除了,但是在.xib中還有對它的引用,在IB中直接用delete鍵刪除掉它就行了。

11.這台電腦上已經存在一個名為「embedded.mobileprovision」的預置文件,您是否要替換么?

http://blog.sina.com.cn/s/blog_6907b67f0100o2vw.html

12.真機調試時報failed to upload *.app

http://hi..com/%CB%E6%B7%E7_1989/blog/item/9649f49f805f05aec8eaf466.html

http://www.shouyanwang.org/thread-462-1-1.html

13.記的release時,先置delegate為nil。

一個節點不應該保留任何對不屬於它的節點的引用。

14.模擬器

將xcode升級到4.3.1以後發現,ipad的模擬器,沒有Home鍵了。Command+Shift+H就可以實現類似點擊Home鍵的效果了。

G. ios 動態庫需要支持bitcode嗎

蘋果在 Xcode 7 中引入了 bitcode,在打包提交時,會包含 bitcode。如果項目用到了以二進制格式發布的第三方庫,第三方庫也需要包含 bitcode 才行。如果沒有包含 bitcode,編譯時會報錯,除非手動關閉 bitcode 特性。

閱讀全文

與bitcode編譯相關的資料

熱點內容
釘釘加密有用嗎 瀏覽:112
加密u盤好還是不加密的 瀏覽:349
微觀經濟學平狄克第八版pdf 瀏覽:403
linux查看實時流量 瀏覽:557
如何存檔到伺服器 瀏覽:548
flash編程書籍推薦 瀏覽:835
php獲得數組鍵值 瀏覽:401
香港雲伺服器操作 瀏覽:303
wpe最新源碼 瀏覽:857
自己購買雲主伺服器推薦 瀏覽:422
個人所得稅java 瀏覽:761
多餘的伺服器滑道還有什麼用 瀏覽:192
pdf劈開合並 瀏覽:29
不能修改的pdf 瀏覽:752
同城公眾源碼 瀏覽:489
一個伺服器2個埠怎麼映射 瀏覽:298
java字元串ascii碼 瀏覽:79
台灣雲伺服器怎麼租伺服器 瀏覽:475
旅遊手機網站源碼 瀏覽:332
android關聯表 瀏覽:946