你们最近有没有遇到一个问题, App 的开启时间非常长,就算是一个空项目,用了 swift, use_frameworks!, cocoapods - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
yellowV2ex
V2EX    iDev

你们最近有没有遇到一个问题, App 的开启时间非常长,就算是一个空项目,用了 swift, use_frameworks!, cocoapods

  •  
  •   yellowV2ex 2015 年 9 月 23 日 8949 次点击
    这是一个创建于 3864 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我之前偶尔会遇到启动( launch )时间过久,点了 App ,出现 launch image ,然后就卡住,因为 iOS9 出来了,应用启动时间不能超过 20 秒,所以会导致自动退出。

    我开始以为是第一屏的内容太多,在加载导致的,但当我建了一个空 project ,再试的时候,我完全觉得这确实是一个问题。

    情况跟 stackoverflow 上这个问题一模一样, http://stackoverflow.com/questions/31080284/ ,但我的载入时间比他还久。

    io 在模拟器和 debug 模式下,完全没有问题,但 release 的版本后在真机测试,开启时间非常的久, Console 里只有这一句一直重复:

    Sep 22 09:58:05 yellows-iPhone installd[4677] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName] Sep 22 09:58:07 yellows-iPhone installd[4677] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName] Sep 22 09:58:09 yellows-iPhone installd[4677] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName] Sep 22 09:58:11 yellows-iPhone installd[4677] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName] Sep 22 09:58:12 yellows-iPhone installd[4677] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName] Sep 22 09:58:14 yellows-iPhone installd[4677] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName] Sep 22 09:58:16 yellows-iPhone installd[4677] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName] Sep 22 09:58:19 yellows-iPhone installd[4677] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName] Sep 22 09:58:21 yellows-iPhone installd[4677] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName] Sep 22 09:58:23 yellows-iPhone installd[4677] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName] Sep 22 09:58:25 yellows-iPhone installd[4677] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName] Sep 22 09:58:27 yellows-iPhone installd[4677] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName] Sep 22 09:58:29 yellows-iPhone installd[4677] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName] Sep 22 09:58:31 yellows-iPhone installd[4677] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName] Sep 22 09:58:33 yellows-iPhone installd[4677] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName] Sep 22 09:58:35 yellows-iPhone installd[4677] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName] Sep 22 09:58:36 yellows-iPhone installd[4677] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName] Sep 22 09:58:38 yellows-iPhone installd[4677] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName] Sep 22 09:58:40 yellows-iPhone installd[4677] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName] Sep 22 09:58:42 yellows-iPhone installd[4677] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName] 

    我在用这个方法 http://stackoverflow.com/a/31573908/1297795 再调试,发觉 93%的时间花在了 load images 上,但我是个空项目,完全没有内容,那么 images 只能在 pods 里了,我找了一圈,就算是 pods 里所有的图片加起来,也就几十张, iOS 不可能载入几张图片就花了 20 秒,并且只是 release ,真机有问题。

    我重新做了 CertificateSigningRequest.certSigningRequest 和描述文件,因为我搜到有些问题说重新做一个证书就可以,但我试过还是不行,我又尝试新建一个 app id ,再走一遍,也是不行。

    我重新整理了一下流程,用 cocoapods 的人不少,我觉得这确实是一个问题,不少人会遇到。

    环境 Xcode 7 + iOS9 ,用 cocoapods ,并且 pod 里有 swift 的项目,并且用 use_frameworks!

    1. 新建一个空项目
    2. podfile文件,存在项目目录
    3. 在项目目录的终端运行 pod install
    4. 打开 workspace 文件
    5. Scheme 里把 build configuration 设为 release
    6. 然后选择你的 iPhone , run

    podfile:

    source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' use_frameworks! pod 'AFNetworking', '~> 1.3.4' pod 'YTKKeyValueStore' pod 'JGProgressHUD' pod 'ODRefreshControl' pod 'WCAlertView' pod 'Reachability' pod 'InfinitePagingView' pod 'NJKWebViewProgress' pod 'M13BadgeView' pod 'Masonry' pod 'MJRefresh' , '~> 2.4.7' pod 'Colours' , '~> 5.6.2' pod 'ViewUtils' pod "SDVersion" pod 'NSDate+TimeAgo' pod 'TPKeyboardAvoiding' pod 'AutoSlideScrollView' pod 'ZipArchive' pod 'imglyKit' , '~> 2.4' 

    你会发现,启动时间超过了十秒才进去,如果开启 iOS9 的省电模式,会超过 20 秒,我试过将 podfile 删掉一些,虽然启动时间有变短一点点,但还是要非常久。
    当 app 在你手机上了,你尝试将他完全退出,双击 home ,关掉,然后运行一些其他 app ,再回到手机开启 app ,时间跟开始一样。

    stackoverflow 那位题主有份代码可直接供你测试, https://github.com/hlung/TrySlowAppSwift ,一定要在真机,模拟器没有问题。

    脱水:

    相关问题: http://stackoverflow.com/questions/31080284/
    相关代码: https://github.com/hlung/TrySlowAppSwift
    错误 log :SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName]
    关键字: cocoapods, use_frameworks!, swift, launch, SecTrustEvaluate

    8 条回复    2015-09-24 16:23:53 +08:00
    gulullu
        1
    gulullu  
       2015 年 9 月 23 日
    为毛的我模拟器也是这样,卡在启动页面好久,还以为是启动图太大呢,结果缩小后还是那样, oc 代码,用了 Cocoapods
    yellowV2ex
        2
    yellowV2ex  
    OP
       2015 年 9 月 23 日
    @gulullu 是,我得模拟器还好,但真机真是慢的离谱,我以为 Cocoapods 的 pre-release 版本问题,用 38.2 也不行 39 beta4 还是一样,我有点怀疑是 xocde7 和 cocoapods 不兼容的之类的问题,我打算一会儿用 xcode6 试试
    xjbeta
        3
    xjbeta  
       2015 年 9 月 23 日
    前两天无故报错 新建项目同样错误 cleanmymac 清理了下就好。。。
    gulullu
        4
    gulullu  
       2015 年 9 月 23 日
    @yellowV2eXcode 6 是正常的貌似
    onevcat
        5
    onevcat  
       2015 年 9 月 23 日   1
    1. 这里的 images 指的应该是 dynamic framework 本身,而不是图片。比如加载动态库时找不到的时候报错是这样的:
    dyld: Library not loaded: XXXX.framework
    Reason: image not found

    问题在于加载库的速度慢。

    2. 实测了一下,似乎第一次有点慢,后来的几次启动看起来没什么问题 https://infinit.io/_/Aen5R2b

    3. 不过有个例外,就是如果刚连上 lighting cable 的时候, iTunes 和 Photo 会打开读取 iPhone 内容,这个时候打开 app 的话会比较慢。但是因同时有不少 I/O 在做,也可以理解。在等待 iTunes 和 Photo 完成工作后,启动速度和上面的视频一样。
    yellowV2ex
        6
    yellowV2ex  
    OP
       2015 年 9 月 23 日
    @onevcat 非常感谢,但我文章里那几个 pod ,本来第一次 load 久一点也没有关系,但 iOS9 出来之后,他会自动闪退,因为时间超过了 20 秒, Crash log 会有这一条:



    Exception Type: 00000020
    Exception Codes: 0x000000008badf00d
    Exception Note: SIMULATED (this is NOT a crash)
    Highlighted by Thread: 0

    Application Specific Information:
    com.eye4gift.Eye4giftCard failed to launch after 20.00s (launchIntent: foreground-interactive)

    Elapsed total CPU time (seconds): 25.070 (user 25.070, system 0.000), 63% CPU
    Elapsed application CPU time (seconds): 0.000, 0% CPU

    Filtered syslog:
    None found



    看上去好像是 iOS 9 设定了应用启动时间不可以超过 20 秒。

    我试过双击 home 退出之后再打开确实是快了,但我后来发现其实是没有真正的清除掉,当我删掉再重新下载安装后(企业证书),第一次打开,他还是会退,我的 iphone6 和 5C 都有这个问题,当他闪退再打开,他会正常进去了。

    确实是 framework 的载入花了时间,看来如果要 oc 和 swift 混合的项目,只能尽量减少在 podfile 里的项目数了。


    如果各位有空的话,麻烦帮忙测试一下这个 app : http://fir.im/i4g ,非常感谢。
    我的 iPhone6 实测,第一次打开会 20 秒闪退,第二次再打开才可以。
    yellowV2ex
        7
    yellowV2ex  
    OP
       2015 年 9 月 23 日
    上面说的这个 app http://fir.im/i4g ,按照 @onevcat 的操作方式,看上去也没有什么问题,但就是第一次打开的时间非常非常久,难道 iOS 会把一些 framework 缓存起来?
    上周还是 iOS8 的时候,并没有发现这个问题。
    yellowV2ex
        8
    yellowV2ex  
    OP
       2015 年 9 月 24 日
    大概原因找到了,我的是 objc 项目,用了一个 swift 的库,混编出来之后,在 app 的 frameworks 目录里,有一堆 swift 相关的 dylib ,而载入时间就花在了这些东西上。
    暂时无法解决,我只能换掉一个 swfit 写的库,现在是纯 objc 项目
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5639 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 06:53 PVG 14:53 LAX 23:53 JFK 02:53
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86