【发布时间】:2010-09-08 22:09:05
【问题描述】:
我安装了今天刚刚发布的 iOS 4.1。
我从 AppStore 将我的应用下载到手机并运行它,但它无法获取 GPS 位置。
我下载了新的 XCode 和 4.1 SDK 并在 4.1 下重新编译,应用在 4.1 iPhone 上运行良好。
未更改任何代码。
为什么在 4.0 下编译的应用程序在 4.1 下不工作。
BASE SDK 是 4.0
IOS 部署目标:iOS 4.0
新设置
BASE SDK 是 4.1
IOS 部署目标:iOS 4.0
有点烦我需要重新提交,即使我没有更改任何内容......又一周的黑洞应用提交!
在 3 次尝试部署到 App Store 并大量剖析项目文件后,我发现了以下内容:
BUILD 和 TARGET 的部署目标不同 并且 base sdk 只在 Debug in Target 中设置
我让 Debug/Release 可以在我的手机上运行,因此假设如果 relelase 和 Distribution 具有相同的设置,那么 App Store 中应该可以运行。
但即使在设置并重新部署到应用商店后,它也无法工作(应用已加载且没有 GPS)。
我尝试删除配置文件,但没有成功。
一夜之间手机断电,当我重新启动应用程序时。
所以不确定这是否是所有 3 个的奇怪组合。
iOs Deployment Target (IPHONEOS_DEPLOYMENT_TARGET = 4.0;): iOS 4.0
BASE SDK(SDKROOT = iphoneos4.1;): iOS 4.1
for BUILD (Debug/Release/Distribution) (Right click on top level in tree YourApp >> Info menu)
and TARGET (Debug/Release/Distribution) (Right click on Target >> YourApp >> Info menu)
将 4.0 上的应用发布到应用商店。 4.1 发布 升级我的应用程序来检查它。 应用程序运行正常,但在许多屏幕中都无法获取 GPS。 在 4.1 下重新编译,没有代码更改,发布到存储,仍然无法工作。
调试版本在 4.1 上运行正常
发布没有
发行版(来自应用商店的版本)版本没有。获取 GPS 失败。
剖析项目文件,看看有什么不同。
发现
Target 和 Build 设置不相同。
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
设置为 BUILD 以进行调试/发布和分发
但是
对于 TARGET,它被设置为 DEBUG
IPHONEOS_DEPLOYMENT_TARGET = 3.0;
在 RELEASE 和 DEBUG 中根本没有设置
我删除了构建目录并设置了
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
for BUILD (Debug/Release/Distribution) (Right click on top level in tree YourApp >> Info menu)
and TARGET (Debug/Release/Distribution) (Right click on Target >> YourApp >> Info menu)
重建 发布版本现在可以工作,所以必须希望在 Distribution 中设置相同的内容。 发布到应用商店。两次都在2天内获得批准。 试过了。应用程序运行但没有 GPS。 尝试删除配置文件,没有运气。 一夜之间手机没电了,所以重启了。 尝试了该应用程序并且它有效。 所以也许
自己检查一下。 将 YourApp.xcodeproj 复制到安全位置。 重命名扩展名不再 .xcodeproj 这将成为一个文件夹。 打开它会有3个文件 构建设置在 project.pbxproj
滚动到底部: 寻找 /* 开始 XCConfigurationList 部分 */
请注意,有两个部分用于构建,一个用于目标
/* Build configuration list for PBXNativeTarget
...
/* Build configuration list for PBXProject
如果您完成了分发构建,那么每个版本都将具有调试/发布和分发设置
1D6058940D05DD3E006BFB54 /* Debug */,
1D6058950D05DD3E006BFB54 /* Release */,
C55BCF5811ADCA470050ABDB /* Distribution */,
24 位十六进制数字指向文件中更上方的部分。 如果您将 3 个部分(并排放置在一张表中)放置,您可以看到差异。
只有差异 目标(调试、发布和分发)
1D6058940D05DD3E006BFB54 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
....
IPHONEOS_DEPLOYMENT_TARGET = 3.0;
....
};
name = Debug;
};
未设置发布/分发
BUILD(为调试/发布/分发设置)
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
SDKROOT = iphoneos4.1;
【问题讨论】:
-
您应该已经下载了 4.1 SDK 的 GM 版本,以便在提前一周上传时进行测试。
-
你在不止一台 4.1 设备上试过这个吗?
-
请提供更多调试信息。
-
我和提问者有同样的问题。
-
您能否在 App Store 之外重现该问题?