![](/img/trans.png)
[英]an error “ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386”
[英]Xcode 5.1 - No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386)
更新到Xcode 5.1后,我無法再為64位模擬器構建項目,收到此錯誤:
No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).
這些是我的目標構建設置:
我嘗試將“Build Active Architecture”更改為No,並將“i386”添加到“Valid Architectures”,但遺憾的是兩者都沒有。 謝謝你的任何建議!
你需要做的只是將ONLY_ACTIVE_ARCH
設置為NO
(至少對我ONLY_ACTIVE_ARCH
)。 下面是它的截圖:
據我所知( 如果出現問題,請指出,謝謝 ),如果將ONLY_ACTIVE_ARCH
設置為YES
,則表示Xcode僅針對活動架構(指當前在Xcode中處於活動狀態的設備)構建。 似乎Xcode的默認設置是將Debug設置為YES
,因此當您只想為連接到Mac的特殊設備構建時,它不會為其他體系結構構建二進制文件。
無法構建的原因可能是,該項目不支持您連接的設備的體系結構。 因此,最佳解決方案是為您的設備添加正確的架構。 以下是支持的體系結構和設備列表:
iPhone 6
, iPhone 5s
, iPad Air
, Retina iPad Mini
iPhone 5
, iPhone 5c
, iPad 4
iPhone 3GS
, iPhone 4
, iPhone 4S
, iPod 3G/4G/5G
, iPad
, iPad 2
, iPad 3
, iPad Mini
iPhone
, iPhone 3G
, iPod 1G/2G
那么為什么“將ONLY_ACTIVE_ARCH
設置為NO
”有效呢? 因為設備仍然可以運行為您添加的所有體系結構構建的二進制文件(傳遞構建),但會丟失一些性能。 這只是一個快速的解決方案,但不是最好的。
注意 :您添加的架構越多,生成的二進制文件就越大。 因此,為您的項目選擇正確的架構是件好事。 ;)
升級到XCode 5.1后,我收到了同樣的錯誤消息。 你在使用CocoaPods嗎? 如果是這樣,這應該解決問題:
將arm64
添加到目標的valid architectures
。 看起來它也將x86-64
架構添加到模擬器有效架構中。
如果您正在使用CocoaPods,最可能的問題是因為您的Pods項目Build Build Architecture for Build Active設置為Yes for Debug。
解決方案很簡單。 將其更改為否 。
同樣,對您的應用程序項目更改為“ 否 ”。
我有類似的問題。 通過在項目的構建設置中將 “架構”更改為“ $(ARCHS_STANDARD_32_BIT) ”來解決它。
現在,您必須選擇標准體系結構(armv7,arm64) - $(ARCHS_STANDARD),因為Apple建議在64位體系結構上構建應用程序。 單擊: Apple文檔
添加:架構:$(ARCHS_STANDARD_INCLUDING_64_BIT)
有效的架構:arm64 armv7 armv7s
為了以防萬一,盡管仍然遇到上述問題仍然遇到問題,請檢查您運行的模擬器是否也是受支持的模擬器。 我有我的指定arm7和arm7s但是試圖在64位模擬器上運行應用程序。
為避免每次運行時“pod install”重置only_active_arch進行調試,您可以將以下內容添加到pod文件中
# Append to your Podfile
post_install do |installer_representation|
installer_representation.project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
end
end
end
只需在有效的架構中添加arm64。我希望它能為您服務。
我的問題是Pods項目的目標是OS X,盡管我的Podfile有platform :ios
。 我正在使用cocoapods 0.35.0.rc2。
要修復它,請在項目導航器中選擇Pods項目,並檢查Pods PROJECT節點(請注意,而不是Pods目標)是否針對iOS。 也就是說,架構構建設置應該是:
$(ARCHS_STANDARD)
iOS 8.1
iOS
$(ARCHS_STANDARD)
我還想構建所有體系結構,因此我將以下內容添加到Podfile:
post_install do | installer |
installer.project.build_configurations.each do |config|
config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
end
end
我必須將以下i386
和x86_64
添加到Valid Architectures
。 我正在運行Xcode 7.2並以iOS 8+為目標。 我已經在那里安裝了armv7
, armv7s
和arm64
,這在Xcode 6.4中有效。
我在使用xcode 5.1在iPad上運行我的應用時遇到了同樣的問題。 它通過從“有效架構”中刪除armv7並將“僅構建活動架構”值設置為否來解決。這些字段都可以在app-> targets-> build settings->架構中找到。
由於Xcode 7.2中模擬器的命令行構建問題,我得出了這個問題。 如果其他人帶着同樣的問題來到這里,我會分享我找到的解決方案:
顯然,Xcode 7.2中存在一個錯誤 ,導致xcodebuild
在嘗試構建模擬器時失敗。 解決方案是指定選項“-destination”,例如:
xcodebuild -project TestBuildCmd.xcodeproj -scheme TestBuildCmd -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 6' build
更新
上面的示例命令將構建一個二進制文件,僅包含iPhone 6的圖形。 如果二進制文件在其他模擬器上運行,則iPhone 6圖形將縮放到平台。 包含所有平台的所有圖形的更好的解決方法是指定參數PLATFORM_NAME=iphonesimulator
,例如:
xcodebuild -project TestBuildCmd.xcodeproj -scheme TestBuildCmd -sdk iphonesimulator -arch i386 PLATFORM_NAME=iphonesimulator build
嘗試刪除所有以前的體系結構(即刪除ARCHS_STANDARD設置),同時將i386添加到體系結構中。 這應該將活動架構更改為i386。 我在默認情況下嘗試構建armv7時遇到了類似的問題,但它一直在嘗試為arm64構建。 我將ARCHS_STANDARD更改為ARCHS_STANDARD_32_BIT,這改變了所選的活動架構。
在acrhiecture - 有時支持6.0和7.0,我們排除arm64
在架構中 - > acrchitecture - 選擇標准架構arm64 armv7 armv7s。 在有效的架構下面,包括用戶arm64 armv7 armv7s。 這對我有用。
我用@ Kjuly的答案和具體的一行解決了這個問題:
“無法構建的原因可能是,該項目不支持所連接設備的架構。”
加載Xcode后,它會自動將我的iPad應用程序設置為iPad Air
這導致了依賴性分析錯誤。
更改設備類型立即解決了問題:
我不知道為什么會這樣,但這是一個非常快速的答案,它讓我在后台擺弄了很多東西,並立即讓應用程序正在測試。 我永遠不會想到這可能是一件事,而這么簡單的東西會解決它,但在這種情況下確實如此。
在有效體系結構中:選擇每個條目(發布,調試)並構建並按退格鍵。 它應該工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.