`

翻譯:Xcode的建置設定Build Active Architecture Only(Xcode Build Active Architecture Only

    博客分类:
  • ios
 
阅读更多

Xcode的建置設定Build Active Architecture Only

今天在Stackoverflow上看到某個問題,讓我想起在Xcode 3.2.2裡,有些新加入的建置設定,值得在這裡說明一下。隨著iPhone/iPod Touch新型機種推出,以及iPad的加入,你可以決定要將軟體編譯成哪一種處理器架構的格式,下面的設定,都放在target info的標籤Build之下(在target上按滑鼠右鍵然後選Get Info)。

Standard (armv6)

原先的armv6架構,現在以"Standard"字樣出現,產出的二進位檔案,可在所有機種上運行,如果你的軟體還需要在iPhone OS 2.x上跑的話,你應該選擇此設定,因為,根據一些報告指出,2.x的機子跟universal binary二進位檔有點不對頭。

Optimized (armv6 armv7)

若是選"Optimized"的話,這會建置出universal或稱為"fat"的二進位檔,裡面含有armv6與armv7兩套二進位檔,顧名思義,這樣的軟體檔會比較肥大,不過,當放到armv7機種上運作時,就能充分完整地利用處理器的能力。在實務上,使用者到底能不能感受到效能的提升,取決於應用軟體需要處理的事情與運算。如果你的目標對象是OS 3.x或之後的版本,一般來說,你應該選這個項目。

Other (armv7)

如果你的對象只有iPad的話(iPhone OS 3.2),你可以手動把架構設定為armv7,這樣就不會去建置armv6的部份。

Build Active Architecture Only

到目前為止,都很容易理解,但是,有件事要注意。在target的建置設定中,在Architectures那一部分裡有個叫"Build Active Architecture Only"的設定,這會影響二進位檔的建置方式,其預設值是,若是Debug組態,此設定值會被勾選,如下:



 Xcode現在會偵測你有連接的機子,根據機型來設定此項目,所以,如果你插入iPod Touch二代的話,Xcode會將active architecture設定為armv6,此時,若你用上面的Debug組態來建置,那麼只會建置出armv6的二進位檔,以節省時間(除非你的專案很大,大到感覺不到,不過,我想你多多少少都能察覺出建置所需的秒數)。


當你新增Distribution組態來發佈軟體到App Store上時,你應該要確認一下,這個選項應該是"不勾選"的狀態,這樣才會建置出肥大的universal binary,如下:



 每當蘋果公司推出新機型,建置流程就變得更加複雜,花時間留意一下Xcode裡出現的新選項設定是值得的,即使大家都有共識,Xcode在隱藏細節與複雜設定這一方面,做的還不錯。

不勾可以同时编译多个architecture,例如可以生成32bit,64bit的universal binary 

  • 大小: 25 KB
  • 大小: 24.7 KB
分享到:
评论

相关推荐

    Xcode_Build_Setting_Reference

    ##### ONLY_ACTIVE_ARCH (Build Active Architecture Only) This setting determines whether the build process should only target the active architecture. This can be useful for optimizing builds and ...

    Framework not found IOSurface for architecture arm64(不能设为免费?)

    同时,确认"Build Active Architecture Only"在Debug模式下设置为YES,在Release模式下设置为NO。 - **更新依赖管理工具**:如果你使用CocoaPods或Carthage,确保它们是最新的,并且在Podfile或Cartfile中正确声明了...

    XCode编译速度慢的处理方法

    再者,设置`Build Active Architecture Only`为`Yes`也能显著提高编译速度。在Build Settings中找到这一选项,将Debug模式下的`No`改为`Yes`。这意味着在编译时只针对当前设备的架构进行,而非编译所有可能的架构。...

    XCode 加快编译链接速度的方法

    最后,修改"Build Active Architecture Only"的设置。在Build Settings中,找到这一选项,将其在Debug模式下设为"Yes"。这意味着只编译当前设备的架构,而不是所有可能的架构,从而缩短编译时间。但请注意,Release...

    IOS 入门开发之使用Xcode4制作静态库详解(五)

    在"Build Settings"中,设置"Architectures"为"Standard architectures (including 64-bit)",并启用"Build Active Architecture Only"。 8. **归档与分发**:完成以上步骤后,你可以在"Products"目录下找到针对...

    XMPP的一点小资料

    1. **Build Active Architecture Only**:将其设置为`YES`,这将使得Xcode只编译当前目标设备的架构,减少可能的兼容性问题。 2. **Valid Architectures**:在项目的构建设置中,删除不再需要或不兼容的架构,如armv...

    详解Xcode编译选项功能

    4. **Build Active Architecture Only(仅构建活跃架构)** - 当此选项设为YES时,Xcode会根据当前连接的设备或模拟器的架构来编译对应的二进制文件,从而减少编译时间,这对于调试很有帮助。在Release模式下,默认...

    IOS 静态库打包流程简化详细介绍

    这可以通过在Xcode的项目设置中将`Build Active Architecture Only`设置为`NO`来实现。 2. **支持Debug和Release模式**:使用Xcode的配置变量`${CONFIGURATION}`来动态选择打包模式。在脚本中,根据不同的配置进行...

    IOS应用源码之【应用】-iOS framework 制作教程【非静态包】.rar

    - 在项目的"Build Settings"中,确保"Build Active Architecture Only"设置为"No",以便支持多架构。 - 设置"Targeted Device Family"为iPhone和iPad,以支持不同设备。 - 在"Other Linker Flags"中添加`-ObjC`,...

    音视频解决方案For IOS

    为了确保在不同设备上的兼容性,还需要设置Build Active Architecture Only和Valid Architectures选项。同时,引入所需的API头文件,如AnyChatPlatform.h、AnyChatDefine.h和AnyChatErrorCode.h,以及AVFoundation...

    常见iOS错误解决方案

    2. **更改构建设置:**在目标的`Build Settings`中,将`Build Active Architecture Only`设置为`YES`。 3. **调整有效架构:**同样在`Build Settings`中,找到`Valid Architectures`,移除`armv7s`。 --- #### 七...

    iOS二维码扫描修改版,ZBarSDK,支持64位和32位

    6. **支持64位和32位**:为了兼容不同的iOS设备,你需要确保你的项目配置正确设置了“Valid Architectures”和“Build Active Architecture Only”。对于支持64位,需要包含arm64,同时保持armv7和armv7s支持32位...

    官网生成libzbar.a,代码完整,一分钟搞定扫码

    由于旧版本的ZBarSDK可能未包含arm64支持,需要在Xcode的项目设置中,确保“Build Active Architecture Only”设置为“NO”,并且在“Valid Architectures”中添加"arm64"。完成这些设置后,重新编译生成的libzbar.a...

    libopencore-amrnb.a iOS7.1支持armv7,armv7s,arm64版本

    同时,确保"Build Active Architecture Only"在调试时设为`YES`,在发布时设为`NO`,这样可以在编译时生成所有目标架构的二进制文件。 在实际应用中,将`libopencore-amrnb.a`加入到项目中,还需要正确链接和配置...

    IOS静态库MyStaticLib

    - 配置静态库Target的Build Settings,确保"Build Active Architecture Only"设置为"No",以便支持多架构。 - 选择对应Target,然后点击"Product" -> "Build"。完成后,库文件(libMyStaticLib.a)会出现在...

    amr for arm64

    在Xcode中,选择“Active Scheme”为iOS 7对应的模拟器或设备,并将“Build Settings”里的“Architecture”设为包括arm64。 4. **解决依赖**:OpenCore AMR可能依赖其他库,比如OpenSSL或zlib,确保这些依赖已正确...

    iOS中.a和.framework静态库的创建与.bundle资源包的使用详解

    3. 在Build Settings中设置Build Active Architecture Only(仅构建活动架构)为NO,以支持所有架构。 4. 分别编译模拟器和设备版本,得到对应的.a文件。 5. 使用lipo命令将两个.a文件合并为一个通用的.a库文件。 ...

Global site tag (gtag.js) - Google Analytics