Xcode中指令集相關選項

Xcode中指令集相關選項(Build Setting中)

(1)Architectures

Space-separated list of identifiers. Specifies the architectures (ABIs, processor models) to which the binary is targeted. When this build setting specifies more than one architecture, the generated binary may contain object code for each of the specified architectures.?

指定工程被編譯成可支持哪些指令集類型,而支持的指令集越多,就會編譯出包含多個指令集代碼的數據包,對應生成二進制包就越大,也就是ipa包會變大。

(2)Valid Architectures

Space-separated list of identifiers. Specifies the architectures for which the binary may be built. During the build, this list is intersected with the value of ARCHS build setting; the resulting list specifies the architectures the binary can run on. If the resulting architecture list is empty, the target generates no binary.?

限制可能被支持的指令集的范圍,也就是Xcode編譯出來的二進制包類型最終從這些類型產生,而編譯出哪種指令集的包,將由Architectures與Valid Architectures(因此這個不能為空)的交集來確定,例如:
比如,你的Valid Architectures設置的支持arm指令集版本有:armv7/armv7s/arm64,對應的Architectures設置的支持arm指令集版本有:armv7s,這時Xcode只會生成一個armv7s指令集的二進制包。

再比如:將Architectures支持arm指令集設置為:armv7,armv7s,對應的Valid Architectures的支持的指令集設置為:armv7s,arm64,那么此時,XCode生成二進制包所支持的指令集只有armv7s


在Xcode6.1.1里的 Valid Architectures ?設置里, 默認為 Standard architectures(armv7,arm64),如果你想改的話,自己在other中更改。

原因解釋如下:?
使用 standard architectures (including 64-bit)(armv7,arm64) 參數,則打的包里面有32位、64位兩份代碼,在iPhone5s( iPhone5s的cpu是64位的 )下,會首選運行64位代碼包,?其余的iPhone( 其余iPhone都是32位的,iPhone5c也是32位 ),只能運行32位包,但是包含兩種架構的代碼包,只有運行在ios6,ios7系統上。?
這也就是說,這種打包方式,對手機幾乎沒要求,但是對系統有要求,即ios6以上。?
而使用 standard architectures (armv7,armv7s) 參數, 則打的包里只有32位代碼, iPhone5s的cpu是64位,但是可以兼容32位代碼,即可以運行32位代碼。但是這會降低iPhone5s的性能。 其余的iPhone對32位代碼包更沒問題, 而32位代碼包,對系統也幾乎也沒什么限制。?
所以總結如下: ?

要發揮iPhone5s的64位性能,就要包含64位包,那么系統最低要求為ios6。 如果要兼容ios5以及更低的系統,只能打32位的包,系統都能通用,但是會喪失iPhone5s的性能。

(3)Build Active Architecture Only

指定是否只對當前連接設備所支持的指令集編譯

當其值設置為YES,這個屬性設置為yes,是為了debug的時候編譯速度更快,它只編譯當前的architecture版本,而設置為no時,會編譯所有的版本。?編譯出的版本是向下兼容的,連接的設備的指令集匹配是由高到低(arm64 > armv7s > armv7)依次匹配的。比如你設置此值為yes,用iphone4編譯出來的是armv7版本的,iphone5也可以運行,但是armv6的設備就不能運行。 ?所以,一般debug的時候可以選擇設置為yes,release的時候要改為no,以適應不同設備。?

1)

Architectures: ?armv7, armv7s, arm64
ValidArchitectures: ?armv6, armv7s, arm64
生成二進制包支持的指令集: arm64

2)

Architectures: armv6, armv7, armv7s
Valid Architectures: ?armv6, armv7s, arm64
生成二進制包支持的指令集: armv7s?

3)

Architectures: armv7, armv7s, arm64
Valid Architectures: armv7,armv7s

這種情況是報錯的,因為允許使用指令集中沒有arm64。

注:如果你對ipa安裝包大小有要求,可以減少安裝包的指令集的數量,這樣就可以盡可能的減少包的大小。當然這樣做會使部分設備出現性能損失,當然在普通應用中這點體現幾乎感覺不到,至少不會威脅到用戶體檢。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/458625.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458625.shtml
英文地址,請注明出處:http://en.pswp.cn/news/458625.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DebugView使用筆記

1. 什么是DebugView? 它是Sysinternals公司的系列調試工具。可以捕獲程序中由TRACE()和OutputDebugString輸出的信息。 2. C需要完成哪些工作呢? 將打印的信息用OutputDebugString輸出,示例: [cpp] view plaincopy #include "stdio.h&q…

DebugView的使用[通用匯總]

DebugView是一款免費輔助工具,用來輸出捕捉OutputDebugString()函數輸出的信息等。 1 下載 http://technet.microsoft.com/en-us/sysinternals/bb896647 1.1 介紹DebugView http://www.vcfans.com/2008/11/trace-show-about-a-tool-debugview-sent-a-message-to-tra…

Android 通信 EventBus

參考: Android 框架煉成 教你如何寫組件間通信框架EventBusAndroid EventBus源碼解析 帶你深入理解EventBusAndroid EventBus實戰 沒聽過你就out了快速Android開發系列通信篇之EventBusEventBus是一個publish/subscribe (發布 / 訂閱) 消息的總線,簡化了…

WIFI無線路由器的五種工作模式

http://www.360doc.com/content/12/0814/08/10560798_230064460.shtml

iOS面試題1

而技術開發面試,問一些技術相關的問題是必須的,最新的技術可能人人都趨之若鶩,但有些原理和基礎的也希望都有了解。 這里整理了一些iOS相關的面試題,(可能都已經老掉牙)但是也想跟大家分享下! 如…

高質量JAVA代碼編寫規范

1. Java 命名約定   除了以下幾個特例之外,命名時應始終采用完整的英文描述符。此外,一般應采用小寫字母,但類名、接口名以及任何非初始單詞的第一個字母要大寫。 1.1 一般概念   * 盡量使用完整的英文描述符   * 采用適用于相關領域的…

MFC中繪制動態曲線

參考: http://blog.csdn.net/zang141588761/article/details/50536788 [轉載]MFC中畫直線和曲線 一、畫直線要想在MFC中畫出有顏色的線條,首先就要設置DC的畫筆,我們可以按如下方法來設置畫筆:第一步:在View類中添加…

博客地址 RSS地址

博客地址 RSS地址 OneVs Den http://onevcat.com/atom.xml 破船之家 http://beyondvincent.com/atom.xml NSHipster http://nshipster.cn/feed.xml Limboy 無網不剩 http://feeds.feedburner.com/lzyy 唐巧的技術博客 http://blog.devtang.com/atom.xml Lex iOS notes http://i…

2015.11.27---Java

public class star{public static void main(String[] args) {System.out.print("ha");}}轉載于:https://www.cnblogs.com/supermeimei/p/5001922.html

QT之深入理解QThread

QT之深入理解QThread 理解QThread之前需要了解下QThread類,QThread擁有的資源如下(摘錄于QT 5.1 幫助文檔):在以上資源中,本文重點關注槽:start();信號:started()、finished()&#…

常見人事問題

整體素養的常見問題 一、請你自我介紹一下你自己? (面試官目的:深度了解求職者,看求職者基本的溝通和自我認知能力) NO: 只說姓名、年齡、愛好等基本的信息后就沒了。只重復簡歷里的內容,如工作經驗就…

springMVC數據封裝成POJO

springMVC把前臺的數據封裝為POJO與struts2的封裝形式不同。struts2需要在控制器聲明需封裝的POJO,而springMVC不需要任何準備工作,只需在相應的方法的參數中加上需封裝的POJO,當用戶提交表單時,springMVC會根據表單中dom元素的na…

QT輸入輸出(四)之 QProcess

QProcess Qt提供了一個QProcess類用于啟動外部程序并與之通信.這個類是異步工作的,而且在后臺執行,這樣用戶界面就可以始終保持響應。 啟動一個新的進程的操作非常簡單,只需要將待啟動的程序名稱和啟動參數傳遞給start()函數即可. 例如: QObj…

iOS 推送 邏輯

推送 階段一:Provider[服務端]把要發送的消息,目的IOS設備標識打包,發送給APNS; 階段二:APNS在自身的已注冊Push服務的IOS設備列表中,查找有相應標識的IOS設備,并將消息發送到IOS設備&#xff1…

正則提取的url中的域名以及替換域名的方法 preg_match()和preg_replace()

<?php //網站的url$url http://www.baidu.com/index.php;//正則表達式$reg /(http):\/\/([^\/])/i;preg_match($reg, $url,$res);/** $res的結果array (size3)0 > string http://www.baidu.com (length20)1 > string http (length4)2 > string www.baidu.com (…

音視頻開發

command s 截模擬器的屏幕 MP.4只是一個容器 H.264 H.263是真正的格式 H.265正在測試中 avi H.264 H.263 視頻解碼&#xff1a;將H.263 H.264轉換為視頻和音頻的格式 視頻編碼&#xff1a; 解碼&#xff1a;硬解碼&#xff1a;GPU做的解碼 CPU做除了圖片以外的&#…

10.11 安裝pod

原文地址&#xff1a;http://www.jianshu.com/p/5fc15906c53a 感謝。 更新升級10.11 cocoapods安裝出問題最簡單的解決方法 這是因為10.11把cocoapods直接干掉了 sudo gem install -n /usr/local/bin cocoapods 再加一句&#xff0c;完美解決 sudo xcode-select --switch /App…

windows任務管理器中的工作設置內存,內存專用工作集,提交大小詳解

通俗的講工作設置內存是程序占用的物理內存(包含與其他程序共享的一部分), 內存專用工作集是程序獨占的物理內存, 提交大小是程序獨占的內存(包含物理內存和在頁面文件中的內存). 注:頁面文件就是存放不在物理內存中的內存,文件路徑一般在C:\pagefile.sys,目的是為了能夠讓更…

coreData mapView #include

一、coreData 需要導入系統庫CoreData 新建文件的時候選core data 中的Data Model 然后加相應的表 加完表后 在Model.xcdatamodeld中新建文件 選coredata中的第三個 即可 如果兩個表有聯系 就將附表放到主表中 在build Setting中&#xff0c;輸入search 在Framework Searc…

淺談 C++ 中的 new/delete 和 new[]/delete[]

來自&#xff1a;http://www.cnblogs.com/hazir/p/new_and_delete.html 在 C 中&#xff0c;你也許經常使用 new 和 delete 來動態申請和釋放內存&#xff0c;但你可曾想過以下問題呢&#xff1f; new 和 delete 是函數嗎&#xff1f;new [] 和 delete [] 又是什么&#xff1f…