我一直在开发一款用于编辑照片的应用,我想要一个照片应用的扩展程序。 enxtension在模拟器上完美运行,没有任何问题。
但是当我尝试在iPhone 6中运行它时,我遇到了两个问题:
错误:嵌入式二进制文件未使用与证书相同的证书进行签名 父应用。验证嵌入式二进制目标的代码签名设置 匹配父应用程序。嵌入式二进制签名证书: - (Ad Hoc 代码签名)父App签名证书:iPhone开发人员:Mauro Vime(------------------)
我重新设置了开发配置文件,以检查是否用于开发,而不是用于Ad Hoc,但我仍遇到同样的问题。
事件标识符: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函数,所以他们不执行任何代码但问题仍然存在。
有没有人遇到过这个问题并有解决方案?
答案 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没有错,但是当主机应用程序启动我的扩展时,它是一个需要映射到内存的大型静态库。删除了,错误消失了。