簡體   English   中英

是否可以在Xcode 5上安裝iOS 6 SDK?

[英]Is it possible to install iOS 6 SDK on Xcode 5?

Xcode 5有一個首選項窗格,允許用戶下載iPhone 6.1模擬器,但我找不到允許下載iOS 6 SDK的地方,因此在使用Xcode 5進行開發時無法將活動SDK設置為iOS 6 。是否有允許Xcode 5安裝iOS 6 SDK的解決方法?

編輯:

現在,Xcode 5通常可用,並且允許您下載SDK的先前版本,因此不再需要解決方法。

在此輸入圖像描述

編輯:從2014年2月1日開始,Apple將不再接受iOS7之前的應用程序提交到App Store。 因此,盡管這種技術仍然有效,但它對大多數讀者來說並沒有用。


是的,這很好。 我仍然使用iOS 4.3為一個項目構建(自我們更新以來已經有一段時間了;但他們仍然在iOS 6發布后接受它),而且我目前使用Xcode 5構建了10.5個應用程序。

請參閱如何將Xcode指向舊的SDK,以便它可以用作“基礎SDK”? 有關如何設置的詳細信息。 每次升級時,您都可以使用我的fix-xcode腳本為您鏈接所有內容。

唯一的技巧是獲取舊的SDK。 如果你沒有它們,你通常需要下載舊版本的Xcode(仍然可以在developer.apple.com上找到 ),打開安裝程序包,然后尋找你需要的SDK。

SDK可以在安裝程序包中找到:

Xcode.app/Contents/Developer/Platforms/

當我更新到xcode 5時它也運行了同樣的問題它刪除了舊的sdk。 但我從另一台計算機上獲取了舊版SDK的副本,您可以從以下鏈接下載。

http://www.4shared.com/zip/NlPgsxz6/iPhoneOS61sdk.html
(www.4shared.com測試帳號test@yopmail.com/test)

有兩種方法可以使用。

1)將此文件夾解壓縮並粘貼到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs並重新啟動xcode。

但是如果你更新xcode,這可能會被Xcode刪除。

2)另一種方法是解壓縮並粘貼到你想要的位置,然后轉到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs並在此處創建一個符號鏈接,這樣即使SDK仍然保持相同你更新Xcode。

我做了另一項更改,Build Setting> Architectures> standard(而不是64),因此列出了Deployment Target的所有版本

如果您只想更改部署目標,則無需下載zip。

這是一些截圖。 在此輸入圖像描述在此輸入圖像描述

是的,我今天剛解決了這個問題。

  1. 在您或您朋友的舊Xcode目錄中找到SDK文件,如iPhoneOS6.1.sdk。
  2. 復制並將其放入Xcode 5目錄:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs。

在此輸入圖像描述

然后你可以選擇如下的SDK:

在此輸入圖像描述

希望這對你有所幫助。

查找並下載舊SDK。 較舊的SDK可在此處​​找到

我已將xcode.app目錄復制為Xcode_4.6.3.app。

現在,您可以在兩個xcode版本中進行測試和調試。 您必須從相應的文件夾運行它們或在桌面上創建快捷方式。 從命令行構建時,將參數設置為iPhoneOS6.1而不是iPhoneOS7.0

這在Xcode5和iOS中對我很有用。

轉到Xcode5的SDK目錄。 它通常位於:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

像這樣添加舊SDK的符號鏈接:

sudo ln -s /Applications/Xcode_4.6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk iPhoneOS6.1.sdk

或者更准確地從命令行中的任何位置,

sudo ln -s /Applications/Xcode_4.6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk

您可以下載舊版SDK並將其安裝在其中

Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

夾。 注銷+登錄只是為了確保更改生效,您應該在新的XCode中看到舊的SDK

只需添加,您實際上可以使用Xcode 5本身下載舊版本的模擬器 - 只需轉到首選項,您就可以在下載中找到它們:

在此輸入圖像描述

  • 從Apple開發中心下載Xcode 4.6.x: https//developer.apple.com/downloads/index.action
  • 在Applications文件夾中創建一個名為Xcode4的文件夾,然后將下載的dmg拖放到那里。
  • 打開終端窗口

     $sudo cp -R /Applications/Xcode4/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/ 
  • 由於您在系統文件夾中,因此系統會提示您輸入密碼

  • 打開Xcode 5,您現在應該看到兩個SDK

對我來說最簡單的解決方案:

  1. 例如,在較舊版本的xcode中找到較舊的SDK,例如“iPhoneOS6.1 sdk”。 如果還沒有,可以從Apple Developer服務器上獲取此地址: https//developer.apple.com/downloads/index.action? name = Xcode當你打開xcode.dmg時,你可以通過打開它來找到它Xcode.app(右擊和“顯示內容”)並轉到目錄/開發人員/平台/ iPhoneOS.platform / Developer / SDKs / iPhoneOS6.1 sdk 在此輸入圖像描述
  2. 簡單復制文件夾iPhoneOS6.X sdk並將其粘貼到xcode.app中
    • 右鍵單擊Applications文件夾中的xcode.app。
    • 轉到目錄/開發人員/平台/ iPhoneOS.platform / Developer / SDKs /
    • 只需粘貼在這里

在此輸入圖像描述

  1. 關閉您的xcode應用程序,然后重新打開它。

要在模擬器上測試iOS 6中的應用程序: - 只需在活動的sheme中選擇iOS 6.0即可。 在此輸入圖像描述

要在iOS 6中構建您的應用程序,因此您的應用程序的設計將是iOS 7上的舊設計: - 在目標中選擇iOS6.1 - 基本SDK

在此輸入圖像描述

請注意:當您更改目標中的基礎SDK時,iOS 7.0將不再可用於在模擬器上構建!

可以做到這一點 ,但不是真的有必要

這該怎么做

傑森李得到了答案。 安裝xCode時,我更喜歡保留以前的安裝而不是替換它們。 所以我在我的安裝文件夾中有這些

在此輸入圖像描述

所以/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs包含不同的sdks。 (將Xcode.app替換為正確的數字)將以前的sdks復制到

/Applications/Xcode 3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

復制之后,這是我的文件夾。

在此輸入圖像描述

現在重新啟動xCode,您可以將以前版本的sdks設置為基本sdk。

為什么沒有必要

參考Apple Documentaion

要將特定SDK用於Xcode項目,請在項目的構建設置中進行兩項選擇。

  1. 選擇部署目標

    這標識了您的軟件可以運行的最早的操作系統版本。

  2. 選擇基本SDK

    您的軟件可以使用操作系統版本中可用的功能,包括與基本SDK相對應的功能。 默認情況下,Xcode將此設置為Xcode支持的最新操作系統。

規則是使用latest作為基本SDK並將部署目標設置為應運行的最小版本應用程序

例如,您可以將iOS 7用作基本sdk,並將iOS 6設置為部署目標。 在iOS 6模擬器上運行以測試它在iOS 6上的工作方式。如果模擬器列表不可用,請安裝模擬器。

在此輸入圖像描述

另外,您可以無條件地使用iOS 6以上的功能。並且有條件地,您可以支持iOS 7的新功能,以支持新版本,同時支持以前的版本。

這可以使用弱鏈接類弱鏈接方法函數符號來完成

https://developer.apple.com/library/ios/documentation/developertools/conceptual/cross_development/Using/using.html#//apple_ref/doc/uid/20002000-SW3

弱鏈接

假設您在Xcode中將部署目標(最低要求版本)設置為iOS6,將目標SDK(最大允許版本)設置為iOS7。 在編譯期間,編譯器會弱連接iOS7中引入的任何接口,同時強烈鏈接早期接口。 這將允許您的應用程序繼續在iOS6上運行,但仍然可以利用更新的功能。

這里的其他答案也是正確的,但我發現以下步驟是最簡單的:

只需從開發中心鏈接下載Xcode 4.6.3,該鏈接顯示“正在尋找舊版本的Xcode?” (目前指向此處 )並安裝dmg。

然后在終端中,將SDK文件復制到:

cp -R /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

最后,重新啟動Xcode,你就完成了。

我的應用程序無縫轉換到Xcode 5,因為它仍然可以使用您在項目中設置的原始iOS部署目標(在我的情況下為5.1)進行構建。 如果新的SDK不會導致一些難以解決的問題,那么為什么不使用它來構建呢? 當然,引擎蓋下有很多改進。

例如,我更喜歡使用Xcode 5而不是Xcode 4.6.3。 為什么? 我將獲得更多的電池壽命,因為Xcode 5中的文本/代碼區域的UI滾動不再咀嚼整個CPU線程。

如其他答案中所述,將6.1 SDK鏈接到X​​code 5是一步。 但是,這仍然無法解決在iOS 7上運行新的UI元素,視圖控制器是全尺寸等問題。

本回答所述,還需要在iOS 7上將UI切換為傳統模式:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"UIUseLegacyUI"];
[[NSUserDefaults standardUserDefaults] synchronize];

注意:這是一個未記錄的密鑰,不推薦用於App Store版本!

另外,根據我在設備上測試的經驗,我發現它只在我第二次啟動應用程序時工作,即使我在應用程序啟動時很早就運行了代碼,在+[AppDelegate initialize] 使用Xcode 4.6構建的版本也存在細微差別。 例如,透明導航欄的行為不同(導致視圖為全尺寸)。

但是,由於Xcode 4.6.3在Mavericks上崩潰(至少對我而言,請參閱rdar:// 15318883 ),這至少是繼續使用Xcode 5進行調試的解決方案。

我按照其他答案的描述下載了XCode 4並將iOS 6.1 SDK從它帶到了XCode 5。 然后我還安裝了iOS 6.1 Simulator(它在首選項中可用)。 我還在項目設置中將Base SDK切換到iOS 6.1。

在所有這些操作之后,具有6.1 base sdk的項目在iOS 7 Simulator中以comp comp模式運行。

從2月1日起,Apple將拒絕僅針對iOS6或更低版本構建的應用程序。 這也是Apple的官方通訊 最好開始為iOS7構建。

澄清我的陳述:如果您為iOS6或更低版本構建,Apple將拒絕您的應用。 如果你為iOS7構建並降低一切都很好,這意味着:

  1. 你必須使用xcode5
  2. 你應該至少在iOS7上部署。

Apple電子郵件的內容非常清楚

“確保您的應用程序與iOS 7中的創新技術無縫協作。從2月1日開始,提交到App Store的新應用程序和應用程序更新必須使用Xcode 5和iOS 7 SDK構建。”

我目前安裝了Xcode 4.6.3和5.0。 我使用以下bash腳本將5.0鏈接到舊版本的SDK:

platforms_path="$1/Contents/Developer/Platforms";
if [ -d $platforms_path ]; then
    for platform in `ls $platforms_path`
    do
        sudo ln -sf $platforms_path/$platform/Developer/SDKs/* $(xcode-select --print-path)/Platforms/$platform/Developer/SDKs;
    done;
fi;

你只需要為它提供.app的路徑:

./xcode.sh /Applications/Xcode-463.app

暫無
暫無

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

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