ios8照片编辑扩展问题

时间:2014-10-14 14:32:48

标签: ios objective-c iphone photo

我一直在开发一款用于编辑照片的应用,我想要一个照片应用的扩展程序。 enxtension在模拟器上完美运行,没有任何问题。

但是当我尝试在iPhone 6中运行它时,我遇到了两个问题:

  1. 供应配置文件的问题。我知道,对于扩展,我需要一个新的AppID(名为app.myapp.com.extension,主AppID是app.myapp.com)和新的配置文件。我使用新的AppID创建了2个新的配置步骤(一个用于开发,另一个用于分发),但是当我尝试在设备上运行它时出现此错误:
  2.   

    错误:嵌入式二进制文件未使用与证书相同的证书进行签名   父应用。验证嵌入式二进制目标的代码签名设置   匹配父应用程序。嵌入式二进制签名证书: - (Ad Hoc   代码签名)父App签名证书:iPhone开发人员:Mauro   Vime(------------------)

    我重新设置了开发配置文件,以检查是否用于开发,而不是用于Ad Hoc,但我仍遇到同样的问题。

    1. 所以我尝试从应用程序中导出ipa并运行它。该应用程序运行完美但扩展程序只显示黑色视图,而不是包含照片的视图。然后我检查了手机的崩溃日志,看到了这个:
    2.   

      事件标识符:9E578D78-FAB7-419E-AB35-7BA7B0821AFA   CrashReporter密钥:ae6bdea47a4e64b09a8fb7fa8599b5e23ceb5311硬件   型号:iPhone7,2过程:扩展名[2598]路径:
        /private/var/mobile/Containers/Bundle/Application/----------/------------/PlugIns/extension.appex/extension   标识符:app.myapp.com.extension版本:1   (1.0)代码类型:ARM-64(Native)父进程:
        launchd [1]日期/时间:2014-10-14 01:29:21.482 +0200发布   时间:2014-10-14 01:29:16.170 +0200操作系统版本:iOS   8.1(12B407)报告版本:105异常类型:EXC_CRASH(SIGABRT)异常子类型:LAUNCH_HANG异常消息:   扩展花了太多时间来初始化突出显示的线程:0   Backtrace不可用未知线程与ARM线程状态崩溃   (64位):       x0:0x0000000000000000 x1:0x0000000000000000 x2:0x0000000000000000 x3:0x0000000000000000       x4:0x0000000000000000 x5:0x0000000000000000 x6:0x0000000000000000 x7:0x0000000000000000       x8:0x0000000000000000 x9:0x0000000000000000 x10:0x0000000000000000 x11:0x0000000000000000 x12:0x0000000000000000   x13:0x0000000000000000 x14:0x0000000000000000 x15:   0x0000000000000000 x16:0x0000000000000000 x17:0x0000000000000000   x18:0x0000000000000000 x19:0x0000000000000000 x20:   0x0000000000000000 x21:0x0000000000000000 x22:0x0000000000000000   x23:0x0000000000000000 x24:0x0000000000000000 x25:   0x0000000000000000 x26:0x0000000000000000 x27:0x0000000000000000
        x28:0x0000000000000000 fp:0x0000000000000000 lr:   0x0000000000000000       sp:0x000000016fdb3b68 pc:0x00000001200f9000 cpsr:0x00000000二进制图像:0x1200f8000 - 0x12011ffff dyld arm64    / usr / lib中/ dyld的

      这里说应用程序在8.1设备中运行,但我也在8.0.2 iOS中尝试过,出现了同样的问题。看到消息之后:"扩展花了太多时间来初始化",我刚刚清除了viewDidLoad和viewWillAppear函数,所以他们不执行任何代码但问题仍然存在。

      有没有人遇到过这个问题并有解决方案?

3 个答案:

答案 0 :(得分:0)

可能是因为您没有使用64位架构(扩展所需)吗?请参阅Apple的App Extension Programming Guide中的“有关64位架构的注意事项”。

答案 1 :(得分:0)

确保架构有效架构包含 arm64 仅构建活动架构 用于使用的配置(调试/发布)。

我们将 Build Active Architecture Only 设置为Yes,因此Jenkins仅构建了armv7二进制文件(尽管xcode根据连接的设备构建了正确的二进制文件)。似乎armv7应用程序在arm64设备上运行良好,但armv7应用程序扩展无法加载奇怪的错误"扩展程序花费了太多时间来初始化" 。在修复 Build Active Architecture Only 设置之后,构建了fat二进制文件(armv7 + arm64)并且扩展可以正常工作。

答案 2 :(得分:0)

我遇到了两个问题:

对于代码签名问题,我认为Xcode中存在与添加应用扩展目标相关的错误。这最初搞砸了我,我最终得到了这个错误。 - 您需要在开发人员中心删除并重新生成应用程序和应用程序扩展的配置文件。 - 如果您使用应用程序组来共享信息,请从“功能”和“开发中心”中删除,然后在“功能”部分重新启用它。

对于LAUNCH_HANG问题,似乎有一个有限且小的(未记录的)窗口,以便在iOS放弃之前完全加载扩展。 - 查看链接到您的扩展程序的所有代码。不要包含你绝对不需要的任何东西。

我的特殊问题是我为扩展目标添加了podspec。我复制了我的主应用程序的目标,并没有意识到我在扩展程序中包含了Flurry。 Flurry没有错,但是当主机应用程序启动我的扩展时,它是一个需要映射到内存的大型静态库。删除了,错误消失了。