【问题标题】:iOS app is only crashing on TestFlight buildiOS 应用程序仅在 TestFlight 构建时崩溃
【发布时间】:2017-11-06 06:37:05
【问题描述】:

我在 Swift 中有一个 ios 应用程序。该应用程序运行良好,从 xcode 本地上传时不会崩溃。但是从 testflight 上传时,该应用程序崩溃了。 我发现代码没有任何问题。 我在我的应用中实现了 Crashlytics,它给出了以下报告。

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"]

}

【问题讨论】:

  • 您在HomeViewControllerviewDidLoad() 上似乎有问题。你在viewDidLoad()做什么?
  • 请张贴HomeViewController.swift 文件的第 57 行。
  • 这可能意味着您的应用更新有问题。它是否也会在以前从未安装过的设备上崩溃?我们之前的应用程序的 sqlite 也有类似的问题。解决方案是告诉我们的测试人员删除该应用程序。然后重新安装。如果您的情况相似,但可能是
  • @Larme,@Max Pevsner 我正在调用通知令牌令牌 = FIRInstanceID.instanceID().token()! ,此代码在 li8ne 57
  • @Honey 不仅 testflight 构建在每台设备上都会崩溃,而且如果通过 Xcode 在本地安装它也不会崩溃

标签: ios iphone swift xcode swift3


【解决方案1】:

我认为查看您的HomeViewController 的一些代码会让我们更深入地了解。

但是这里有一些cmets:

  • 不确定整个堆栈,但由于某种原因,viewWillAppearviewDidLoad 之前被调用似乎很奇怪。你在那些对应的方法上正确地调用了super吗?
  • 您是否尝试过在发布模式和调试模式下使用工具分析应用程序?您可以在架构设置中进行管理。
  • 另一个提示,但我认为它对您的场景来说有点先进,是优化级别。转到您的目标设置并搜索Optimization Level,您会发现调试和发布是不同的。有时,具有多个块和/或线程的复杂算法可能会受到此影响。

回家有帮助

【讨论】:

  • viewdidLoad 的哪一行是 57?查看代码,可能与一些解包场景有关:您确定...token()! 总是返回一个值吗?看看这个stackoverflow.com/a/40014002/219777
  • ' 令牌 = FIRInstanceID.instanceID().token()! ' 这行在 57 上,在 Xcode 上本地运行时它总是返回值。但对于 testflight 我不确定,Crashlytics 报告显示它在第 57 行崩溃
  • 正确! ...所以firebase设置一定有问题。抱歉,我对提供建议的框架没有太多经验,但我认为这是一个很好的起点!干杯!
  • 是的,那行有问题,它返回 nil,我在应用程序委托中编写了该代码并处理了该 nil 错误,现在它工作正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 1970-01-01
  • 2021-01-10
相关资源
最近更新 更多