确认一下:"Cocoa-Touch framework"只支持iOS8或更高版本吗?

14 浏览
0 Comments

确认一下:"Cocoa-Touch framework"只支持iOS8或更高版本吗?

在使用Xcode 6.0.1中的嵌入式框架(dyld)并且部署目标小于iOS 8时,我遇到以下问题:

  • 构建成功
  • 运行时库加载错误

错误信息:

dyld: 库未加载:@rpath/ObjectiveLyricsTouch2.framework/ObjectiveLyricsTouch2        
引用自:/private/var/mobile/Containers/Bundle/Application/DC65ACA9-98E5-46CD-95F8-829D3416F6C0/musiXmatch.app/musiXmatch
原因:未找到图像
(lldb) 

0
0 Comments

在当前情况下,无法使用嵌入式框架在iOS 8以及iOS 7和之前的版本上分享代码。

解决方法是,在iOS 8上可以动态加载嵌入式框架来共享代码,但是在iOS 7上不支持嵌入式框架。可以使用dlopen方法来解决这个问题,通过在运行时动态加载框架来执行代码。但是,如果共享的代码在嵌入式框架中,就无法在iOS 7上执行,因为它是不可用的。如果只需要在iOS 8上使用共享代码,可以使用dlopen方法。如果需要在iOS 7上使用共享代码,需要将其包含在应用程序目标中,这样就不需要使用框架了,可以在两个目标中都包含共享代码。

从苹果的扩展指南中可以看到,如果你从主应用程序链接到一个嵌入式框架,即使在iOS 8.0之前的版本中,你仍然可以部署它,尽管在这些版本中不支持嵌入式框架。

因此,回答问题是:嵌入式框架在iOS 7上不可用,只能在iOS 8或更高版本上使用。

0
0 Comments

Confirmation: Cocoa-Touch framework是否只支持iOS8或更高版本?

原因:Embedded Framework的问题,需要设置架构和有效架构来解决。

解决方法:

1. 移除General > Embedded Binaries中的MyEmbeddedFramework.framework。

2. 移除Build Phases > Copy Phase "Frameworks"中的MyEmbeddedFramework.framework。

3. 清理构建文件夹。

4. 将MyEmbeddedFramework.framework移动到void Embedded Frameworks部分。

5. 现在你应该在General > Embedded Binaries和Build Phase > Embedded Frameworks中看到MyEmbeddedFramework.framework。

问题是Embedded Framework的问题,需要进行以下设置:

1. 将架构设置为默认。

2. 设置有效架构为armv7、armv7s和armv64。

这样就能够在以下设备和操作系统上运行应用程序:

- iPhone5S/iPhone5C iOS8

- iPhone5S/iPhone5C iOS7

- iPod 5th gen / iOS7

- iPhone4S / iOS7

- iPhone4 / iOS7

然而,在提交到iTunesConnect时,可能会出现以下错误:

- The MinimumOSVersion of framework "..." is invalid. The minimum value is iOS 8.0;

- Invalid Architecture: Apps that include and app extension and a framework must support arm64;

根据开发者的经验,即使动态框架可以在iOS7上运行,App Store Submission Validator仍会拒绝在iOS7上使用动态框架的应用程序。

在Xcode 6.1更新后,这种方法不再适用。继续返回错误: embedded dylibs/frameworks are only supported on iOS 8.0 and later.

根据开发者的经验,无法在构建为iOS7的情况下部署嵌入式框架。

如果将动态库重写为静态库,问题是否会解决?或者我的小组件会停止工作吗?

开发者的项目被拒绝了,是否有人知道是否会通过审核?如果不能,如何在支持iOS7的应用程序中使用嵌入式框架?

开发者的IPA在XCode提交阶段未能通过iTunes Connect验证。在这里有一个有趣的案例,可能对你有帮助。

如何在Xcode中使用dlopen()?有没有示例?可以参考这个链接:Deploying a Containing App to Older Versions of iOS。

你还记得在验证失败时使用的Xcode版本吗?如果不是最新版本,是否尝试过使用Xcode 6.1?根据报道,最新版本可能是可能的。

有关iOS 8.3 Beta对于应用扩展、嵌入式框架和ARM64的有趣注意事项:应用扩展需要一个arm64切片才能在64位设备上运行。如果尝试在64位设备上运行armv7切片,将无法工作。如果应用程序和应用扩展都链接到同一个框架,那么应用程序需要有一个arm64切片。

注意事项:该回答不是一个答案。

0
0 Comments

Confirmation: Cocoa-Touch framework是否只支持iOS 8或更高版本?

这个问题的出现是因为有人在使用Xcode 6创建iOS通用框架时遇到了问题,他们发现将Mach-O Type设置为Static Library后,可以顺利提交应用到iTunes Connect并且在iOS 7上运行。然而,也有人在验证iPA文件时遇到了错误,显示"found an unexpected Mach-O Header code :someNumbers.."。有些人表示在提交应用到App Store时没有遇到问题,而有些人则表示在iOS 6上无法正常工作。还某些情况下不确定Swift框架是否也适用于这种方法。

为了解决这个问题,可以尝试将Mach-O Type设置为Static Library,并验证iPA文件是否通过。同时,可以尝试在iOS 6设备上测试应用程序是否运行正常。对于Swift框架,需要进一步测试确认是否适用于这种方法。

希望以上信息对你有帮助,祝你的框架开发顺利!

0