无法使用 iOS 4.3.5 设备在 Xcode 4.1 中构建源代码

Posted

技术标签:

【中文标题】无法使用 iOS 4.3.5 设备在 Xcode 4.1 中构建源代码【英文标题】:Cannot build source code in Xcode 4.1 with iOS 4.3.5 device 【发布时间】:2011-09-21 09:15:29 【问题描述】:

我一直在 Xcode 4.1 中使用 ios 4.3.5 的 iphone 进行开发。没有版本不匹配问题就很好。今天,我连接了另一部具有相同版本 iOS (4.3.5) 的 iPhone,但我无法在设备上构建源代码。组织者窗口说,

“熙的 iPhone”上的 iOS 版本不匹配任何 使用此安装支持开发的 iOS 版本 iOS SDK。请将设备恢复到列出的操作系统版本 下面,或者更新到最新版本的iOS SDK;这是 在这里可用。

我知道如果我更新 Xcode 或降级 iPhone,它会得到解决。但是,如果有的话,我想知道其他选择。我真的很想知道为什么有些设备可以,而有些则不行。

【问题讨论】:

【参考方案1】:

您可以为 iPhoneOS/iPhoneSimulator 平台添加额外的 SDK/符号:

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/[insert ios version folder here]

/Developer/Platforms/iPhoneOS.platform/DeviceSupport/[insert ios version folder here]

我所做的是下载旧的 xcode 和新的 beta xcode,将它们安装到 /Developer-3.2.3/ 之类的位置,然后将上面的文件夹从 /Developer-3.2.3 符号链接/别名到 /Developer。

这让我的 4.1 xcode 在 iOS5.0 手机上测试!上面的目录路径可能不准确,因为我是用手机写的,但它们接近那个。当我回到我的电脑时,我会确保这些目录是正确的。

对于模拟器版本,它将是:

/Developer/Platforms/iPhoneSimulator.platform/SDK/...

编辑(回到我的电脑):

这是我的开发者目录的样子:

[ 17:49 root@MacBookPro / ]# ll
drwxrwxr-x+ 44 root      admin      1.5K Sep 20 12:37 Applications
drwxrwxr-x  15 root      admin      510B Sep 20 13:27 Developer
drwxrwxr-x@ 17 root      admin      578B Sep 20 13:12 Developer-3.2.4
drwxr-xr-x@ 10 root      admin      340B Sep 20 13:54 Developer-3.2.5
drwxrwxr-x@ 18 root      admin      612B Sep 20 13:44 Developer-4.2-beta7

[ 17:46 root@MacBookPro /Developer/Platforms/iPhoneOS.platform/Developer/SDKs ]# ll
lrwxr-xr-x  1 root  wheel    75B Sep 20 13:53 iPhoneOS3.2.sdk -> /Developer-3.2.4/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.2.sdk
drwxr-xr-x  8 root  wheel   272B Sep 20 13:26 iPhoneOS4.3.sdk
lrwxr-xr-x  1 root  wheel    79B Sep 21 12:50 iPhoneOS5.0.sdk -> /Developer-4.2-beta7/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk

[ 17:46 root@MacBookPro /Developer/Platforms/iPhoneOS.platform/Developer ]# cd ../../DeviceSupport/
[ 17:46 root@MacBookPro /Developer/Platforms/iPhoneOS.platform/DeviceSupport ]# ll
drwxrwxr-x  5 root      admin   170B Sep 20 13:26 3.0
drwxrwxr-x  5 root      admin   170B Sep 20 13:26 3.1
drwxrwxr-x  5 root      admin   170B Sep 20 13:26 3.1.2
drwxrwxr-x  5 root      admin   170B Sep 20 13:26 3.1.3
drwxrwxr-x  5 root      admin   170B Sep 20 13:26 3.2
drwxrwxr-x  5 root      admin   170B Sep 20 13:26 3.2.1
drwxrwxr-x  5 root      admin   170B Sep 20 13:26 3.2.2
drwxrwxr-x  5 root      admin   170B Sep 20 13:26 4.0
drwxrwxr-x  5 root      admin   170B Sep 20 13:26 4.0.1
drwxrwxr-x  5 root      admin   170B Sep 20 13:26 4.0.2
drwxrwxr-x  5 root      admin   170B Sep 20 13:26 4.1
drwxrwxr-x  5 root      admin   170B Sep 20 13:26 4.2
drwxrwxr-x  5 root      admin   170B Sep 20 13:26 4.3
lrwxr-xr-x  1 root      admin    77B Sep 21 12:54 5.0 (9A5313e) -> /Developer-4.2-beta7/Platforms/iPhoneOS.platform/DeviceSupport/5.0 (9A5313e)/
lrwxr-xr-x  1 root      admin    13B Sep 21 12:54 Latest -> 5.0 (9A5313e)
[ 17:46 root@MacBookPro /Developer/Platforms/iPhoneOS.platform/DeviceSupport ]#

为此,您需要安装具有不同 iOS SDK 的不同版本的 Xcode。为了实现上述目的,我只安装了 Xcode 3.2.4、3.2.4、4.1 和 4.2(测试版)。我使用 4.1 作为我的主要/Developer 目录。

将每个 Xcode 安装到单独的位置后,您可以通过以下方式将 Symbols/SDKs 目录从非主 Xcode 安装符号链接到您的主安装路径:

/Developer/Platforms/iPhoneOS.platform/DeviceSupport
[ 17:54 root@MacBookPro /Developer/Platforms/iPhoneOS.platform/DeviceSupport ]# cd /Developer/Platforms/iPhoneOS.platform/DeviceSupport
[ 17:54 root@MacBookPro /Developer/Platforms/iPhoneOS.platform/DeviceSupport ]# ln -sf "/Developer-4.2-beta7/Platforms/iPhoneOS.platform/DeviceSupport/5.0 (9A5313e)/" "5.0 (9A5313e)"
[ 17:54 root@MacBookPro /Developer/Platforms/iPhoneOS.platform/DeviceSupport ]# cd ../Developer/SDKs
[ 17:54 root@MacBookPro /Developer/Platforms/iPhoneOS.platform/DeviceSupport ]# ln -sf "/Developer-3.2.4/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.2.sdk" "iPhoneOS3.2.sdk"
[ 17:54 root@MacBookPro /Developer/Platforms/iPhoneOS.platform/DeviceSupport ]# ln -sf "/Developer-4.2-beta7/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk" "iPhoneOS5.0.sdk"

在你的主要/Developer/Platforms/iPhoneOS.platform/DeviceSupport/Developer/Platforms/iPhoneOS.platform/Developer/SDKs 目录中对每个SDK/Symbol 目录进行符号链接后,打开Xcode,你应该能够看到你的设备并使用它来测试构建等。


编辑 2(命令解释):

ll 是我为ls -l 命令创建的alias

[ 18:07 root@MacBookPro / ]# alias
cd..='cd ..'
cls='clear'
df='/usr/local/bin/df.nawk'
du='du -L'
l='ls -lsG'
ldir='ls -d */'
ll='ls -lhG'
ls='ls -G'
lsdir='ls -d */'
text='open -a TextWrangler'
v='ls -lhG'
vi='vim'
vu='vim'
vv='du . --max-depth=1 -L | sort -n | cut -f2 | xargs -d "\n" du -sh -L'
xcode='open -a xcode'

ln(符号链接)是创建快捷方式/别名的命令。 (非常基本的)语法是:

 [ 18:07 root@MacBookPro / ]# ln -s [TARGET_PATH] [LINK_NAME]

Here is the ln man page

Here is the ls man page

【讨论】:

感谢您的回答。您能否更具体地告诉我有关符号链接/别名部分的信息?我仍然想知道为什么有些设备没有这些补救措施就可以工作。 @tao 更新了答案。如果有任何不清楚或需要进一步解释,请告诉我。 再次感谢。但是,我仍然想知道为什么有些设备不安装其他版本的 SDK 就可以正常工作。 不幸的是,因为每个 xcode 版本只包含特定几个 iOS 版本的符号/SDK。 但是,就我而言,两个设备的 iOS 版本是相同的。我认为设备的型号也与这个问题有关。没有安装 Symbols/SDK 的 iPhone 4G 很好,但 iPhone 3G 没有。无论如何感谢您的帮助 chown !!!

以上是关于无法使用 iOS 4.3.5 设备在 Xcode 4.1 中构建源代码的主要内容,如果未能解决你的问题,请参考以下文章

XCode 5.1 Beta 4 无法识别 iOS 7.1 Beta 4 测试设备

iOS - 无法在设备上构建,但在 Xcode 4.6 上构建模拟器

iPod 设备在 Xcode 中无法识别

Xcode 5.1 无法使用 Ios 7.1.1 连接到我的 Iphone 5S

Xcode 12:无法在 iOS 设备上启动远程服务“com.apple.debugserver”

在没有 XCODE 5 的运行 iOS7 的设备上测试 iOS 6 应用程序