簡體   English   中英

Xcode 5.1 - 沒有要編譯的體系結構(ONLY_ACTIVE_ARCH = YES,活動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).

這些是我的目標構建設置:

Xcode目標構建設置

我嘗試將“Build Active Architecture”更改為No,並將“i386”添加到“Valid Architectures”,但遺憾的是兩者都沒有。 謝謝你的任何建議!

你需要做的只是將ONLY_ACTIVE_ARCH設置為NO (至少對我ONLY_ACTIVE_ARCH )。 下面是它的截圖:


編輯:

據我所知( 如果出現問題,請指出,謝謝 ),如果將ONLY_ACTIVE_ARCH設置為YES ,則表示Xcode僅針對活動架構(指當前在Xcode中處於活動狀態的設備)構建。 似乎Xcode的默認設置是將Debug設置為YES ,因此當您只想為連接到Mac的特殊設備構建時,它不會為其他體系結構構建二進制文件。

無法構建的原因可能是,該項目不支持您連接的設備的體系結構。 因此,最佳解決方案是為您的設備添加正確的架構。 以下是支持的體系結構和設備列表:

  • ARMv8 / ARM64: iPhone 6iPhone 5siPad AirRetina iPad Mini
  • ARMv7s: iPhone 5iPhone 5ciPad 4
  • ARMv7: iPhone 3GSiPhone 4iPhone 4SiPod 3G/4G/5GiPadiPad 2iPad 3iPad Mini
  • ARMv6: iPhoneiPhone 3GiPod 1G/2G

那么為什么“將ONLY_ACTIVE_ARCH設置為NO有效呢? 因為設備仍然可以運行為您添加的所有體系結構構建的二進制文件(傳遞構建),但會丟失一些性能。 這只是一個快速的解決方案,但不是最好的。


注意 :您添加的架構越多,生成的二進制文件就越大。 因此,為您的項目選擇正確的架構是件好事。 ;)

升級到XCode 5.1后,我收到了同樣的錯誤消息。 你在使用CocoaPods嗎? 如果是這樣,這應該解決問題:

  1. 從Xcode左窗格中的工作區中刪除“Pods”項目並關閉Xcode。
  2. 從命令行運行“pod install”以重新創建“Pods”項目。
  3. 重新打開Xcode並確保“Pods”項目和您自己的項目的構建設置中的“Build Active Architecture Only”設置為“No”。
  4. 清潔和建造。

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)
  • 基礎SDK: 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

我必須將以下i386x86_64添加到Valid Architectures 我正在運行Xcode 7.2並以iOS 8+為目標。 我已經在那里安裝了armv7armv7sarm64 ,這在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

在此輸入圖像描述

這導致了依賴性分析錯誤。

更改設備類型立即解決了問題:

在此輸入圖像描述

我不知道為什么會這樣,但這是一個非常快速的答案,它讓我在后台擺弄了很多東西,並立即讓應用程序正在測試。 我永遠不會想到這可能是一件事,而這么簡單的東西會解決它,但在這種情況下確實如此。

我發現有必要手工輸入架構名稱:

在此輸入圖像描述

我不知道為什么這是必要的,即為什么這些值不是從Xcode本身繼承的。 但是一旦我這樣做,問題就消失了。

在有效體系結構中:選擇每個條目(發布,調試)並構建並按退格鍵。 它應該工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM