Phonegap/Xcode iPad 1 个应用存在问题

Phonegap/Xcode issues with iPad 1 app

我在让 iPad 应用程序在 iPad 1 上运行时遇到问题。

我已经在我的 iPad 2 上成功部署和安装了该应用程序,但是在 iPad 1 上安装该应用程序不起作用。该应用程序似乎已安装,但完成后图标消失了。重新启动 iPads 后,图标重新出现,但是当打开应用程序时,启动画面弹出,然后应用程序关闭,没有出现任何错误。

该应用程序是一个使用 phonegap 创建的简单 HTML5 和 JS 应用程序,我目前有其他 iPad 1 的 运行 这个应用程序。 iPad 1 的 运行 该应用程序当前由外部开发人员打包,该开发人员已经消失,但我正在使用他的源代码。我被告知 phonegap 从 3.5 版本开始放弃了 ios 5.1 支持,所以我也尝试将我的 phonegap 版本回滚到最新版本的 3.4。我也尝试过一些设置,例如构建架构。

我的应用程序供企业内部使用,不适用于 App Store。


有用信息:

iPad iOS 版本:5.1.1 (9B206)

Phonegap 版本:3.4.0-0.20.0 / 4.1.2-0.22.12

Xcode版本:6.1

XcodeiOS部署目标:5.1.1

架构:标准 - $(ARCHS_STANDARD)

有效架构:armv6、armv7、arm64

应用程序是一个基本的 HTML5 应用程序

我正在使用我的 iPad 1

上目前完全可用的实时版本的源代码

我也尝试过:

架构:$(ARCHS_STANDARD_32BIT)

有效架构:armv6、arm64

错误:没有可编译的体系结构(ARCHS=,VALID_ARCHS=armv6 arm64)。

架构:$(ARCHS_STANDARD_32BIT) armv6

有效架构:$(ARCHS_STANDARD_32BIT) armv6

导出应用程序时导致 Xcode 崩溃 - 在存档阶段有 3 个依赖项分析警告


调试器输出:

2015-01-12 16:50:27.316 MyApp[227:707] 多任务处理 -> 设备:是,应用程序:是 dyld:惰性符号绑定失败:找不到符号:_objc_setProperty_nonatomic_copy 引用自:/var/mobile/Applications/305DAE80-626C-4CD9-AB47-0139F97B731D/MyApp.app/MyApp 预计在:/usr/lib/libobjc.A.dylib

dyld:找不到符号:_objc_setProperty_nonatomic_copy 引用自:/var/mobile/Applications/305DAE80-626C-4CD9-AB47-0139F97B731D/MyApp.app/MyApp 预计在:/usr/lib/libobjc.A.dylib


如果能帮助解决这个问题,我们将不胜感激。如果您需要任何其他信息,请告诉我。

尽管任何帮助论坛(包括苹果开发者论坛)都没有回复,但我自己设法解决了这个问题。所以我会尝试给出一个 noob-friendly 答案,因为我觉得这是严重缺乏的东西。

iPad 1 的最大 iOS 版本为 5.1.1,不支持 64 位应用程序。

要在 phonegap 应用程序上构建 iOS 5.1.1+ (iPad 1) 兼容性,请设置项目的部署目标,并将目标设置为 5.1.1(您需要手动输入)。 (通过单击下图中右侧的下拉菜单在项目和目标之间切换)

然后单击上图左侧的“项目导航器”图标。在侧边栏中,您应该有项目文件,包括 config.xml、www 文件夹等。在此列表中,您应该会看到一个 CordovaLib.xcodeproj 文件夹。

此项目文件默认部署目标为 iOS 6.0,将目标更改为 iOS 5.1 将使静态库 CordovaLib 与您的 iPad 1 兼容。

现在,开始构建和归档应用程序。由于 iPad 1 不支持 64 位应用程序,在构建设置下的架构选项中使用 $(ARCHS_STANDARD) 将导致您的应用程序无法在 iPad 1.

要修复此问题,请双击架构上的 'Standard' 标签删除该选项,并将“$(ARCHS_STANDARD)”替换为 armv7.

现在将选项 'Build Active Architecture Only' 设置为 。您现在应该可以将 'Valid Architectures' 设置保留为 $(ARCHS_STANDARD) -(将显示为 armv7 arm64)。此设置将强制应用构建为 armv7。允许应用程序使用 arm64(64 位)构建将导致应用程序在分发时无法 download/install。

您的应用现在应该安装在 iPad 1.


如果您对应用程序图标在安装后消失但在重新启动 iPad 1 后重新出现有任何问题,请确保您的项目文件中的包标识符与 [=48] 中的包标识符相同=] 在项目的主文件夹中。

这是由于这两个文件中的包标识符不匹配造成的。