2017-06-05 43 views
0

我在Swift中有一个ios应用程序。该应用运行良好,并且在从xcode本地上传时不会崩溃。但是从testflight上传的应用程序崩溃。 我发现代码没有错。 我已经在我的应用中实现了Crashlytics,它给出了以下报告。iOS应用程序仅在TestFlight内部崩溃

Crashed: com.apple.main-thread 
EXC_BREAKPOINT 0x0000000100160fe4 

Crashed: com.apple.main-thread 
0 App      0x100160fe4 HomeViewController.viewDidLoad() ->() (HomeViewController.swift:57) 

1 App      0x100161014 @objc HomeViewController.viewDidLoad() ->() (HomeViewController.swift) 

2 UIKit       0x18c373ec0 -[UIViewController loadViewIfRequired] + 1036 

3 UIKit       0x18c38b94c -[UIViewController __viewWillAppear:] + 132 

4 UIKit       0x18c5101d4 -[UINavigationController _startCustomTransition:] + 1144 

5 UIKit       0x18c42ab78 -[UINavigationController _startDeferredTransitionIfNeeded:] + 676 

6 UIKit       0x18c42a7e0 -[UINavigationController __viewWillLayoutSubviews] + 64 

7 UIKit       0x18c42a744 -[UILayoutContainerView layoutSubviews] + 188 

8 UIKit       0x18c37107c -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1200 

9 QuartzCore      0x189561274 -[CALayer layoutSublayers] + 148 

10 QuartzCore      0x189555de8 CA::Layer::layout_if_needed(CA::Transaction*) + 292 

11 QuartzCore      0x189555ca8 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 32 

12 QuartzCore      0x1894d134c CA::Context::commit_transaction(CA::Transaction*) + 252 

13 QuartzCore      0x1894f83ac CA::Transaction::commit() + 504 
14 QuartzCore      0x1894f8e78 CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 120 

15 CoreFoundation     0x1861f09a8 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32 

16 CoreFoundation     0x1861ee630 __CFRunLoopDoObservers + 372 

17 CoreFoundation     0x1861eea7c __CFRunLoopRun + 956 

18 CoreFoundation     0x18611eda4 CFRunLoopRunSpecific + 424 

19 GraphicsServices    0x187b88074 GSEventRunModal + 100 

20 UIKit       0x18c3d9058 UIApplicationMain + 208 

21 App      0x1000d8688 main (NewProductData.swift:18) 

22 libdyld.dylib     0x18512d59c start + 4 

我不理解这个报告的任何内容,请帮助我,如果有人知道。

这里是viewDidLoad中

override func viewDidLoad() { 
    super.viewDidLoad() 
    Giving instance of HomeViewController to AppDelegate 
     let appDele = UIApplication.shared.delegate as! AppDelegate 
     appDele.homeVC = self 
    token = FIRInstanceID.instanceID().token()! 
//Method to handle Firebase token 
    UserDefaults.standard.set(token, forKey: "Notificationtoken") 
    print("@@@@@@@@@@@@@@@@@@@@@@@ token provided is \(String(describing: token))") 
    let tokenstr = UserDefaults.standard.value(forKey: "Notificationtoken") as! String 
    if(token == tokenstr){ 
     handleFCMToken(token: tokenstr) 
    } 
    else{ 
     handleFCMToken(token: token!) 

    } 

    setUpNavBar() 
    setPopUpImage() 
    setUpcarousel() 
    setUpDelegates() 
    let help = Helper() 

    help.setUpGoogleAnalytics(screenName: "Home") 

    self.presenter = HomeViewPresenter(homeView: self) 
    presenter.getCarousel() 
    if(showProfile){ 
     ProfileClicked() 
    } 
    // Do any additional setup after loading the view. 
} 

这里是viewWillAppear中

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 
    setUpUI() 


} 

和setupUI的方法

func setUpUI(){ 
    let wholesaler:Wholesaler = Helper.getWsProfile() 

    DispatchQueue.main.async { 
     self.wholesalerName.text = "Hello, \(wholesaler.wholesaler_name)" 
     self.pdsPoints.text = "\(wholesaler.pdsPoints!)" 
     self.visibilityPoints.text = "\(wholesaler.visibilityPoins!)" 
    } 
    iconNameString = ["SMS","Customer\n Groups","Visibility\n Contest","My\n Earnings","\(wholesaler.lastSchemeMonth!)\n Schemes","App\n News", "", "Contact\n Us"] 

} 
+0

你似乎对HomeViewController'的'了'viewDidLoad中()'的问题。你在'viewDidLoad()'中做什么? – Larme

+0

请寄出'HomeViewController.swift'文件的第57行。 –

+0

这可能意味着**更新**应用程序时出现错误。它是否会在之前从未安装过的设备上崩溃?我们之前对于我们的应用的sqlite有类似的问题。解决办法是告诉我们的测试人员删除应用程序。然后安装它新鲜。 Idk如果你的情况是相似的,但它可能是 – Honey

回答

0

我想查看您的HomeViewController会给我们更多的有识之士的一些代码。

但这里的一些意见:

  • 不知道的完整的堆栈,但它似乎不可思议的是viewWillAppearviewDidLoad由于某种原因之前调用。您是否在这些相应的方法上正确呼叫super
  • 你有没有尝试在释放模式vs调试模式下使用仪器来分析应用程序?您可以在架构设置上进行管理。
  • 另一个提示,但我认为它是一种先进的为您的情况,是优化水平。转到您的目标设置并搜索Optimization Level,您会注意到它对于调试和发布有所不同。有时,具有多个块和/或线程的复杂算法可能受此影响。

首页它可以帮助

+0

'viewdidLoad'上的哪一行是57?看看代码,它可能与一些展开场景有关:你确定'... token()!'总是返回一个值吗?检查此https://stackoverflow.com/a/40014002/219777 – Omer

+0

'令牌= FIRInstanceID.instanceID()。令牌()! '这一行在57上,它在Xcode本地运行时总是返回值。但对于testflight我不确定,Crashlytics报告显示它正在崩溃57 – Prathamesh

+0

正确! ...所以必须以某种方式设置Firebase设置。对不起,但我没有太多的经验提供建议的框架,但我认为它是一个很好的起点!干杯! – Omer

相关问题